# A2A Peptides

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

- name: io.github.A2A-Peptides/a2a-peptides
- version: 1.6.7
- connection class: R0 (autonomous)
- trust: 94/100
- quality: 90/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.A2A-Peptides%2Fa2a-peptides
- tools: https://api.protogrid.dev/v1/servers/io.github.A2A-Peptides%2Fa2a-peptides/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "a2a-peptides": {
      "type": "http",
      "url": "https://mcp.a2a-peptides.ai/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-31d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 90/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 20 of 20 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,880 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 21 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 20, about 2,880 tokens to load them all
- tool set hash: fdf35b88211cba07518936dae98a687c
- tools last changed: 2026-10-16T07:32:01.481Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.A2A-Peptides/a2a-peptides.svg)](https://protogrid.dev/servers/io.github.A2A-Peptides/a2a-peptides)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-16 `get_item` changed (description)
  - before: 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).
  - after: 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).
- 2026-09-26 `log_audit` changed (annotations)
- 2026-09-26 `get_safety_label` changed (annotations)
- 2026-09-26 `a2a_handoff` changed (annotations)
- 2026-09-26 `create_order_intent` changed (annotations)
- 2026-09-26 `verify_serialization` changed (annotations)
- 2026-09-26 `get_lot_coa` changed (annotations)
- 2026-09-26 `get_price` changed (annotations)
- 2026-09-26 `get_availability` changed (annotations)
- 2026-09-26 `find_licensed_supplier` changed (annotations)

Full history: https://api.protogrid.dev/v1/servers/io.github.A2A-Peptides%2Fa2a-peptides/changes

## Remotes

- https://mcp.a2a-peptides.ai/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (20)

- `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.
- `compare_presentations`: Compare two or more authorised presentations side by side (ids as for get_item).
- `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.
- `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.
- `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.
- `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.
- `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.
- `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.
- `get_item`: 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).
- `get_label_and_indication`: Label and indication pointers for a licensed presentation only (US package NDC, CA DIN, EU EMA number).
- `get_lot_coa`: Certificate of analysis for a lawful lot of a presentation, where the pathway permits (decision_id required).
- `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.
- `get_price`: Price basis (list · contract · reimbursement) from a licensed party, once gate_transaction has answered allow or require_rx (decision_id).
- `get_safety_label`: Safety label pointers for licensed products (label page and the pharmacovigilance scheme of the jurisdiction).
- `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.
- `log_audit`: Write the audit line for a gate decision or an order intent (returns the line id).
- `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.
- `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.
- `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).
- `verify_serialization`: Verify a serialised pack (GTIN + serial + lot + expiry) against the serialisation regime of the jurisdiction (DSCSA · FMD · UK · KR; none-national elsewhere).
