Skip to main content
Glama

RCO-A2A - Record of Cleared Orders

Server Details

Signed receipt per cleared agentic order, by decision id. Two tools: write_receipt, verify_receipt.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Agentic-Private-Office/rco-a2a
GitHub Stars
0

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct role: aggregate signed statement retrieval, auditor sub-key issuance, receipt listing, public receipt verification, and authenticated receipt writing. The boundaries between reading aggregates, listing rows, verifying a receipt, and writing are explicit.

Naming Consistency5/5

All names use a consistent snake_case verb_noun pattern: get_statement, issue_auditor_key, list_receipts, verify_receipt, write_receipt. The convention is predictable and fits the domain.

Tool Count5/5

Five tools are well-scoped for a receipt/statement service and each corresponds to a necessary operation. There is no apparent bloat or missing surface caused by the count.

Completeness4/5

The core lifecycle is covered: write receipts, list receipts, verify receipts, generate signed statements, and delegate read-only auditor access. A minor gap is auditor key lifecycle management, such as listing or revoking issued auditor keys, but core workflows are not blocked.

Available Tools

5 tools
get_statementAInspect

A signed statement of your slice for a month (month: YYYY-MM) or a date range (from, to: YYYY-MM-DD, to exclusive): count, first and last seq, slice digest, the chain tip at issue, Ed25519 signature by Allooloo. Authorization: Bearer .

NameRequiredDescriptionDefault
toNo
fromNo
monthNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context annotations do not carry: the Bearer <customer key> auth requirement and the exact contents of the returned statement, plus that a signature is issued by Allooloo. However, annotations declare readOnlyHint=false and idempotentHint=false, and the description never explains what non-read-only behavior occurs (e.g., whether issuing a statement consumes state or why repeated calls are not idempotent).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence packs purpose, input formats, return contents, and auth with essentially no filler. It is long but dense; the parenthetical format notes are placed where they are needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 0% schema description coverage, the description compensates by enumerating returned fields and the auth header. Remaining gaps are defaults for the optional parameters and the behavior behind the non-read-only/non-idempotent hints, which one more clause could close.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter burden, and it does: month format YYYY-MM, from/to format YYYY-MM-DD, and the non-obvious detail that 'to' is exclusive. It does not state whether the modes are mutually exclusive or what happens if none are supplied (all params optional).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete resource and scope: a signed statement over the caller's slice for a month or a date range, and enumerates exactly what the statement contains (count, seq bounds, digest, chain tip, Ed25519 signature). It is distinguishable from list_receipts/verify_receipt/write_receipt, though it never explicitly routes away from those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage by presenting two mutually acceptable input modes (month YYYY-MM, or from/to with to exclusive), which tells an agent how to parameterize the call. It gives no when-to-use vs when-not guidance and no mention of the sibling tools, so the choice of this tool over list_receipts/verify_receipt is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

issue_auditor_keyAInspect

Issue a read-only sub-key on your own slice for your auditor (list_receipts and get_statement only). Authorization: Bearer . The key value is returned once.

NameRequiredDescriptionDefault
nameNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, so the agent knows this is a mutation; the description adds real value beyond them by specifying the Bearer auth requirement, the read-only scope of the resulting key, and the critical one-time-only return of the key value. It does not mention expiry or revocation, which would complete the picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with purpose, then auth, then the one-time return caveat. Nothing repeats the title or wastes tokens.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly volunteers that the key value is returned once, which is the most important return-value fact. The remaining gap is the unexplained 'name' parameter, the only input the caller must supply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'name' has 0% schema description coverage and the description never mentions it at all — it does not say whether the name labels the auditor, the key, or is required. With a low-coverage schema the description must compensate, and here it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('issue a read-only sub-key'), names the scope ('on your own slice'), the recipient, and the exact capability set. An agent can distinguish it from list_receipts/get_statement/write_receipt without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context for when to use it — provisioning an auditor with a restricted key — and the permission ceiling is spelled out. No explicit exclusion such as an alternative provisioning path, but the intended usage is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_receiptsA
Read-onlyIdempotent
Inspect

Your own receipts only — the rows whose caller is your customer key — by seq range (from_seq, to_seq, after_seq) or date range (from, to: YYYY-MM-DD, to inclusive), limit ≤ 500. Authorization: Bearer . Refuses without a key.

NameRequiredDescriptionDefault
toNo
fromNo
limitNo
to_seqNo
from_seqNo
after_seqNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds meaningful context beyond annotations: results are restricted to the caller's own customer key, Bearer auth is required, and requests without a key are refused.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences and front-loads the ownership scope before the operational details. Every clause—range modes, date format, limit cap, and auth requirement—carries useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter read-only list tool with no output schema, the description covers scope, both filter families, auth, and the limit cap. Return shape/ordering and default limit are not stated, but annotations and the tool name make the read operation sufficiently clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across six optional parameters, so the description must carry the burden. It documents from/to as YYYY-MM-DD with inclusive to, limit capped at 500, and groups from_seq/to_seq/after_seq as seq-range parameters; after_seq cursor semantics and defaults remain somewhat implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list receipts) and scopes it to rows whose caller is the customer key. It does not explicitly name sibling tools or contrast with get_statement/verify_receipt, so sibling differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the two filtering modes (seq range or date range), the limit ≤ 500, and the Bearer auth requirement. However, it does not say when to choose seq versus date filtering, nor name alternatives such as get_statement or verify_receipt, leaving tool selection partly inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_receiptA
Read-onlyIdempotent
Inspect

Return one receipt by id (rco:… for v1, dec_… for v0) with the verification result (hash, id, signature) and the public key (JWK) that checks it. Public.

NameRequiredDescriptionDefault
idYesrco:… or dec_…

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new context: the call is unauthenticated ('Public.') and it returns both the verification result and the checking public key. No rate limits or error behavior, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the action and return payload, with no filler; the one-word 'Public.' earns its place as an auth signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on the burden of describing return values and does so (hash, id, signature, JWK). Authentication is covered; only error/not-found behavior is absent, which is minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds the mapping the schema lacks: 'rco:… for v1, dec_… for v0', telling the agent which id prefix corresponds to which receipt version.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (return one receipt by id) and enumerates what comes back (verification result fields plus the JWK). The singular 'one receipt' implicitly separates it from list_receipts, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The id-prefix hints and the trailing 'Public.' imply when this tool applies and that no auth is needed, but there is no explicit when-to-use statement or comparison to list_receipts/search alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_receiptA
Idempotent
Inspect

Write one v1 receipt for a read a gate has cleared. Authenticated: Authorization: Bearer . Idempotent on (writer, subject, subject_type, market, rule_version, cleared_at, answer_hash). Returns the receipt.

NameRequiredDescriptionDefault
callerNowho asked, when the gate knows it: x402:<wallet address>; stored only as its sha256
marketNoISO country or exchange code of the read
subjectYeswhat was read: the identifier (an ISIN, LEI, GTIN, ticker, record id …)
caller_keyNothe customer key the reader presented to the gate (RCO-Key); the door checks it and stores sha256("key:" + key id) as caller
cleared_atNoRFC 3339 UTC; stored to the second; the door's clock when absent
answer_hashNosha256:<hex> of the canonical answer bytes the agent received
rule_versionYesthe rule set and version the gate cleared under
subject_typeYesisin | lei | gtin | ticker | cmr | … (open list)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes meaningfully beyond the annotations: annotations only declare idempotent/non-destructive/non-readOnly, while the description adds the Bearer writer-token auth requirement, the exact idempotency key tuple, and what is returned. It omits failure modes (what happens on a duplicate or a rejected token), so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, all front-loaded and load-bearing: purpose, auth, idempotency key, return. No filler or restatement of the tool name beyond the necessary scope statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Auth and idempotency are well covered and annotations carry the safety profile, but there is no output schema and 'Returns the receipt' does not describe the returned shape or key fields. For an 8-parameter mutation with an open-ended subject_type, that leaves a real gap for an agent that needs to chain verify_receipt afterwards.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3, but the description adds genuinely new semantics by enumerating which fields compose the idempotency key (writer, subject, subject_type, market, rule_version, cleared_at, answer_hash), which the schema does not state. 'writer' is also mapped to the token implicitly, though caller/caller_key interplay is left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Write one v1 receipt for a read a gate has cleared' — which clearly distinguishes a write from the sibling reads/verifications (list_receipts, verify_receipt, get_statement). It does not explicitly name those siblings, and 'v1 receipt' / 'gate' assume domain familiarity, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a read a gate has cleared' implies a precondition for use, and the auth header requirement is stated, but there is no explicit when-to-use guidance, no mention of when not to write a receipt, and no routing versus verify_receipt or list_receipts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Addedget_statement
    • Addedissue_auditor_key
    • Addedlist_receipts
    • Changedverify_receipt3 fields changed
      • removedInput schema / properties / decision_id
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / id
        Added value: +{
        +  "description": "rco:… or dec_…",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "decision_id"
        -]New value: +[
        +  "id"
        +]
    • Changedwrite_receipt12 fields changed
      • removedInput schema / properties / actor_class
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / answer_hash
        Added value: +{
        +  "description": "sha256:<hex> of the canonical answer bytes the agent received",
        +  "type": "string"
        +}
      • addedInput schema / properties / caller
        Added value: +{
        +  "description": "who asked, when the gate knows it: x402:<wallet address>; stored only as its sha256",
        +  "type": "string"
        +}
      • addedInput schema / properties / caller_key
        Added value: +{
        +  "description": "the customer key the reader presented to the gate (RCO-Key); the door checks it and stores sha256(\"key:\" + key id) as caller",
        +  "type": "string"
        +}
      • changedInput schema / properties / cleared_at / description
        Previous value: -"RFC 3339 UTC; the door's clock when absent"New value: +"RFC 3339 UTC; stored to the second; the door's clock when absent"
      • removedInput schema / properties / decision_id
        Removed value: -{
        -  "description": "the gate's decision id (dec_<hex>); minted here when absent",
        -  "type": "string"
        -}
      • removedInput schema / properties / gtin
        Removed value: -{
        -  "description": "the cleared object's identifier (a GTIN on goods rails; the ISIN or issuer identifier on a market door)",
        -  "type": "string"
        -}
      • changedInput schema / properties / market / description
        Previous value: -"ISO 3166-1 alpha-2 market code"New value: +"ISO country or exchange code of the read"
      • changedInput schema / properties / rule_version / description
        Previous value: -"the rule set and version the gate applied"New value: +"the rule set and version the gate cleared under"
      • addedInput schema / properties / subject
        Added value: +{
        +  "description": "what was read: the identifier (an ISIN, LEI, GTIN, ticker, record id …)",
        +  "type": "string"
        +}
      • addedInput schema / properties / subject_type
        Added value: +{
        +  "description": "isin | lei | gtin | ticker | cmr | … (open list)",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "gtin",
        -  "actor_class",
        -  "rule_version"
        -]New value: +[
        +  "subject",
        +  "subject_type",
        +  "rule_version"
        +]
  2. 3 tool updates
    • Removedget_receipt
    • Addedverify_receipt
    • Changedwrite_receipt9 fields changed
      • addedInput schema / properties / actor_class
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / cleared_at
        Added value: +{
        +  "description": "RFC 3339 UTC; the door's clock when absent",
        +  "type": "string"
        +}
      • addedInput schema / properties / decision_id
        Added value: +{
        +  "description": "the gate's decision id (dec_<hex>); minted here when absent",
        +  "type": "string"
        +}
      • addedInput schema / properties / gtin
        Added value: +{
        +  "description": "the cleared object's identifier (a GTIN on goods rails; the ISIN or issuer identifier on a market door)",
        +  "type": "string"
        +}
      • addedInput schema / properties / market
        Added value: +{
        +  "description": "ISO 3166-1 alpha-2 market code",
        +  "type": "string"
        +}
      • removedInput schema / properties / receipt
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "properties": {
        -        "actor_class": {
        -          "description": "for which actor class (never a person)",
        -          "type": "string"
        -        },
        -        "decided_at": {
        -          "type": "string"
        -        },
        -        "decision_id": {
        -          "description": "the id the issuing door gave the decision",
        -          "pattern": "^dec_[a-f0-9]{16,40}$",
        -          "type": "string"
        -        },
        -        "issuing_door": {
        -          "type": "string"
        -        },
        -        "object": {
        -          "description": "what was cleared: a GTIN, an ISIN, a product id",
        -          "properties": {
        -            "id": {
        -              "type": "string"
        -            },
        -            "type": {
        -              "enum": [
        -                "isin",
        -                "ticker",
        -                "lei",
        -                "cmr",
        -                "gtin",
        -                "product",
        -                "identifier"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "type",
        -            "id"
        -          ],
        -          "type": "object"
        -        },
        -        "records_read": {
        -          "description": "the records read, each with its signature (or null where the record carries none)",
        -          "items": {
        -            "properties": {
        -              "as_of": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "sha256": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "signature": {
        -                "type": [
        -                  "object",
        -                  "null"
        -                ]
        -              },
        -              "url": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "url"
        -            ],
        -            "type": "object"
        -          },
        -          "type": "array"
        -        },
        -        "rule": {
        -          "description": "the rule object and version the decision was made under",
        -          "properties": {
        -            "id": {
        -              "type": "string"
        -            },
        -            "version": {
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "id",
        -            "version"
        -          ],
        -          "type": "object"
        -        },
        -        "signal": {
        -          "pattern": "^ACM-(000|200|300|403|404|451|500)$",
        -          "type": "string"
        -        },
        -        "signature": {
        -          "description": "the issuing door's detached JWS (EdDSA) over the receipt's canonical JSON (keys sorted, compact) without signature, signature_check, ledger, receipt_url, page",
        -          "properties": {
        -            "alg": {
        -              "type": "string"
        -            },
        -            "jws": {
        -              "type": "string"
        -            },
        -            "keyring": {
        -              "type": "string"
        -            },
        -            "kid": {
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "decision_id",
        -        "object",
        -        "actor_class",
        -        "rule",
        -        "records_read",
        -        "signal",
        -        "decided_at",
        -        "issuing_door",
        -        "signature"
        -      ],
        -      "type": "object"
        -    },
        -    {
        -      "properties": {
        -        "actor_class": {
        -          "type": "string"
        -        },
        -        "decided_at": {
        -          "type": "string"
        -        },
        -        "decision_id": {
        -          "description": "the hub gate decision id",
        -          "pattern": "^gate_[a-f0-9]{16,40}$",
        -          "type": "string"
        -        },
        -        "gtin": {
        -          "pattern": "^[0-9]{14}$",
        -          "type": "string"
        -        },
        -        "hub": {
        -          "enum": [
        -            "a2a-grocery",
        -            "a2a-cosmetics",
        -            "a2a-peptides"
        -          ],
        -          "type": "string"
        -        },
        -        "hub_signature": {
        -          "description": "the hub's detached JWS over the receipt (keys sorted, compact JSON), verified against the hub keyring",
        -          "properties": {
        -            "alg": {
        -              "type": "string"
        -            },
        -            "jws": {
        -              "type": "string"
        -            },
        -            "kid": {
        -              "type": "string"
        -            }
        -          },
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "market": {
        -          "pattern": "^[A-Z]{2}$",
        -          "type": "string"
        -        },
        -        "reason_code": {
        -          "type": "string"
        -        },
        -        "record": {
        -          "description": "the gtinfetch answer the decision read: source_page, fetch_date, status, kid",
        -          "properties": {
        -            "fetch_date": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "kid": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "source_page": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            }
        -          },
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "result": {
        -          "type": "string"
        -        },
        -        "rule_set": {
        -          "properties": {
        -            "id": {
        -              "type": "string"
        -            },
        -            "version": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            }
        -          },
        -          "required": [
        -            "id"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "decision_id",
        -        "hub",
        -        "gtin",
        -        "market",
        -        "actor_class",
        -        "result",
        -        "reason_code",
        -        "rule_set",
        -        "decided_at"
        -      ],
        -      "type": "object"
        -    }
        -  ],
        -  "description": "a door receipt (dec_ id, x-door-key) or a hub receipt (gate_ id, x-hub-key)",
        -  "type": "object"
        -}
      • addedInput schema / properties / rule_version
        Added value: +{
        +  "description": "the rule set and version the gate applied",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "receipt"
        -]New value: +[
        +  "gtin",
        +  "actor_class",
        +  "rule_version"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "properties": {
        -    "decision_id": {
        -      "type": "string"
        -    },
        -    "idempotent": {
        -      "type": "boolean"
        -    },
        -    "ledger": {
        -      "type": "object"
        -    },
        -    "page": {
        -      "type": "string"
        -    },
        -    "receipt_url": {
        -      "type": "string"
        -    },
        -    "written": {
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "written",
        -    "decision_id",
        -    "receipt_url",
        -    "ledger"
        -  ],
        -  "type": "object"
        -}New value: +null
  3. 2 tool updates
    • Changedget_receipt11 fields changed
      • changedInput schema / properties / decision_id / pattern
        Previous value: -"^gate_[a-f0-9]{16,40}$"New value: +"^(gate|dec)_[a-f0-9]{16,40}$"
      • addedOutput schema / properties / actor_class / description
        Added value: +"for which actor class (never a person)"
      • removedOutput schema / properties / decision_id / description
        Removed value: -"the hub gate decision id"
      • removedOutput schema / properties / decision_id / pattern
        Removed value: -"^gate_[a-f0-9]{16,40}$"
      • addedOutput schema / properties / issuing_door
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / object
        Added value: +{
        +  "description": "what was cleared: a GTIN, an ISIN, a product id",
        +  "properties": {
        +    "id": {
        +      "type": "string"
        +    },
        +    "type": {
        +      "enum": [
        +        "isin",
        +        "ticker",
        +        "lei",
        +        "cmr",
        +        "gtin",
        +        "product",
        +        "identifier"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "type",
        +    "id"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / records_read
        Added value: +{
        +  "description": "the records read, each with its signature (or null where the record carries none)",
        +  "items": {
        +    "properties": {
        +      "as_of": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sha256": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "signature": {
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / rule
        Added value: +{
        +  "description": "the rule object and version the decision was made under",
        +  "properties": {
        +    "id": {
        +      "type": "string"
        +    },
        +    "version": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "version"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / signal
        Added value: +{
        +  "pattern": "^ACM-(000|200|300|403|404|451|500)$",
        +  "type": "string"
        +}
      • addedOutput schema / properties / signature
        Added value: +{
        +  "description": "the issuing door's detached JWS (EdDSA) over the receipt's canonical JSON (keys sorted, compact) without signature, signature_check, ledger, receipt_url, page",
        +  "properties": {
        +    "alg": {
        +      "type": "string"
        +    },
        +    "jws": {
        +      "type": "string"
        +    },
        +    "keyring": {
        +      "type": "string"
        +    },
        +    "kid": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "decision_id",
        -  "hub",
        -  "gtin",
        -  "market",
        -  "result",
        -  "reason_code",
        -  "ledger"
        -]New value: +[
        +  "decision_id",
        +  "ledger"
        +]
    • Changedwrite_receipt4 fields changed
      • addedInput schema / properties / receipt / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "actor_class": {
        +        "description": "for which actor class (never a person)",
        +        "type": "string"
        +      },
        +      "decided_at": {
        +        "type": "string"
        +      },
        +      "decision_id": {
        +        "description": "the id the issuing door gave the decision",
        +        "pattern": "^dec_[a-f0-9]{16,40}$",
        +        "type": "string"
        +      },
        +      "issuing_door": {
        +        "type": "string"
        +      },
        +      "object": {
        +        "description": "what was cleared: a GTIN, an ISIN, a product id",
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "type": {
        +            "enum": [
        +              "isin",
        +              "ticker",
        +              "lei",
        +              "cmr",
        +              "gtin",
        +              "product",
        +              "identifier"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "id"
        +        ],
        +        "type": "object"
        +      },
        +      "records_read": {
        +        "description": "the records read, each with its signature (or null where the record carries none)",
        +        "items": {
        +          "properties": {
        +            "as_of": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "sha256": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "signature": {
        +              "type": [
        +                "object",
        +                "null"
        +              ]
        +            },
        +            "url": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "url"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "rule": {
        +        "description": "the rule object and version the decision was made under",
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "version": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "version"
        +        ],
        +        "type": "object"
        +      },
        +      "signal": {
        +        "pattern": "^ACM-(000|200|300|403|404|451|500)$",
        +        "type": "string"
        +      },
        +      "signature": {
        +        "description": "the issuing door's detached JWS (EdDSA) over the receipt's canonical JSON (keys sorted, compact) without signature, signature_check, ledger, receipt_url, page",
        +        "properties": {
        +          "alg": {
        +            "type": "string"
        +          },
        +          "jws": {
        +            "type": "string"
        +          },
        +          "keyring": {
        +            "type": "string"
        +          },
        +          "kid": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "decision_id",
        +      "object",
        +      "actor_class",
        +      "rule",
        +      "records_read",
        +      "signal",
        +      "decided_at",
        +      "issuing_door",
        +      "signature"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "actor_class": {
        +        "type": "string"
        +      },
        +      "decided_at": {
        +        "type": "string"
        +      },
        +      "decision_id": {
        +        "description": "the hub gate decision id",
        +        "pattern": "^gate_[a-f0-9]{16,40}$",
        +        "type": "string"
        +      },
        +      "gtin": {
        +        "pattern": "^[0-9]{14}$",
        +        "type": "string"
        +      },
        +      "hub": {
        +        "enum": [
        +          "a2a-grocery",
        +          "a2a-cosmetics",
        +          "a2a-peptides"
        +        ],
        +        "type": "string"
        +      },
        +      "hub_signature": {
        +        "description": "the hub's detached JWS over the receipt (keys sorted, compact JSON), verified against the hub keyring",
        +        "properties": {
        +          "alg": {
        +            "type": "string"
        +          },
        +          "jws": {
        +            "type": "string"
        +          },
        +          "kid": {
        +            "type": "string"
        +          }
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "market": {
        +        "pattern": "^[A-Z]{2}$",
        +        "type": "string"
        +      },
        +      "reason_code": {
        +        "type": "string"
        +      },
        +      "record": {
        +        "description": "the gtinfetch answer the decision read: source_page, fetch_date, status, kid",
        +        "properties": {
        +          "fetch_date": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "kid": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source_page": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "status": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "result": {
        +        "type": "string"
        +      },
        +      "rule_set": {
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "version": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "decision_id",
        +      "hub",
        +      "gtin",
        +      "market",
        +      "actor_class",
        +      "result",
        +      "reason_code",
        +      "rule_set",
        +      "decided_at"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / receipt / description
        Added value: +"a door receipt (dec_ id, x-door-key) or a hub receipt (gate_ id, x-hub-key)"
      • removedInput schema / properties / receipt / properties
        Removed value: -{
        -  "actor_class": {
        -    "type": "string"
        -  },
        -  "decided_at": {
        -    "type": "string"
        -  },
        -  "decision_id": {
        -    "description": "the hub gate decision id",
        -    "pattern": "^gate_[a-f0-9]{16,40}$",
        -    "type": "string"
        -  },
        -  "gtin": {
        -    "pattern": "^[0-9]{14}$",
        -    "type": "string"
        -  },
        -  "hub": {
        -    "enum": [
        -      "a2a-grocery",
        -      "a2a-cosmetics",
        -      "a2a-peptides"
        -    ],
        -    "type": "string"
        -  },
        -  "hub_signature": {
        -    "description": "the hub's detached JWS over the receipt (keys sorted, compact JSON), verified against the hub keyring",
        -    "properties": {
        -      "alg": {
        -        "type": "string"
        -      },
        -      "jws": {
        -        "type": "string"
        -      },
        -      "kid": {
        -        "type": "string"
        -      }
        -    },
        -    "type": [
        -      "object",
        -      "null"
        -    ]
        -  },
        -  "market": {
        -    "pattern": "^[A-Z]{2}$",
        -    "type": "string"
        -  },
        -  "reason_code": {
        -    "type": "string"
        -  },
        -  "record": {
        -    "description": "the gtinfetch answer the decision read: source_page, fetch_date, status, kid",
        -    "properties": {
        -      "fetch_date": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "kid": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "source_page": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "status": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": [
        -      "object",
        -      "null"
        -    ]
        -  },
        -  "result": {
        -    "type": "string"
        -  },
        -  "rule_set": {
        -    "properties": {
        -      "id": {
        -        "type": "string"
        -      },
        -      "version": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "required": [
        -      "id"
        -    ],
        -    "type": "object"
        -  }
        -}
      • removedInput schema / properties / receipt / required
        Removed value: -[
        -  "decision_id",
        -  "hub",
        -  "gtin",
        -  "market",
        -  "actor_class",
        -  "result",
        -  "reason_code",
        -  "rule_set",
        -  "decided_at"
        -]
  4. 2 tool updates
    • First observedget_receipt
    • First observedwrite_receipt

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Issue and verify signed receipts for agent actions, enabling durable, independently checkable proof of policy decisions. Supports offline verification via get_keyset and verify_receipt tools without an account.
    0
    Inno Setup
  • A
    license
    A
    quality
    C
    maintenance
    Provides tools to issue, verify, and export cryptographically signed receipts for AI agent actions, enabling tamper-proof audit trails for compliance with regulations like the EU AI Act.
    4
    26 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to create cryptographically verifiable receipts of their delegated work, with capabilities for multi-party approval and offline verification.
    11
    29 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides cryptographic governance receipts for AI agents, enabling pre-execution evaluation and signed verdicts (EXECUTE/BLOCK/REVIEW/SHADOW) with offline-verifiable audit trails.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.