# Docs — the Peptidal door (version 1.8.8)

## Connect

- Endpoint: https://mcp.peptidal.ai/mcp
- Transport: streamable-http, protocol 2025-06-18
- Accept: application/json, text/event-stream
- Reads: no authentication
- Transacting tools: a client-credentials Bearer from https://peptides-registry.ai/oauth/register

Ontology: substance × presentation × jurisdiction × pathway × actor. Jurisdictions: US · CA · MX · EU (member as parameter) · UK · KR · JP · SG · CH. Gate order: resolve_jurisdiction → resolve_actor → gate_transaction. Read live: 177 substances · 5,301 presentations · 24,694 providers · 9 rule sets in force.

## Gate

### resolve_jurisdiction — reads only
Resolve a ship-to (e.g. 'US-CA', 'CA-ON', 'MX', 'EU-DE', 'UK', 'KR', 'JP', 'SG', 'CH') to the gate's jurisdiction (US · CA · MX · EU · UK · KR · JP · SG · CH; UK is the jurisdiction name; the ISO 3166-1 code is accepted as input, machine fields carry the ISO code and jurisdiction_label carries UK), the EU member and any state, provincial or cantonal overlay.

Inputs: ship_to (string)
Example input: {"ship_to": "US-FL"}
Example output: {  "jurisdiction": "US",  "member": null,  "overlay": "FL",  "jurisdiction_label": "US",  "rule_set_version": "v1.2-2026-09-17",  "notice": {   "text": "This answer reflects US rules (rule set v1.2-2026-09-17). Rules differ by jurisdiction — refer to the regulator in your jurisdiction.",   "disclaimer": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.",   "jurisdiction": "US",   "jurisdiction_label": "US",   "rule_set_version": "v1.2-2026-09-17",   "regulator": "https://www.fda.gov/"  } }

### resolve_actor — reads only
Resolve the actor class and channel. Classes: authorized_trading_partner and its members (manufacturer · repackager · wholesale_distributor · dispenser · third_party_logistics_provider; cosmetic_responsible_person · nhp_licence_holder on the non-drug pathways), prescriber, the referral classes patient and public, and agent (inherits the class of the credential it presents; none returns DENY_UNLICENSED_AGENT). Returns communication_class: trade_information or public.

Inputs: actor_class (string), credential (any)
Example input: {"actor_class": "dispenser"}
Example output: {  "actor_class": "dispenser",  "parent_class": "authorized_trading_partner",  "channel": "B2B",  "communication_class": "trade_information",  "credential_presented": true,  "bearer": {   "client_id": "a2ap_b956da16ad3d1af678bde4a6",   "client_name": "Claude directory reviewer (standing test client)",   "scope": "peptides.read peptides.transact",   "iss": "https://peptides-registry.ai"  },  "notice": {   "text": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.",   "disclaimer": "Artificial intelligence makes mistakes. A2A Pep … (trimmed)

### gate_transaction — reads only
The gate: allow, deny or require_rx for a substance (name, INN or unii:), a pathway (licensed_medicine · lawful_compounding · cosmetic · food_or_supplement · ruo_not_cleared), an actor class, a channel and a ship-to. Returns a frozen reason code, the rule-set version, the source page and a decision_id for the downstream tools.

Inputs: substance (string), pathway (string), actor_class (string), ship_to (string), channel (any), credential (any)
Example input: {"substance": "tirzepatide", "pathway": "licensed_medicine", "actor_class": "dispenser", "ship_to": "US-FL"}
Example output: {  "substance": "tirzepatide",  "pathway": "licensed_medicine",  "actor_class": "dispenser",  "channel": "B2B",  "ship_to": "US-FL",  "jurisdiction": "US",  "member": null,  "overlay": "FL",  "rule_set_version": "v1.2-2026-09-17",  "decided_at": "2026-09-18T21:36:44.856609+00:00",  "substance_unii": "OYN3CCI6QE",  "substance_name": "Tirzepatide",  "status": "approved_drug",  "source_url": "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=215866",  "communication_class": "trade_information",  "parent_class": "authorized_trading_partner",  "actor_class_equivalent": "DSCSA authorized trading partner (licence or registration held)",  "result": "allow",  "re … (trimmed)

## Regulatory truth

### get_substance_record — reads only
One molecule: identifiers (INN, UNII, CAS, sequence hash), sourced aliases, class, one pathway row per jurisdiction × pathway, enforcement events, safety references. Every field carries its source page.

Inputs: substance (string)
Example input: {"substance": "semaglutide"}
Example output: {  "ids": {   "unii": {    "value": "53AXN4NNHX",    "source_url": "https://gsrs.ncats.nih.gov/ginas/app/beta/substances/6008afca-8b87-4b98-9c27-3a6878147556",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T01:52:50+00:00",    "state": "current",    "extra_source": "https://gsrs.ncats.nih.gov/api/v1/substances/search?q=root_names_name:%22SEMAGLUTIDE%22&top=5"   },   "inn": {    "value": null,    "source_url": "https://gsrs.ncats.nih.gov/ginas/app/beta/substances/6008afca-8b87-4b98-9c27-3a6878147556",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T01:52:50+00:00",    "state": "current"   },   "cas": {    "value": "910463-68-2",    "source_url": "https://gsrs.ncat … (trimmed)

### get_pathway_status — reads only
The status of a substance on one pathway in one jurisdiction (frozen vocabulary), with effective date, rule-set version and source page.

Inputs: substance (string), jurisdiction (string), pathway (string)
Example input: {"substance": "semaglutide", "jurisdiction": "CA", "pathway": "licensed_medicine"}
Example output: {  "jurisdiction": "CA",  "pathway": "licensed_medicine",  "status": {   "value": "approved_drug",   "source_url": "https://health-products.canada.ca/dpd-bdpp/info?lang=eng&code=101776",   "read_by": "cc-register-reader",   "read_at": "2026-09-18T01:59:08+00:00",   "state": "current"  },  "rule_set_version": "v1.2-2026-09-17",  "effective_date": {   "value": null,   "source_url": "https://health-products.canada.ca/dpd-bdpp/info?lang=eng&code=101776",   "read_by": "cc-register-reader",   "read_at": "2026-09-18T01:59:08+00:00",   "state": "current"  },  "state": "current",  "dins": [   "02471469",   "02497581",   "02497603",   "02497611",   "02528509",   "02528517",   "02528525",   "02528533", … (trimmed)

### get_compounding_eligibility — reads only
Whether a substance may be lawfully compounded in a jurisdiction and under which list or standard (503A/503B, provincial, magistral, Specials), from the register.

Inputs: substance (string), jurisdiction (string)
Example input: {"substance": "BPC-157", "jurisdiction": "US"}
Example output: {  "substance": "8ED8NXK95P",  "jurisdiction": "US",  "row": null,  "rules_of_record": [   {    "substance_or_class": "BPC-157|KPV|TB-500|MOTS-c|epitalon|semax",    "pathway": "lawful_compounding",    "actor_class": "*",    "channel": "*",    "ship_to": "US",    "result": "deny",    "reason_code": "DENY_PATHWAY_NOT_CLEARED",    "communication_class": "public",    "source_url": "https://www.fda.gov/media/94155/download?attachment",    "effective_date": "2026-09-17",    "note": "PCAC recommended, rulemaking pending → 503A_recommended_pending, NOT listed"   },   {    "substance_or_class": "*",    "pathway": "*",    "actor_class": "*",    "channel": "*",    "ship_to": "US",    "result": "deny",  … (trimmed)

### get_label_and_indication — reads only
Label and indication pointers for a licensed presentation only (US package NDC, CA DIN, EU EMA number).

Inputs: presentation_id (string)
Example input: {"presentation_id": "DIN02540258"}
Example output: {  "presentation": {   "din": {    "value": "02540258",    "source_url": "https://health-products.canada.ca/dpd-bdpp/info?lang=eng&code=102895",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T01:59:08+00:00",    "state": "current",    "extra_source": "https://health-products.canada.ca/api/drug/drugproduct/?lang=en&id=102895"   },   "drug_code": {    "value": 102895,    "source_url": "https://health-products.canada.ca/dpd-bdpp/info?lang=eng&code=102895",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T01:59:08+00:00",    "state": "current"   }  },  "jurisdiction": "CA",  "bsfrdp_d": {   "brand": "OZEMPIC",   "strength": "0.68 MG",   "form": "Solution",   "route":  … (trimmed)

### get_enforcement_watch — reads only
Dated, URL'd enforcement events for a substance or jurisdiction: warning letters, import alerts, shortage-list changes, committee votes, proposed and final rules, seizures, state notices.

Inputs: substance (any), jurisdiction (any), since (any)
Example input: {"substance": "semaglutide", "jurisdiction": "US", "since": "2026-01-01"}
Example output: {  "count": 0,  "events": [],  "notice": {   "text": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.",   "disclaimer": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.",   "jurisdiction": null,   "rule_set_version": null,   "regulator": null  } }

## Cleared catalogue

### search_cleared_items — reads only
Presentations that passed the gate for a jurisdiction, pathway and actor class (a query by substance, brand or holder; optional banner filter on the shelf of record). Only cleared statuses are returned; every item carries its availability block (banners, pos_count, product_urls).

Inputs: query (string), jurisdiction (string), pathway (string), actor_class (string), limit (integer), decision_id (any), banner (any)
Example input: {"query": "ozempic", "jurisdiction": "CA", "pathway": "licensed_medicine", "limit": 3, "decision_id": "gate_96e32e675fbd11d26679"}
Example output: {  "count": 2,  "jurisdiction": "CA",  "jurisdiction_label": "CA",  "banner": null,  "rule_set_version": "v1.2-2026-09-17",  "communication_class": "trade_information",  "items": [   {    "id": "CA:DIN02540258",    "jurisdiction": "CA",    "jurisdiction_label": "CA",    "pathway": "licensed_medicine",    "ids": {     "din": {      "value": "02540258",      "source_url": "https://health-products.canada.ca/dpd-bdpp/info?lang=eng&code=102895",      "read_by": "cc-register-reader",      "read_at": "2026-09-18T01:59:08+00:00",      "state": "current",      "extra_source": "https://health-products.canada.ca/api/drug/drugproduct/?lang=en&id=102895"     },     "drug_code": {      "value": 102895,    … (trimmed)

### get_item — reads only
One authorised presentation by id (US package NDC, CA DIN, EU EMA number, KR MFDS item seq, CH Swissmedic authorisation/pack code, JP approved-list entry, or the catalogue id): brand, strength, form, route, device, pack, holder, status, offers (tenant is a parameter).

Inputs: presentation_id (string), tenant (any), decision_id (any)
Example input: {"presentation_id": "76177-501-10", "decision_id": "gate_96e32e675fbd11d26679"}
Example output: {  "id": "US:76177-501-10",  "jurisdiction": "US",  "jurisdiction_label": "US",  "pathway": "licensed_medicine",  "ids": {   "ndc_package": {    "value": "76177-501-10",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current"   },   "ndc_product": {    "value": "76177-501",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current",    "extra_source": "https://api.fda.gov/drug/ndc.json?search=generic_name:%22Tirzepatide%22&limit=100"   },  … (trimmed)

### compare_presentations — reads only
Compare two or more authorised presentations side by side (ids as for get_item).

Inputs: presentation_ids (array), decision_id (any)
Example input: {"presentation_ids": ["76177-501-10", "DIN02540258"], "decision_id": "gate_96e32e675fbd11d26679"}
Example output: {  "items": [   {    "id": "US:76177-501-10",    "jurisdiction": "US",    "jurisdiction_label": "US",    "pathway": "licensed_medicine",    "ids": {     "ndc_package": {      "value": "76177-501-10",      "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",      "read_by": "cc-register-reader",      "read_at": "2026-09-18T02:09:38+00:00",      "state": "current"     },     "ndc_product": {      "value": "76177-501",      "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",      "read_by": "cc-register-reader",      "read_at": "2026-09-18T02:09:38+00:00",      "state": "current",      "extra_source": "https://api.fda.gov/drug/ndc.json? … (trimmed)

## Licensed supply

### find_licensed_supplier — reads only
Licensed parties for a presentation in a jurisdiction (tenant as a parameter). Takes the decision_id of an allow or require_rx decision from gate_transaction.

Inputs: presentation_id (string), jurisdiction (string), decision_id (string), tenant (any)
Example input: {"presentation_id": "76177-501-10", "jurisdiction": "US", "decision_id": "gate_96e32e675fbd11d26679"}
Example output: {  "presentation": {   "ndc_package": {    "value": "76177-501-10",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current"   },   "ndc_product": {    "value": "76177-501",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current",    "extra_source": "https://api.fda.gov/drug/ndc.json?search=generic_name:%22Tirzepatide%22&limit=100"   },   "application_number": {    "value": null,    "source_url": "https://dailymed.nlm.nih.gov/dailymed/se … (trimmed)

### get_availability — reads only
Availability of a presentation once gate_transaction has answered allow or require_rx (decision_id): the availability block — banners[] on the shelf of record with licence footnote, pos_count (chain points of sale from the CPG Knowledge Graph retailer registry, or licensed dispensers on the provider directory for medicines), product_urls[] (retailer product page, register page, holder page) — plus tenant offers.

Inputs: presentation_id (string), decision_id (string), tenant (any)
Example input: {"presentation_id": "76177-501-10", "decision_id": "gate_96e32e675fbd11d26679"}
Example output: {  "presentation": {   "ndc_package": {    "value": "76177-501-10",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current"   },   "ndc_product": {    "value": "76177-501",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current",    "extra_source": "https://api.fda.gov/drug/ndc.json?search=generic_name:%22Tirzepatide%22&limit=100"   },   "application_number": {    "value": null,    "source_url": "https://dailymed.nlm.nih.gov/dailymed/se … (trimmed)

### get_price — reads only
Price basis (list · contract · reimbursement) from a licensed party, once gate_transaction has answered allow or require_rx (decision_id).

Inputs: presentation_id (string), decision_id (string), tenant (any)
Example input: {"presentation_id": "76177-501-10", "decision_id": "gate_96e32e675fbd11d26679"}
Example output: {  "presentation": {   "ndc_package": {    "value": "76177-501-10",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current"   },   "ndc_product": {    "value": "76177-501",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current",    "extra_source": "https://api.fda.gov/drug/ndc.json?search=generic_name:%22Tirzepatide%22&limit=100"   },   "application_number": {    "value": null,    "source_url": "https://dailymed.nlm.nih.gov/dailymed/se … (trimmed)

## Quality

### get_lot_coa — reads only
Certificate of analysis for a lawful lot of a presentation, where the pathway permits (decision_id required).

Inputs: presentation_id (string), lot (string), decision_id (string)
Example input: {"presentation_id": "76177-501-10", "lot": "LOT-TEST-1", "decision_id": "gate_96e32e675fbd11d26679"}
Example output: {  "presentation": {   "ndc_package": {    "value": "76177-501-10",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current"   },   "ndc_product": {    "value": "76177-501",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current",    "extra_source": "https://api.fda.gov/drug/ndc.json?search=generic_name:%22Tirzepatide%22&limit=100"   },   "application_number": {    "value": null,    "source_url": "https://dailymed.nlm.nih.gov/dailymed/se … (trimmed)

### verify_serialization — reads only
Verify a serialised pack (GTIN + serial + lot + expiry) against the serialisation regime of the jurisdiction (DSCSA · FMD · UK · KR; none-national elsewhere).

Inputs: jurisdiction (string), gtin (string), serial (string), lot (any), expiry (any)
Example input: {"jurisdiction": "US", "gtin": "00301694130133", "serial": "S1", "lot": "L1", "expiry": "2027-01-01"}
Example output: {  "jurisdiction": "US",  "regime": "DSCSA",  "gtin_checksum": false,  "verified": false,  "reason_code": "DENY_NO_SERIALIZATION",  "detail": "gtin must be a 14-digit GTIN with a valid check digit (pad a 12- or 13-digit code with leading zeros)",  "notice": {   "text": "This answer reflects US rules (rule set v1.2-2026-09-17). Rules differ by jurisdiction — refer to the regulator in your jurisdiction.",   "disclaimer": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.",   "jurisdiction": "US",   "jurisdiction_label": "US",   " … (trimmed)

## Commerce

### create_order_intent — writes a record
Create an order intent for a cleared item after the gate; the intent carries reason_code + rule_set_version and settles by x402 on peptides-x402.ai.

Inputs: presentation_id (string), quantity (integer), decision_id (string), tenant (any), ship_to (any)
Example input: {"presentation_id": "76177-501-10", "quantity": 1, "decision_id": "gate_96e32e675fbd11d26679", "ship_to": "US-FL"}
Example output: {  "intent_id": "oi_7c6c56206b41ccd4",  "presentation": {   "ndc_package": {    "value": "76177-501-10",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current"   },   "ndc_product": {    "value": "76177-501",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current",    "extra_source": "https://api.fda.gov/drug/ndc.json?search=generic_name:%22Tirzepatide%22&limit=100"   },   "application_number": {    "value": null,    "source_url": "htt … (trimmed)

### a2a_handoff — writes a record
Hand off over Agent-to-Agent (A2A). With an allow/require_rx decision: the order intent goes to the licensed counterparty's agent (envelope + card URL). With a deny for a patient, the public or an unauthorized actor: returns real licensed destinations from the provider directory (dispensers, prescribers) filtered by the decision's jurisdiction, state/province and practice scope — a referral, never a vial.

Inputs: intent_id (any), decision_id (any), counterparty_card_url (any), practice_scope (any), limit (integer)
Example input: {"intent_id": "oi_7c6c56206b41ccd4", "decision_id": "gate_96e32e675fbd11d26679", "counterparty_card_url": "https://a2a-pharma.ai/.well-known/agent-card.json"}
Example output: {  "intent_id": "oi_7c6c56206b41ccd4",  "counterparty_card_url": "https://a2a-pharma.ai/.well-known/agent-card.json",  "envelope": {   "from": "https://peptidal.ai/.well-known/agent-card.json",   "kid": "a2ap-2026-09",   "reason_code": "ALLOW",   "rule_set_version": "v1.2-2026-09-17",   "decision_id": "gate_96e32e675fbd11d26679"  },  "status": "handoff_prepared",  "notice": {   "text": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.",   "disclaimer": "Artificial intelligence makes mistakes. A2A Peptides is an information … (trimmed)

## Ops

### get_safety_label — reads only
Safety label pointers for licensed products (label page and the pharmacovigilance scheme of the jurisdiction).

Inputs: substance (string), jurisdiction (string)
Example input: {"substance": "semaglutide", "jurisdiction": "UK"}
Example output: {  "substance": "53AXN4NNHX",  "jurisdiction": "GB",  "safety_refs": [],  "pharmacovigilance_scheme": "https://yellowcard.mhra.gov.uk/",  "presentations": [],  "notice": {   "text": "This answer reflects UK rules (rule set v1.2-2026-09-17). Rules differ by jurisdiction — refer to the regulator in your jurisdiction.",   "disclaimer": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.",   "jurisdiction": "GB",   "jurisdiction_label": "UK",   "rule_set_version": "v1.2-2026-09-17",   "regulator": "https://www.gov.uk/government/orga … (trimmed)

### log_audit — writes a record
Write the audit line for a gate decision or an order intent (returns the line id).

Inputs: kind (string), reference_id (string), note (any)
Example input: {"kind": "gate", "reference_id": "gate_96e32e675fbd11d26679", "note": "A2AP-15 functional bar"}
Example output: {  "audit_id": "aud_6503bac9b9b6691e",  "at": "2026-09-18T21:36:55.321886+00:00",  "notice": {   "text": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.",   "disclaimer": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.",   "jurisdiction": null,   "rule_set_version": null,   "regulator": null  } }

## Settlement

x402 v2, USDC and Open USD on Base, after the gate. On an order intent the gate runs before settlement: a deny answers HTTP 403 with reason_code and rule_set_version and nothing is charged. Receipts: order-intent receipts carry decision_id and reason_code; every receipt carries the notice; resolve receipts carry jurisdiction and rule_set_version when the tool takes a jurisdiction. Register: /x402/settled.json per zone with family_settled beside it.

## Troubleshooting

- BAD_INPUT: an argument is missing or malformed — the detail says which and what to send
- NOT_ON_GRAPH: no record on the graph for that identifier — check the spelling, use an INN or unii:<UNII>, or search_cleared_items to find the id; nothing is answered from memory
- DENY_JURISDICTION: the jurisdiction is not one of the nine — use US, US-<state>, CA, CA-<province>, MX, EU, EU-<member>, UK, KR, JP, SG or CH
- DENY_ACTOR_CLASS: the actor class is not one of the classes of record — the detail lists them
- GATE_REQUIRED: the tool needs the decision_id of an allow or require_rx decision — call resolve_jurisdiction, resolve_actor and gate_transaction first
- DENY_PATHWAY_NOT_CLEARED: the substance has no cleared row on that pathway in that jurisdiction — the source page on the answer says what the register holds
- DENY_UNLICENSED_AGENT: an agent presented no bearer from the issuer — register at peptides-registry.ai/oauth/register and present the token
- DENY_RUO: research-use stock: not listed and not sold
- DENY_CONTROLLED: a controlled substance in the jurisdiction
- DENY_STATE_OVERLAY: a state or provincial overlay tightens the federal pass
- DENY_NO_SERIALIZATION: the GTIN failed its check digit or the pack could not be verified
- DENY_CROSS_BORDER: the ship-to is outside the licensed party's jurisdiction
- REQUIRE_RX: allowed with a prescription accompanying the order intent
- Cannot connect: POST https://mcp.peptidal.ai/mcp with Accept: application/json, text/event-stream; check /health.json
- A 402 on /api is the x402 offer, not an error
- Wrong record: send tool, arguments, field and the contradicting register page to mcp@a2a-peptides.ai

## Worked examples

### Is semaglutide cleared as a licensed medicine in Canada, and what is it indicated for?
Chain: get_substance_record → get_pathway_status → get_label_and_indication
- get_substance_record {"substance": "semaglutide"} → {  "ids": {   "unii": {    "value": "53AXN4NNHX",    "source_url": "https://gsrs.ncats.nih.gov/ginas/app/beta/substances/6008afca-8b87-4b98-9c27-3a6878147556",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T01:52:50+00:00",    "state": "current",    "extra_source": "https://gsrs.ncats.nih.gov/api/v1/substances/search?q=root_names_name:%22SEMAGLUTIDE%22&top=5"   },   "inn": {    "value": null,    "source_url": "https://gsrs.ncats.nih.gov/ginas/app/beta/substances/6008afca-8b87-4b98 … (trimmed)
- get_pathway_status {"substance": "semaglutide", "jurisdiction": "CA", "pathway": "licensed_medicine"} → {  "jurisdiction": "CA",  "pathway": "licensed_medicine",  "status": {   "value": "approved_drug",   "source_url": "https://health-products.canada.ca/dpd-bdpp/info?lang=eng&code=101776",   "read_by": "cc-register-reader",   "read_at": "2026-09-18T01:59:08+00:00",   "state": "current"  },  "rule_set_version": "v1.2-2026-09-17",  "effective_date": {   "value": null,   "source_url": "https://health-products.canada.ca/dpd-bdpp/info?lang=eng&code=101776",   "read_by": "cc-register-reader",   "read_at … (trimmed)
- get_label_and_indication {"presentation_id": "DIN02540258"} → {  "presentation": {   "din": {    "value": "02540258",    "source_url": "https://health-products.canada.ca/dpd-bdpp/info?lang=eng&code=102895",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T01:59:08+00:00",    "state": "current",    "extra_source": "https://health-products.canada.ca/api/drug/drugproduct/?lang=en&id=102895"   },   "drug_code": {    "value": 102895,    "source_url": "https://health-products.canada.ca/dpd-bdpp/info?lang=eng&code=102895",    "read_by": "cc-register- … (trimmed)

### I am a licensed pharmacy in Florida. Can I buy tirzepatide, and who is licensed to supply it?
Chain: resolve_jurisdiction → resolve_actor → gate_transaction → find_licensed_supplier
- resolve_jurisdiction {"ship_to": "US-FL"} → {  "jurisdiction": "US",  "member": null,  "overlay": "FL",  "jurisdiction_label": "US",  "rule_set_version": "v1.2-2026-09-17",  "notice": {   "text": "This answer reflects US rules (rule set v1.2-2026-09-17). Rules differ by jurisdiction — refer to the regulator in your jurisdiction.",   "disclaimer": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the informatio … (trimmed)
- resolve_actor {"actor_class": "dispenser"} → {  "actor_class": "dispenser",  "parent_class": "authorized_trading_partner",  "channel": "B2B",  "communication_class": "trade_information",  "credential_presented": true,  "bearer": {   "client_id": "a2ap_b956da16ad3d1af678bde4a6",   "client_name": "Claude directory reviewer (standing test client)",   "scope": "peptides.read peptides.transact",   "iss": "https://peptides-registry.ai"  },  "notice": {   "text": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not  … (trimmed)
- gate_transaction {"substance": "tirzepatide", "pathway": "licensed_medicine", "actor_class": "dispenser", "ship_to": "US-FL"} → {  "substance": "tirzepatide",  "pathway": "licensed_medicine",  "actor_class": "dispenser",  "channel": "B2B",  "ship_to": "US-FL",  "jurisdiction": "US",  "member": null,  "overlay": "FL",  "rule_set_version": "v1.2-2026-09-17",  "decided_at": "2026-09-18T21:36:57.972320+00:00",  "substance_unii": "OYN3CCI6QE",  "substance_name": "Tirzepatide",  "status": "approved_drug",  "source_url": "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=215866",  "communic … (trimmed)
- find_licensed_supplier {"presentation_id": "76177-501-10", "jurisdiction": "US", "decision_id": "gate_96e32e675fbd11d26679"} → {  "presentation": {   "ndc_package": {    "value": "76177-501-10",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current"   },   "ndc_product": {    "value": "76177-501",    "source_url": "https://dailymed.nlm.nih.gov/dailymed/search.cfm?query=76177-501",    "read_by": "cc-register-reader",    "read_at": "2026-09-18T02:09:38+00:00",    "state": "current",    "extra_ … (trimmed)

### Compare the presentations of a copper peptide (GHK-Cu) serum available in the UK and in Korea.
Chain: search_cleared_items → compare_presentations
- search_cleared_items {"query": "copper", "jurisdiction": "UK", "pathway": "cosmetic", "limit": 2} → {  "count": 1,  "jurisdiction": "GB",  "jurisdiction_label": "UK",  "banner": null,  "rule_set_version": "v1.2-2026-09-17",  "communication_class": "public",  "items": [   {    "id": "GB:GB-00810120261478",    "jurisdiction": "GB",    "jurisdiction_label": "UK",    "pathway": "cosmetic",    "ids": {     "gtin": {      "value": "00810120261478",      "source_url": "https://naturium.com/products/multi-peptide-rich-cream",      "read_by": "cc-register-reader (attach ladder step 1, json-ld gtin)",   … (trimmed)
- search_cleared_items {"query": "copper", "jurisdiction": "KR", "pathway": "cosmetic", "limit": 2} → {  "count": 0,  "jurisdiction": "KR",  "jurisdiction_label": "KR",  "banner": null,  "rule_set_version": "v1.2-2026-09-17",  "communication_class": "public",  "items": [],  "note": "prices and availability answer only after gate_transaction",  "notice": {   "text": "This answer reflects KR rules (rule set v1.2-2026-09-17). Rules differ by jurisdiction — refer to the regulator in your jurisdiction.",   "disclaimer": "Artificial intelligence makes mistakes. A2A Peptides is an information source, n … (trimmed)
- compare_presentations {"presentation_ids": ["GB-00810120261478"]} → {  "error": "BAD_INPUT",  "detail": "two or more presentation ids are required",  "notice": {   "text": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.",   "disclaimer": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in y … (trimmed)

## Data handling

The door receives the tool name, its arguments and the bearer if one is presented; it stores audit lines (actor class, jurisdiction, decision, reason code, rule-set version), x402 receipts and agent registrations; console logs are kept 30 days. No personal health data is handled and no patient details are taken. Results rank from the record, never from payment or placement.
