Docs
The door at version 1.0: twenty tools in seven groups over one ontology, answering from records whose every field carries its source page. This page is the reference; the Agent Card is the discovery document; the setup page is the connection page.
Ontology
substance × presentation × jurisdiction × pathway × actor.
- Jurisdictions (5) — US · CA · MX · EU (member as parameter) · GB.
- Pathways — licensed medicine (a new drug or biologics application in the US, a drug identification number or notice of compliance in Canada, a sanitary registration in Mexico, a marketing authorisation in the EU or GB) · lawful compounding (503A and 503B, provincial, magistral, specials) · cosmetic (the US cosmetic regime, Canadian notification, the Mexican notice, the EU notification portal, GB) · food or supplement (the US supplement regime, natural health product licence, the Mexican official standard, novel food in the EU and GB) · ruo_not_cleared.
- Actors — patient · prescriber · pharmacy or 503B · wholesaler · cosmetic brand · retailer · agent (must present a credential).
- Size on cleared rails — hundreds of substance rows, low thousands of presentations. The status table grows; the tool list does not.
The twenty tools
- Gate — called first; returns allow, deny or require_rx with a reason code
resolve_jurisdiction— Resolve the ship-to and the actor's jurisdiction to one of US, CA, MX, EU (member as parameter) or GB.resolve_actor— Resolve the actor class: patient, prescriber, pharmacy or 503B, wholesaler, cosmetic brand, retailer, or agent (an agent must present a credential).gate_transaction— Return allow, deny or require_rx for a substance or presentation, actor class, channel and ship-to, with the reason code and the rule-set version.
- Regulatory truth — what the registers say, with the source page on every field
get_substance_record— One molecule: identifiers, sourced aliases, class, pathway rows per jurisdiction, enforcement events, safety references.get_pathway_status— The status of a substance on one pathway in one jurisdiction, with effective date, rule-set version and source page.get_compounding_eligibility— Whether a substance may be lawfully compounded in a jurisdiction, and under which list or standard.get_label_and_indication— Label and indication for a licensed presentation only.get_enforcement_watch— Dated enforcement events: warning letters, import alerts, shortage-list changes, committee votes, seizures, state notices.
- Cleared catalogue — only what passed the gate
search_cleared_items— Search presentations that passed the gate for a jurisdiction, pathway and actor class.get_item— One authorised presentation: brand, strength, form, route, device, pack, holder, status, offers.compare_presentations— Compare two or more authorised presentations side by side.
- Licensed supply — licensed parties only; tenant is a parameter, not a tool
find_licensed_supplier— Licensed parties for a presentation in a jurisdiction; tenant as a parameter.get_availability— Availability of a presentation from a licensed party, after the gate.get_price— Price basis (list, contract or reimbursement) from a licensed party, after the gate.
- Quality — lawful lots and serialisation
get_lot_coa— Certificate of analysis for a lawful lot where the pathway permits.verify_serialization— Verify a serialised pack against the serialisation regime of the jurisdiction.
- Commerce — an order intent after the gate; the handoff to the counterparty agent
create_order_intent— Create an order intent for a cleared item; the intent carries the reason code and the rule-set version, and settles by x402.a2a_handoff— Hand the order intent to the licensed counterparty's agent over Agent-to-Agent (A2A).
- Operations — safety label and the audit line
get_safety_label— Safety label pointers for licensed products.log_audit— Write the audit line for a gate decision or an order intent.
Version 1.1 is additive and capped at twenty-six: get_reimbursement, get_device_ifu, get_cold_chain, get_import_permit, get_advertising_claim_check, and record_adverse_event if pharmacovigilance intake lands. No shape change.
Gate order
resolve_jurisdiction → resolve_actor → gate_transaction. No price, availability, order or handoff tool answers before an ALLOW or REQUIRE_RX exists for the request. The reason code and the rule-set version are attached to every downstream receipt, including x402 settlement receipts.
- Reason codes (frozen) — ALLOW · REQUIRE_RX · DENY_UNLICENSED_AGENT · DENY_ACTOR_CLASS · DENY_PATHWAY_NOT_CLEARED · DENY_JURISDICTION · DENY_STATE_OVERLAY · DENY_RUO · DENY_CONTROLLED · DENY_NO_SERIALIZATION · DENY_EXPIRED_LICENCE · DENY_CROSS_BORDER.
- Rule form —
{substance_or_class, pathway, actor_class, channel (B2C|B2B|A2A), ship_to, result, reason_code, source_url, effective_date}. - Rule set —
{jurisdiction, version, effective_date, supersedes, rules[], source_urls[]}; a change on a register produces a new version with supersedes set; the old version stays readable. - Overlays — a federal pass is not a state or provincial pass; an overlay row can only tighten, never loosen.
Record primitive
Every field on every record is {value, source_url, read_by, state}; a value with no source page does not exist on this graph. Counts are produced from records at request time, never typed.
- Substance record — ids: inn · unii · cas · inci · sequence_hash; aliases[] sourced; class: peptide_drug · cosmetic_peptide · food_peptide · api_intermediate; pathway_rows[] one per (jurisdiction, pathway) with status, effective_date, rule_set_version, source_url, read_by, state; enforcement_events[]; safety_refs[] (licensed products only).
- Presentation record — ids: gtin · ndc · din · registro sanitario · ma_number · pack id; holder (a supplier record id); jurisdiction, pathway, status; label_and_indication (licensed only); serialization; lots[] (lawful lots only, coa_url where the pathway permits); offers[] per tenant.
- Supplier or tenant record — licences[] with number, issuer, expiry, source_url; jurisdictions_served[]; actor_class; agent_card_url; settlement pointer.
- Status vocabulary (frozen) — approved_drug · 503A_listed · 503A_recommended_pending · 503B_listed · shortage_copy_ok · compounding_provincial_ok · magistral_ok · specials_only · cosmetic_ok · novel_food_ok · nhp_licensed · supplement_ok · prohibited · ruo_not_cleared · controlled_substance.
- Reject class — ruo_not_cleared rows exist on the substance record so the gate can refuse with a reason code; no presentation, offer, lot or certificate of analysis is ever created for a reject-class item.
- Showcase records — carry tenant_class: showcase and are excluded from every public count.
On the wire
- Transport — streamable-HTTP, stateless; server name
a2a-peptides; endpointhttps://mcp.a2a-peptides.ai/mcp. - Schemas — open (no additionalProperties:false), no oneOf, so the stock clients of the three major clouds attach without an adapter.
- Headers — the GSC wire envelope on every response (x-gsc-node, x-gsc-card, x-gsc-trust-anchor, x-gsc-mcp, x-gsc-graph and the rest).
- Signing — the Agent Card and records are signed ES256 under kid
a2ap-2026-09; keyringhttps://a2a-peptides.ai/.well-known/jwks.json. - Metering and settlement — registry-truth tools metered by x402; create_order_intent settles by x402; receipts carry reason_code and rule_set_version.