Skip to content

A2A Peptides

by A2A-Peptides · remote · no sign-in to list tools · v1.6.7 · published by GitHub user A2A-Peptides

Agent-to-Agent (A2A) + Model Context Protocol (MCP) hub for peptides.

Changes · 6

20 tools: 6 change things and 14 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http a2a-peptides https://mcp.a2a-peptides.ai/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn1 info
  • The server marks "get_label_and_indication" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_label_and_indication" says "get": a word for reading.

    What this check looks for
  • The description mentions "credential".

    Matched text

    description: "...c, and agent (inherits the class of the credential it presents; none returns DENY_UNLICENS..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

20 tools

Changes things 6Claude Code: ask
  • a2a_handoffHand off over Agent-to-Agent (A2A).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
    • title: A2A Handoff
  • create_order_intentCreate 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.No findings

    Why it is in this group

    • The name "create_order_intent" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
    • title: Create Order Intent
  • gate_transactionThe 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 a…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Gate Transaction
  • get_label_and_indicationLabel and indication pointers for a licensed presentation only (US package NDC, CA DIN, EU EMA number).1 finding

    Why it is in this group

    • The name "get_label_and_indication" says "get": a word for reading.
    • The description's first verb is "label": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_label_and_indication" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_label_and_indication" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Label and indication pointers for a licensed presentation only (US package NDC, CA DIN, EU EMA number).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Label And Indication
  • log_auditWrite the audit line for a gate decision or an order intent (returns the line id).No findings

    Why it is in this group

    • The name "log_audit" says "log": a word for reading.
    • The description's first verb is "write": a word for a change.
    Description, as the server wrote it
    Write the audit line for a gate decision or an order intent (returns the line id).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
    • title: Log Audit
  • verify_serializationVerify a serialised pack (GTIN + serial + lot + expiry) against the serialisation regime of the jurisdiction (DSCSA · FMD · UK · KR; none-national elsewhere).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Verify a serialised pack (GTIN + serial + lot + expiry) against the serialisation regime of the jurisdiction (DSCSA · FMD · UK · KR; none-national elsewhere).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Verify Serialization
Only reads 14Claude Code: allow
  • compare_presentationsCompare two or more authorised presentations side by side (ids as for get_item).No findings

    Why it is in this group

    • The name "compare_presentations" says "compare": a word for reading.
    Description, as the server wrote it
    Compare two or more authorised presentations side by side (ids as for get_item).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Compare Presentations
  • find_licensed_supplierLicensed parties for a presentation in a jurisdiction (tenant as a parameter).No findings

    Why it is in this group

    • The name "find_licensed_supplier" says "find": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Find Licensed Supplier
  • get_availabilityAvailability 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…No findings

    Why it is in this group

    • The name "get_availability" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Availability
  • get_compounding_eligibilityWhether a substance may be lawfully compounded in a jurisdiction and under which list or standard (503A/503B, provincial, magistral, Specials), from the register.No findings

    Why it is in this group

    • The name "get_compounding_eligibility" says "get": a word for reading.
    Description, as the server wrote it
    Whether a substance may be lawfully compounded in a jurisdiction and under which list or standard (503A/503B, provincial, magistral, Specials), from the register.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Compounding Eligibility
  • get_enforcement_watchDated, URL'd enforcement events for a substance or jurisdiction: warning letters, import alerts, shortage-list changes, committee votes, proposed and final rules, seizures, state n…No findings

    Why it is in this group

    • The name "get_enforcement_watch" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Enforcement Watch
  • get_itemProduct record from gtinfetch.ai (signed); hub layer: seat, market, claim, price, availability.No findings

    Why it is in this group

    • The name "get_item" says "get": a word for reading.
    Description, as the server wrote it
    Product record from gtinfetch.ai (signed); hub layer: seat, market, claim, price, availability. 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).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Item
  • get_lot_coaCertificate of analysis for a lawful lot of a presentation, where the pathway permits (decision_id required).No findings

    Why it is in this group

    • The name "get_lot_coa" says "get": a word for reading.
    Description, as the server wrote it
    Certificate of analysis for a lawful lot of a presentation, where the pathway permits (decision_id required).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Lot Coa
  • get_pathway_statusThe status of a substance on one pathway in one jurisdiction (frozen vocabulary), with effective date, rule-set version and source page.No findings

    Why it is in this group

    • The name "get_pathway_status" says "get": a word for reading.
    Description, as the server wrote it
    The status of a substance on one pathway in one jurisdiction (frozen vocabulary), with effective date, rule-set version and source page.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Pathway Status
  • get_pricePrice basis (list · contract · reimbursement) from a licensed party, once gate_transaction has answered allow or require_rx (decision_id).No findings

    Why it is in this group

    • The name "get_price" says "get": a word for reading.
    Description, as the server wrote it
    Price basis (list · contract · reimbursement) from a licensed party, once gate_transaction has answered allow or require_rx (decision_id).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Price
  • get_safety_labelSafety label pointers for licensed products (label page and the pharmacovigilance scheme of the jurisdiction).No findings

    Why it is in this group

    • The name "get_safety_label" says "get": a word for reading.
    Description, as the server wrote it
    Safety label pointers for licensed products (label page and the pharmacovigilance scheme of the jurisdiction).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Safety Label
  • get_substance_recordOne molecule: identifiers (INN, UNII, CAS, sequence hash), sourced aliases, class, one pathway row per jurisdiction × pathway, enforcement events, safety references.No findings

    Why it is in this group

    • The name "get_substance_record" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Substance Record
  • resolve_actorResolve the actor class and channel.1 finding

    Why it is in this group

    • The name "resolve_actor" says "resolve": a word for reading.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...c, and agent (inherits the class of the credential it presents; none returns DENY_UNLICENS..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Resolve Actor
  • resolve_jurisdictionResolve a ship-to (e.g.No findings

    Why it is in this group

    • The name "resolve_jurisdiction" says "resolve": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Resolve Jurisdiction
  • search_cleared_itemsPresentations 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).No findings

    Why it is in this group

    • The name "search_cleared_items" says "search": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
    • title: Search Cleared Items

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.6.7. Values in angle brackets are yours to fill in.

claude mcp add --transport http a2a-peptides https://mcp.a2a-peptides.ai/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__a2a-peptides__resolve_jurisdiction",
      "mcp__a2a-peptides__resolve_actor",
      "mcp__a2a-peptides__get_substance_record",
      "mcp__a2a-peptides__get_pathway_status",
      "mcp__a2a-peptides__get_compounding_eligibility",
      "mcp__a2a-peptides__get_enforcement_watch",
      "mcp__a2a-peptides__search_cleared_items",
      "mcp__a2a-peptides__get_item",
      "mcp__a2a-peptides__compare_presentations",
      "mcp__a2a-peptides__find_licensed_supplier",
      "mcp__a2a-peptides__get_availability",
      "mcp__a2a-peptides__get_price",
      "mcp__a2a-peptides__get_lot_coa",
      "mcp__a2a-peptides__get_safety_label"
    ],
    "ask": [
      "mcp__a2a-peptides__gate_transaction",
      "mcp__a2a-peptides__get_label_and_indication",
      "mcp__a2a-peptides__verify_serialization",
      "mcp__a2a-peptides__create_order_intent",
      "mcp__a2a-peptides__a2a_handoff",
      "mcp__a2a-peptides__log_audit"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as a2a-peptides. Review it before you use it.