A2A Peptides

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

Should I use this

Quality & Safety

A
Description quality
91%
Schema completeness
73%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (5)

  • LOWTool 'resolve_jurisdiction' description lacks action verbin resolve_jurisdiction
  • LOWTool 'get_substance_record' description lacks action verbin get_substance_record
  • LOWTool 'get_label_and_indication' description lacks action verbin get_label_and_indication
  • LOWTool 'get_lot_coa' description lacks action verbin get_lot_coa
  • LOWTool 'get_safety_label' description lacks action verbin get_safety_label

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,115Tokens (tool definitions)
~716 BTypical response size
Significant attention impact (2.43% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "a2a-peptides": {
      "url": "https://mcp.a2a-peptides.ai/mcp"
    }
  }
}

Remote endpoints

https://mcp.a2a-peptides.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (20)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢resolve_jurisdiction(ship_to)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "ship_to": {
      "type": "string"
    }
  },
  "required": [
    "ship_to"
  ]
}

Output Schema

{
  "type": "object"
}
🟢resolve_actor(actor_class, credential)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "actor_class": {
      "type": "string"
    },
    "credential": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "actor_class"
  ]
}

Output Schema

{
  "type": "object"
}
🟢gate_transaction(substance, pathway, actor_class, ship_to, channel, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "substance": {
      "type": "string"
    },
    "pathway": {
      "type": "string"
    },
    "actor_class": {
      "type": "string"
    },
    "ship_to": {
      "type": "string"
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "credential": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "substance",
    "pathway",
    "actor_class",
    "ship_to"
  ]
}

Output Schema

{
  "type": "object"
}
🟢get_substance_record(substance)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "substance": {
      "type": "string"
    }
  },
  "required": [
    "substance"
  ]
}

Output Schema

{
  "type": "object"
}
🟢get_pathway_status(substance, jurisdiction, pathway)

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

Input Schema

{
  "type": "object",
  "properties": {
    "substance": {
      "type": "string"
    },
    "jurisdiction": {
      "type": "string"
    },
    "pathway": {
      "type": "string"
    }
  },
  "required": [
    "substance",
    "jurisdiction",
    "pathway"
  ]
}

Output Schema

{
  "type": "object"
}
🟢get_compounding_eligibility(substance, jurisdiction)

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

Input Schema

{
  "type": "object",
  "properties": {
    "substance": {
      "type": "string"
    },
    "jurisdiction": {
      "type": "string"
    }
  },
  "required": [
    "substance",
    "jurisdiction"
  ]
}

Output Schema

{
  "type": "object"
}
🟢get_label_and_indication(presentation_id)

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

Input Schema

{
  "type": "object",
  "properties": {
    "presentation_id": {
      "type": "string"
    }
  },
  "required": [
    "presentation_id"
  ]
}

Output Schema

{
  "type": "object"
}
🟢get_enforcement_watch(substance, jurisdiction, since)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "substance": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "jurisdiction": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "since": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  }
}

Output Schema

{
  "type": "object"
}
🟢search_cleared_items(query, jurisdiction, pathway, actor_class, limit, ...)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "jurisdiction": {
      "type": "string"
    },
    "pathway": {
      "default": "licensed_medicine",
      "type": "string"
    },
    "actor_class": {
      "default": "wholesale_distributor",
      "type": "string"
    },
    "limit": {
      "default": 25,
      "type": "integer"
    },
    "decision_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "banner": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "query",
    "jurisdiction"
  ]
}

Output Schema

{
  "type": "object"
}
🟢get_item(presentation_id, tenant, decision_id)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "presentation_id": {
      "type": "string"
    },
    "tenant": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "decision_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "presentation_id"
  ]
}

Output Schema

{
  "type": "object"
}
🟢compare_presentations(presentation_ids, decision_id)

Compare two or more authorised presentations side by side (ids as for get_item).

Input Schema

{
  "type": "object",
  "properties": {
    "presentation_ids": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "decision_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "presentation_ids"
  ]
}

Output Schema

{
  "type": "object"
}
🟢find_licensed_supplier(presentation_id, jurisdiction, decision_id, tenant)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "presentation_id": {
      "type": "string"
    },
    "jurisdiction": {
      "type": "string"
    },
    "decision_id": {
      "type": "string"
    },
    "tenant": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "presentation_id",
    "jurisdiction",
    "decision_id"
  ]
}

Output Schema

{
  "type": "object"
}
🟢get_availability(presentation_id, decision_id, tenant)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "presentation_id": {
      "type": "string"
    },
    "decision_id": {
      "type": "string"
    },
    "tenant": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "presentation_id",
    "decision_id"
  ]
}

Output Schema

{
  "type": "object"
}
🟢get_price(presentation_id, decision_id, tenant)

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

Input Schema

{
  "type": "object",
  "properties": {
    "presentation_id": {
      "type": "string"
    },
    "decision_id": {
      "type": "string"
    },
    "tenant": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "presentation_id",
    "decision_id"
  ]
}

Output Schema

{
  "type": "object"
}
🟢get_lot_coa(presentation_id, lot, decision_id)

Certificate of analysis for a lawful lot of a presentation, where the pathway permits (decision_id required).

Input Schema

{
  "type": "object",
  "properties": {
    "presentation_id": {
      "type": "string"
    },
    "lot": {
      "type": "string"
    },
    "decision_id": {
      "type": "string"
    }
  },
  "required": [
    "presentation_id",
    "lot",
    "decision_id"
  ]
}

Output Schema

{
  "type": "object"
}
🟢verify_serialization(jurisdiction, gtin, serial, lot, expiry)

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

Input Schema

{
  "type": "object",
  "properties": {
    "jurisdiction": {
      "type": "string"
    },
    "gtin": {
      "type": "string"
    },
    "serial": {
      "type": "string"
    },
    "lot": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "expiry": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "jurisdiction",
    "gtin",
    "serial"
  ]
}

Output Schema

{
  "type": "object"
}
🟡create_order_intent(presentation_id, quantity, decision_id, tenant, ship_to)

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",
  "properties": {
    "presentation_id": {
      "type": "string"
    },
    "quantity": {
      "type": "integer"
    },
    "decision_id": {
      "type": "string"
    },
    "tenant": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "ship_to": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "presentation_id",
    "quantity",
    "decision_id"
  ]
}

Output Schema

{
  "type": "object"
}
⚪a2a_handoff(intent_id, decision_id, counterparty_card_url, practice_scope, limit)

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": {
    "intent_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "decision_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "counterparty_card_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "practice_scope": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "limit": {
      "default": 10,
      "type": "integer"
    }
  }
}

Output Schema

{
  "type": "object"
}
🟢get_safety_label(substance, jurisdiction)

Safety label pointers for licensed products (label page and the pharmacovigilance scheme of the jurisdiction).

Input Schema

{
  "type": "object",
  "properties": {
    "substance": {
      "type": "string"
    },
    "jurisdiction": {
      "type": "string"
    }
  },
  "required": [
    "substance",
    "jurisdiction"
  ]
}

Output Schema

{
  "type": "object"
}
🟡log_audit(kind, reference_id, note)

Write the audit line for a gate decision or an order intent (returns the line id).

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "reference_id": {
      "type": "string"
    },
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "kind",
    "reference_id"
  ]
}

Output Schema

{
  "type": "object"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded20 tools
verifiedversion not recorded20 tools
verifiedversion not recorded20 tools