Docs
The Model Context Protocol (MCP) door at version 1.8.3: 20 tools in seven groups over one ontology, answering from records whose every field carries its source page. Read live from the door: 177 substances · 5,301 presentations · 24,694 providers · 9 rule sets in force. This page is the reference; the Agent Card is the discovery document; the setup page is the connection page.
Connect
- Endpoint —
https://mcp.a2a-peptides.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 (9) — US · CA · MX · EU (member as parameter) · UK · KR · JP · SG · CH (UK is stored as the ISO code in machine fields and written UK everywhere a person reads).
- Pathways — licensed medicine · lawful compounding (503A and 503B, provincial, magistral, specials) · cosmetic · food or supplement · ruo_not_cleared (status only).
- Actors — 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 · patient · public · agent (a bearer from the issuer carries the class).
- Gate order — resolve_jurisdiction → resolve_actor → gate_transaction. No price, availability, order or handoff tool answers before an allow or require_rx exists. On an x402 receipt: 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. A refused order intent is not settled and not charged.
Gate
- Resolve Jurisdiction
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, example, output, errors
ship_tostring — required
Example input
{ "ship_to": "US-FL" }Example output (a real answer from the door)
{ "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/" } }Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_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
Bad input in the run (
{"ship_to": "ZZ"}) answered:{"reason_code": "DENY_JURISDICTION", "detail": "'ZZ' does not resolve: use US, US-<state>, CA, CA-<province>, MX, EU, EU-<member>, UK, KR, JP, SG or CH"} - Resolve Actor
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, example, output, errors
actor_classstring — requiredcredentialstring|null
Example input
{ "actor_class": "dispenser" }Example output (a real answer from the door)
{ "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 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 } }Errors this tool can return
DENY_ACTOR_CLASS— the actor class is not one of the classes of record — the detail lists them
Bad input in the run (
{"actor_class": "wizard"}) answered:{"reason_code": "DENY_ACTOR_CLASS", "detail": "unknown actor class; one of ['authorized_trading_partner', 'manufacturer', 'repackager', 'wholesale_distributor', 'dispenser', 'third_party_logistics_provider', 'cosmetic_responsible_person', 'nhp_licence_holder', - Gate Transaction
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, example, output, errors
substancestring — requiredpathwaystring — requiredactor_classstring — requiredship_tostring — requiredchannelstring|nullcredentialstring|null
Example input
{ "substance": "tirzepatide", "pathway": "licensed_medicine", "actor_class": "dispenser", "ship_to": "US-FL" }Example output (a real answer from the door)
{ "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", "reason_code": "ALLOW", "reason": "approved_drug on the register; licensed supply to a dispenser (DSCSA authorized trading partner (licence or registration held))", "bearer": { "client_id": "a2ap_b956da16ad3d1af678bde4a6", "client_name": "Claude directory reviewer (standing test client)", "scope": "peptides.read peptides.transact", "iss": "https://peptides-registry.ai" }, "decision_id": "gate_96e32e675fbd11d26679", "notice": { "text": "This answer reflects US rules (rule set v1.2-202 … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_ACTOR_CLASS— the actor class is not one of the classes of record — the detail lists themDENY_CONTROLLED— a controlled substance in the jurisdictionDENY_CROSS_BORDER— the ship-to is outside the licensed party's jurisdictionDENY_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 holdsDENY_RUO— research-use stock: not listed and not soldDENY_STATE_OVERLAY— a state or provincial overlay tightens the federal passREQUIRE_RX— allowed with a prescription accompanying the order intent
Bad input in the run (
{"substance": "tirzepatide", "pathway": "teleport", "actor_class": "dispenser", "ship_to": "US-FL"}) answered:{"reason_code": "DENY_PATHWAY_NOT_CLEARED"}
Regulatory truth
- Get Substance Record
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, example, output, errors
substancestring — required
Example input
{ "substance": "semaglutide" }Example output (a real answer from the door)
{ "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.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" }, "preferred_name": { "value": "Semaglutide", "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" }, "sequence_hash": { "value": "9c3b2121509a5cafd900 … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendNOT_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
Bad input in the run (
{"substance": ""}) answered:{"error": "BAD_INPUT", "detail": "substance must not be empty: give an INN, a preferred name, an alias, or unii:<UNII>"} - Get Pathway Status
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, example, output, errors
substancestring — requiredjurisdictionstring — requiredpathwaystring — required
Example input
{ "substance": "semaglutide", "jurisdiction": "CA", "pathway": "licensed_medicine" }Example output (a real answer from the door)
{ "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", "02528541", "02540258", "02551012", "02551020", "02551039", "02552698", "02567806", "02567814", "02568012", "02568020" ], "brands": [ "APO-SEMAGLUTIDE INJECTION", "OZEMPIC", "RYBELSUS", "SEMAGLUTIDE INJECTION", "WEGOVY" ], "notice": { "text": "This answer reflects CA 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 informa … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_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
Bad input in the run (
{"substance": "semaglutide", "jurisdiction": "XX", "pathway": "licensed_medicine"}) answered:{"error": "DENY_JURISDICTION", "reason_code": "DENY_JURISDICTION", "detail": "jurisdiction must be one of US, CA, MX, EU, UK, KR, JP, SG or CH (a state, province or member may follow, e.g. US-FL, CA-ON, EU-DE)"} - Get Compounding Eligibility
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, example, output, errors
substancestring — requiredjurisdictionstring — required
Example input
{ "substance": "BPC-157", "jurisdiction": "US" }Example output (a real answer from the door)
{ "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", "reason_code": "DENY_PATHWAY_NOT_CLEARED", "communication_class": "public", "source_url": "https://a2a-peptides.ai/docs", "effective_date": "2026-09-17", "note": "default: no cleared pathway row → deny" } ], "rule_set_version": "v1.2-2026-09-17", "eligible": false, "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 mistake … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_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 CHNOT_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
Bad input in the run (
{"substance": "unobtainium-9", "jurisdiction": "US"}) answered:{"error": "NOT_ON_GRAPH"} - Get Label And Indication
get_label_and_indication— reads only
Label and indication pointers for a licensed presentation only (US package NDC, CA DIN, EU EMA number).Inputs, example, output, errors
presentation_idstring — required
Example input
{ "presentation_id": "DIN02540258" }Example output (a real answer from the door)
{ "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": "Subcutaneous", "device": null, "pack": null, "bsfrdp_d": "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." }, "brand": { "value": "OZEMPIC", "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": "cu … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendNOT_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
Bad input in the run (
{"presentation_id": "nope-000"}) answered:{"error": "NOT_ON_GRAPH"} - Get Enforcement Watch
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, example, output, errors
substancestring|nulljurisdictionstring|nullsincestring|null
Example input
{ "substance": "semaglutide", "jurisdiction": "US", "since": "2026-01-01" }Example output (a real answer from the door)
{ "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 } }Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_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
Bad input in the run (
{"substance": "semaglutide", "since": "yesterday"}) answered:{"error": "BAD_INPUT", "detail": "since must be YYYY, YYYY-MM or YYYY-MM-DD"}
Cleared catalogue
- Search Cleared Items
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, example, output, errors
querystring — requiredjurisdictionstring — requiredpathwaystringactor_classstringlimitintegerdecision_idstring|nullbannerstring|null
Example input
{ "query": "ozempic", "jurisdiction": "CA", "pathway": "licensed_medicine", "limit": 3, "decision_id": "gate_96e32e675fbd11d26679" }Example output (a real answer from the door)
{ "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, "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" } }, "status": "marketed", "substance_unii": "53AXN4NNHX", "bsfrdp_d": { "brand": "OZEMPIC", "strength": "0.68 MG", "form": "Solution", "route": "Subcutaneous", "device": null, "pack": null, "bsfrdp_d": "Artificial intelligence makes mistakes. A2A Peptides is … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_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
Bad input in the run (
{"query": "", "jurisdiction": "CA"}) answered:{"error": "BAD_INPUT", "detail": "query must not be empty (a substance, brand or holder)"} - Get Item
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, example, output, errors
presentation_idstring — requiredtenantstring|nulldecision_idstring|null
Example input
{ "presentation_id": "76177-501-10", "decision_id": "gate_96e32e675fbd11d26679" }Example output (a real answer from the door)
{ "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" }, "application_number": { "value": null, "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" } }, "status": "listed", "substance_unii": "OYN3CCI6QE", "bsfrdp_d": { "brand": null, "strength": "TIRZEPATIDE 1 g/g", "form": "POWDER", "route": "", "device": null, "pack": "1000 g in 1 BAG (76177-501-10)", "bsfrdp_d": "Artificial intelligence makes … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendNOT_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
Bad input in the run (
{"presentation_id": "0000-0000-00"}) answered:{"error": "NOT_ON_GRAPH"} - Compare Presentations
compare_presentations— reads only
Compare two or more authorised presentations side by side (ids as for get_item).Inputs, example, output, errors
presentation_idsarray — requireddecision_idstring|null
Example input
{ "presentation_ids": [ "76177-501-10", "DIN02540258" ], "decision_id": "gate_96e32e675fbd11d26679" }Example output (a real answer from the door)
{ "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?search=generic_name:%22Tirzepatide%22&limit=100" }, "application_number": { "value": null, "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" } }, "status": "listed", "substance_unii": "OYN3CCI6QE", "bsfrdp_d": { "brand": null, "strength": "TIRZEPATIDE 1 g/g", "form": "POWDER", "route": "", "device": null, … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendNOT_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
Bad input in the run (
{"presentation_ids": ["76177-501-10"]}) answered:{"error": "BAD_INPUT", "detail": "two or more presentation ids are required"}
Licensed supply
- Find Licensed Supplier
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, example, output, errors
presentation_idstring — requiredjurisdictionstring — requireddecision_idstring — requiredtenantstring|null
Example input
{ "presentation_id": "76177-501-10", "jurisdiction": "US", "decision_id": "gate_96e32e675fbd11d26679" }Example output (a real answer from the door)
{ "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/search.cfm?query=76177-501", "read_by": "cc-register-reader", "read_at": "2026-09-18T02:09:38+00:00", "state": "current" } }, "bsfrdp_d": { "brand": null, "strength": "TIRZEPATIDE 1 g/g", "form": "POWDER", "route": "", "device": null, "pack": "1000 g in 1 BAG (76177-501-10)", "bsfrdp_d": "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 i … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_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 holdsDENY_UNLICENSED_AGENT— an agent presented no bearer from the issuer — register at peptides-registry.ai/oauth/register and present the tokenGATE_REQUIRED— the tool needs the decision_id of an allow or require_rx decision — call resolve_jurisdiction, resolve_actor and gate_transaction firstNOT_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
Bad input in the run (
{"presentation_id": "76177-501-10", "jurisdiction": "US", "decision_id": "dec_not_real"}) answered:{"error": "GATE_REQUIRED", "reason_code": "DENY_PATHWAY_NOT_CLEARED", "detail": "call resolve_jurisdiction → resolve_actor → gate_transaction first and pass the decision_id of an allow / require_rx decision"} - Get Availability
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, example, output, errors
presentation_idstring — requireddecision_idstring — requiredtenantstring|null
Example input
{ "presentation_id": "76177-501-10", "decision_id": "gate_96e32e675fbd11d26679" }Example output (a real answer from the door)
{ "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/search.cfm?query=76177-501", "read_by": "cc-register-reader", "read_at": "2026-09-18T02:09:38+00:00", "state": "current" } }, "bsfrdp_d": { "brand": null, "strength": "TIRZEPATIDE 1 g/g", "form": "POWDER", "route": "", "device": null, "pack": "1000 g in 1 BAG (76177-501-10)", "bsfrdp_d": "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 i … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_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 holdsDENY_UNLICENSED_AGENT— an agent presented no bearer from the issuer — register at peptides-registry.ai/oauth/register and present the tokenGATE_REQUIRED— the tool needs the decision_id of an allow or require_rx decision — call resolve_jurisdiction, resolve_actor and gate_transaction firstNOT_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
Bad input in the run (
{"presentation_id": "76177-501-10", "decision_id": ""}) answered:{"error": "GATE_REQUIRED", "reason_code": "DENY_PATHWAY_NOT_CLEARED", "detail": "call resolve_jurisdiction → resolve_actor → gate_transaction first and pass the decision_id of an allow / require_rx decision"} - Get Price
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, example, output, errors
presentation_idstring — requireddecision_idstring — requiredtenantstring|null
Example input
{ "presentation_id": "76177-501-10", "decision_id": "gate_96e32e675fbd11d26679" }Example output (a real answer from the door)
{ "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/search.cfm?query=76177-501", "read_by": "cc-register-reader", "read_at": "2026-09-18T02:09:38+00:00", "state": "current" } }, "bsfrdp_d": { "brand": null, "strength": "TIRZEPATIDE 1 g/g", "form": "POWDER", "route": "", "device": null, "pack": "1000 g in 1 BAG (76177-501-10)", "bsfrdp_d": "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 i … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_UNLICENSED_AGENT— an agent presented no bearer from the issuer — register at peptides-registry.ai/oauth/register and present the tokenGATE_REQUIRED— the tool needs the decision_id of an allow or require_rx decision — call resolve_jurisdiction, resolve_actor and gate_transaction firstNOT_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
Bad input in the run (
{"presentation_id": "", "decision_id": "gate_96e32e675fbd11d26679"}) answered:{"error": "BAD_INPUT", "detail": "presentation_id must not be empty: use the id returned by search_cleared_items (e.g. a US package NDC 0169-4130-13 or CA DIN02471477)"}
Quality
- Get Lot Coa
get_lot_coa— reads only
Certificate of analysis for a lawful lot of a presentation, where the pathway permits (decision_id required).Inputs, example, output, errors
presentation_idstring — requiredlotstring — requireddecision_idstring — required
Example input
{ "presentation_id": "76177-501-10", "lot": "LOT-TEST-1", "decision_id": "gate_96e32e675fbd11d26679" }Example output (a real answer from the door)
{ "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/search.cfm?query=76177-501", "read_by": "cc-register-reader", "read_at": "2026-09-18T02:09:38+00:00", "state": "current" } }, "lot": { "lot": "LOT-TEST-1", "detail": "no lawful lot of that number on the record" }, "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 … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_UNLICENSED_AGENT— an agent presented no bearer from the issuer — register at peptides-registry.ai/oauth/register and present the tokenGATE_REQUIRED— the tool needs the decision_id of an allow or require_rx decision — call resolve_jurisdiction, resolve_actor and gate_transaction firstNOT_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
Bad input in the run (
{"presentation_id": "76177-501-10", "lot": "", "decision_id": "gate_96e32e675fbd11d26679"}) answered:{"error": "BAD_INPUT", "detail": "lot must not be empty: give the lot number printed on the pack"} - Verify Serialization
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, example, output, errors
jurisdictionstring — requiredgtinstring — requiredserialstring — requiredlotstring|nullexpirystring|null
Example input
{ "jurisdiction": "US", "gtin": "00301694130133", "serial": "S1", "lot": "L1", "expiry": "2027-01-01" }Example output (a real answer from the door)
{ "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", "rule_set_version": "v1.2-2026-09-17", "regulator": "https://www.fda.gov/" } }Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_NO_SERIALIZATION— the GTIN failed its check digit or the pack could not be verified
Bad input in the run (
{"jurisdiction": "US", "gtin": "123", "serial": "S1"}) answered:{"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)"}
Commerce
- Create Order Intent
create_order_intent— writes a record (nothing is deleted)
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, example, output, errors
presentation_idstring — requiredquantityinteger — requireddecision_idstring — requiredtenantstring|nullship_tostring|null
Example input
{ "presentation_id": "76177-501-10", "quantity": 1, "decision_id": "gate_96e32e675fbd11d26679", "ship_to": "US-FL" }Example output (a real answer from the door)
{ "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": "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" } }, "bsfrdp_d": { "brand": null, "strength": "TIRZEPATIDE 1 g/g", "form": "POWDER", "route": "", "device": null, "pack": "1000 g in 1 BAG (76177-501-10)", "bsfrdp_d": "Artificial intelligence makes mistakes. A2A Peptides is an information source, not a recommendation. Rules differ by jurisdiction — refer to the reg … (trimmed)Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_UNLICENSED_AGENT— an agent presented no bearer from the issuer — register at peptides-registry.ai/oauth/register and present the tokenGATE_REQUIRED— the tool needs the decision_id of an allow or require_rx decision — call resolve_jurisdiction, resolve_actor and gate_transaction first
Bad input in the run (
{"presentation_id": "76177-501-10", "quantity": 0, "decision_id": "gate_96e32e675fbd11d26679"}) answered:{"error": "BAD_INPUT", "detail": "quantity must be a whole number from 1 to 100000 (packs)"} - A2A Handoff
a2a_handoff— writes a record (nothing is deleted)
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, example, output, errors
intent_idstring|nulldecision_idstring|nullcounterparty_card_urlstring|nullpractice_scopestring|nulllimitinteger
Example input
{ "intent_id": "oi_7c6c56206b41ccd4", "decision_id": "gate_96e32e675fbd11d26679", "counterparty_card_url": "https://a2a-pharma.ai/.well-known/agent-card.json" }Example output (a real answer from the door)
{ "intent_id": "oi_7c6c56206b41ccd4", "counterparty_card_url": "https://a2a-pharma.ai/.well-known/agent-card.json", "envelope": { "from": "https://a2a-peptides.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 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 } }Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_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 holdsDENY_UNLICENSED_AGENT— an agent presented no bearer from the issuer — register at peptides-registry.ai/oauth/register and present the tokenGATE_REQUIRED— the tool needs the decision_id of an allow or require_rx decision — call resolve_jurisdiction, resolve_actor and gate_transaction first
Bad input in the run (
{"intent_id": "oi_bogus", "decision_id": "dec_bogus"}) answered:{"error": "GATE_REQUIRED", "reason_code": "DENY_PATHWAY_NOT_CLEARED", "detail": "call resolve_jurisdiction → resolve_actor → gate_transaction first and pass its decision_id"}
Ops
- Get Safety Label
get_safety_label— reads only
Safety label pointers for licensed products (label page and the pharmacovigilance scheme of the jurisdiction).Inputs, example, output, errors
substancestring — requiredjurisdictionstring — required
Example input
{ "substance": "semaglutide", "jurisdiction": "UK" }Example output (a real answer from the door)
{ "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/organisations/medicines-and-healthcare-products-regulatory-agency" } }Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to sendDENY_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
Bad input in the run (
{"substance": "semaglutide", "jurisdiction": "MARS"}) answered:{"error": "DENY_JURISDICTION", "reason_code": "DENY_JURISDICTION", "detail": "jurisdiction must be one of US, CA, MX, EU, UK, KR, JP, SG or CH (a state, province or member may follow, e.g. US-FL, CA-ON, EU-DE)"} - Log Audit
log_audit— writes a record (nothing is deleted)
Write the audit line for a gate decision or an order intent (returns the line id).Inputs, example, output, errors
kindstring — requiredreference_idstring — requirednotestring|null
Example input
{ "kind": "gate", "reference_id": "gate_96e32e675fbd11d26679", "note": "A2AP-15 functional bar" }Example output (a real answer from the door)
{ "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 } }Errors this tool can return
BAD_INPUT— an argument is missing or malformed — the detail says which and what to send
Bad input in the run (
{"kind": "party", "reference_id": "gate_96e32e675fbd11d26679"}) answered:{"error": "BAD_INPUT", "detail": "kind must be gate, order_intent or handoff"}
Troubleshooting
- Cannot connect — the endpoint is
https://mcp.a2a-peptides.ai/mcp, transport streamable-HTTP, POST only (a GET on it shows the human page). SendAccept: application/json, text/event-stream; check health.json answers 200 and initialize returns serverInfo. - A gate answer of deny — read
reason_code:DENY_JURISDICTIONthe 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_CLASSthe actor class is not one of the classes of record — the detail lists them ·DENY_PATHWAY_NOT_CLEAREDthe substance has no cleared row on that pathway in that jurisdiction — the source page on the answer says what the register holds ·DENY_UNLICENSED_AGENTan agent presented no bearer from the issuer — register at peptides-registry.ai/oauth/register and present the token ·DENY_RUOresearch-use stock: not listed and not sold ·DENY_CONTROLLEDa controlled substance in the jurisdiction ·DENY_STATE_OVERLAYa state or provincial overlay tightens the federal pass ·DENY_NO_SERIALIZATIONthe GTIN failed its check digit or the pack could not be verified ·DENY_CROSS_BORDERthe ship-to is outside the licensed party's jurisdiction. Thesource_urlon the decision is the register page it was read from. - A gate answer of require_rx — the item is allowed to a prescriber or dispenser with a prescription accompanying the order intent; create_order_intent marks
prescription_required. - An unlicensed-agent denial —
DENY_UNLICENSED_AGENT: the actor class wasagentwith no bearer. Register athttps://peptides-registry.ai/oauth/register, take a client-credentials token, presentAuthorization: Bearer; the token's actor class is the class of record (see /auth.md). - A 402 answer — the paid door (
/apion a2a-peptides.ai, peptides-registry.ai and peptides-x402.ai) answers HTTP 402 with the x402 v2 offer (USDC on Base); an x402 client pays and retries with PAYMENT-SIGNATURE and receives a signed receipt. On an order intent the door runs the gate 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. A 402 is not an error. - An empty result —
NOT_ON_GRAPHor an emptyitemslist means the record holds nothing for that query; nothing is answered from memory. Try the INN,unii:<UNII>, another jurisdiction or pathway, or search_cleared_items with a broader query. - How to report a wrong record — every field carries its
source_url; send the tool, the arguments, the field and the register page that contradicts it to mcp@a2a-peptides.ai or the contact form. A correction is a new state on the record, never an edit.
Worked examples
Verbatim prompts, the tool chain, and the real answers the door gave when this page was built.
- Is semaglutide cleared as a licensed medicine in Canada, and what is it indicated for?
Tool chain:get_substance_record→get_pathway_status→get_label_and_indicationget_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-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{"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": "2026-09-18T01:59:08+00:00", "state": "current" }, "state": "current", "dins": [ "02471469", "02497581", "02497603", "02497611", "02528509", "02528517", "02528525", "02528533", … (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-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)
- I am a licensed pharmacy in Florida. Can I buy tirzepatide, and who is licensed to supply it?
Tool chain:resolve_jurisdiction→resolve_actor→gate_transaction→find_licensed_supplierresolve_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 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{"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 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{"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", "communication_class": "trade_information", "parent_class": "authorized_trading_partner", "actor_class_equivalent": "DSCSA authorized trading partner (licence or registration held)", "result": "allow", "re … (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_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)
- Compare the presentations of a copper peptide (GHK-Cu) serum available in the UK and in Korea.
Tool chain:search_cleared_items→compare_presentationssearch_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)", "read_at": "2026-09-18T08:34:31+00:00", "state": "current" } }, "status": "listed", "substance_unii": null, "bsfrdp_d": { "brand": "NATURIUM", "strength": null, "f … (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, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.", "jurisdiction": "KR", "jurisdiction_label": "KR", "rule … (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 your jurisdiction for the information that applies to you.", "jurisdiction": null, "rule_set_version": null, "regulator": null } }
Data handling
- What the door receives — the tool name and its arguments (a substance, a jurisdiction, a pathway, an actor class, a presentation id, a quantity), the bearer if one is presented, and the request headers the transport carries.
- What it stores — an audit line per gate decision, order intent and handoff (actor class, jurisdiction, decision, reason code, rule-set version); x402 receipts; agent registrations at the issuer. Console logs are kept 30 days.
- No personal health data — the door handles no personal health data and takes no patient details: a patient actor receives status, class-level information and a referral to a licensed provider, never a vial checkout.
- Ranking — results rank from the record (the register page, its date and its state), never from payment or placement; a tenant's offer sits beside the record, never above it.