MCP Server

A2A Peptides

io.github.A2A-Peptides/a2a-peptides

What this MCP does

Screens peptide substances and products by jurisdiction and pathway, checks licensing and compounding status, retrieves labels and safety data, and supports compliant supplier and order hand-offs.

a2a_handoff
A2A Handoff
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.
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 10}, 'intent_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'practice_scope': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'counterparty_card_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}}
Output schema
{'type': 'object'}
compare_presentations
Compare Presentations
Compare two or more authorised presentations side by side (ids as for get_item).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['presentation_ids'], 'properties': {'decision_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'presentation_ids': {'type': 'array', 'items': {'type': 'string'}}}}
Output schema
{'type': 'object'}
create_order_intent
Create Order Intent
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.
Input schema
{'type': 'object', 'required': ['presentation_id', 'quantity', 'decision_id'], 'properties': {'tenant': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'ship_to': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'quantity': {'type': 'integer'}, 'decision_id': {'type': 'string'}, 'presentation_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
find_licensed_supplier
Find Licensed Supplier
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['presentation_id', 'jurisdiction', 'decision_id'], 'properties': {'tenant': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'type': 'string'}, 'jurisdiction': {'type': 'string'}, 'presentation_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
gate_transaction
Gate Transaction
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['substance', 'pathway', 'actor_class', 'ship_to'], 'properties': {'channel': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'pathway': {'type': 'string'}, 'ship_to': {'type': 'string'}, 'substance': {'type': 'string'}, 'credential': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'actor_class': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_availability
Get Availability
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['presentation_id', 'decision_id'], 'properties': {'tenant': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'type': 'string'}, 'presentation_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_compounding_eligibility
Get Compounding Eligibility
Whether a substance may be lawfully compounded in a jurisdiction and under which list or standard (503A/503B, provincial, magistral, Specials), from the register.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['substance', 'jurisdiction'], 'properties': {'substance': {'type': 'string'}, 'jurisdiction': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_enforcement_watch
Get Enforcement Watch
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.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'since': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'substance': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'jurisdiction': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}}
Output schema
{'type': 'object'}
get_item
Get Item
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).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['presentation_id'], 'properties': {'tenant': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'presentation_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_label_and_indication
Get Label And Indication
Label and indication pointers for a licensed presentation only (US package NDC, CA DIN, EU EMA number).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['presentation_id'], 'properties': {'presentation_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_lot_coa
Get Lot Coa
Certificate of analysis for a lawful lot of a presentation, where the pathway permits (decision_id required).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['presentation_id', 'lot', 'decision_id'], 'properties': {'lot': {'type': 'string'}, 'decision_id': {'type': 'string'}, 'presentation_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_pathway_status
Get Pathway Status
The status of a substance on one pathway in one jurisdiction (frozen vocabulary), with effective date, rule-set version and source page.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['substance', 'jurisdiction', 'pathway'], 'properties': {'pathway': {'type': 'string'}, 'substance': {'type': 'string'}, 'jurisdiction': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_price
Get Price
Price basis (list · contract · reimbursement) from a licensed party, once gate_transaction has answered allow or require_rx (decision_id).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['presentation_id', 'decision_id'], 'properties': {'tenant': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'type': 'string'}, 'presentation_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_safety_label
Get Safety Label
Safety label pointers for licensed products (label page and the pharmacovigilance scheme of the jurisdiction).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['substance', 'jurisdiction'], 'properties': {'substance': {'type': 'string'}, 'jurisdiction': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_substance_record
Get Substance Record
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['substance'], 'properties': {'substance': {'type': 'string'}}}
Output schema
{'type': 'object'}
log_audit
Log Audit
Write the audit line for a gate decision or an order intent (returns the line id).
Input schema
{'type': 'object', 'required': ['kind', 'reference_id'], 'properties': {'kind': {'type': 'string'}, 'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'reference_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
resolve_actor
Resolve Actor
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['actor_class'], 'properties': {'credential': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'actor_class': {'type': 'string'}}}
Output schema
{'type': 'object'}
resolve_jurisdiction
Resolve Jurisdiction
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['ship_to'], 'properties': {'ship_to': {'type': 'string'}}}
Output schema
{'type': 'object'}
search_cleared_items
Search Cleared Items
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).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['query', 'jurisdiction'], 'properties': {'limit': {'type': 'integer', 'default': 25}, 'query': {'type': 'string'}, 'banner': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'pathway': {'type': 'string', 'default': 'licensed_medicine'}, 'actor_class': {'type': 'string', 'default': 'wholesale_distributor'}, 'decision_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'jurisdiction': {'type': 'string'}}}
Output schema
{'type': 'object'}
verify_serialization
Verify Serialization
Verify a serialised pack (GTIN + serial + lot + expiry) against the serialisation regime of the jurisdiction (DSCSA · FMD · UK · KR; none-national elsewhere).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['jurisdiction', 'gtin', 'serial'], 'properties': {'lot': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'gtin': {'type': 'string'}, 'expiry': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'serial': {'type': 'string'}, 'jurisdiction': {'type': 'string'}}}
Output schema
{'type': 'object'}
Changed
log_audit
Sept. 27, 2026, 2:42 a.m.
Changed
get_safety_label
Sept. 27, 2026, 2:42 a.m.
Changed
a2a_handoff
Sept. 27, 2026, 2:42 a.m.
Changed
create_order_intent
Sept. 27, 2026, 2:42 a.m.
Changed
verify_serialization
Sept. 27, 2026, 2:42 a.m.
Changed
get_lot_coa
Sept. 27, 2026, 2:42 a.m.
Changed
get_price
Sept. 27, 2026, 2:42 a.m.
Changed
get_availability
Sept. 27, 2026, 2:42 a.m.
Changed
find_licensed_supplier
Sept. 27, 2026, 2:42 a.m.
Changed
compare_presentations
Sept. 27, 2026, 2:42 a.m.
Changed
get_item
Sept. 27, 2026, 2:42 a.m.
Changed
search_cleared_items
Sept. 27, 2026, 2:42 a.m.
Changed
get_enforcement_watch
Sept. 27, 2026, 2:42 a.m.
Changed
get_label_and_indication
Sept. 27, 2026, 2:42 a.m.
Changed
get_compounding_eligibility
Sept. 27, 2026, 2:42 a.m.
Changed
get_pathway_status
Sept. 27, 2026, 2:42 a.m.
Changed
get_substance_record
Sept. 27, 2026, 2:42 a.m.
Changed
gate_transaction
Sept. 27, 2026, 2:42 a.m.
Changed
resolve_actor
Sept. 27, 2026, 2:42 a.m.
Changed
resolve_jurisdiction
Sept. 27, 2026, 2:42 a.m.
Changed
log_audit
Sept. 21, 2026, 2:49 a.m.
Changed
get_safety_label
Sept. 21, 2026, 2:49 a.m.
Changed
a2a_handoff
Sept. 21, 2026, 2:49 a.m.
Changed
create_order_intent
Sept. 21, 2026, 2:49 a.m.
Changed
verify_serialization
Sept. 21, 2026, 2:49 a.m.
Changed
get_lot_coa
Sept. 21, 2026, 2:49 a.m.
Changed
get_price
Sept. 21, 2026, 2:49 a.m.
Changed
get_availability
Sept. 21, 2026, 2:49 a.m.
Changed
find_licensed_supplier
Sept. 21, 2026, 2:49 a.m.
Changed
compare_presentations
Sept. 21, 2026, 2:49 a.m.