The record of what the agent relied on: a signed, chained receipt per cleared read. Verify by id.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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 <customer key>.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http rco-records https://mcp.rco-records.ai/mcp
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 <customer key>.
| Argument | Type | Description |
|---|---|---|
| to | string | |
| from | string | |
| month | string |
{
"type": "object",
"properties": {
"to": {
"type": "string"
},
"from": {
"type": "string"
},
"month": {
"type": "string"
}
}
}Issue a read-only sub-key on your own slice for your auditor (list_receipts and get_statement only). Authorization: Bearer <customer key>. The key value is returned once.
| Argument | Type | Description |
|---|---|---|
| name | string |
{
"type": "object",
"properties": {
"name": {
"type": "string"
}
}
}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 <customer key>. Refuses without a key.
| Argument | Type | Description |
|---|---|---|
| to | string | |
| from | string | |
| limit | integer | |
| to_seq | integer | |
| from_seq | integer | |
| after_seq | integer |
{
"type": "object",
"properties": {
"to": {
"type": "string"
},
"from": {
"type": "string"
},
"limit": {
"type": "integer"
},
"to_seq": {
"type": "integer"
},
"from_seq": {
"type": "integer"
},
"after_seq": {
"type": "integer"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | rco:… or dec_… |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "rco:… or dec_…"
}
}
}Write one v1 receipt for a read a gate has cleared. Authenticated: Authorization: Bearer <writer token>. Idempotent on (writer, subject, subject_type, market, rule_version, cleared_at, answer_hash). Returns the receipt.
| Argument | Type | Description |
|---|---|---|
| caller | string | who asked, when the gate knows it: x402:<wallet address>; stored only as its sha256 |
| market | string | ISO country or exchange code of the read |
| subject* | string | what was read: the identifier (an ISIN, LEI, GTIN, ticker, record id …) |
| caller_key | string | the customer key the reader presented to the gate (RCO-Key); the door checks it and stores sha256("key:" + key id) as caller |
| cleared_at | string | RFC 3339 UTC; stored to the second; the door's clock when absent |
| answer_hash | string | sha256:<hex> of the canonical answer bytes the agent received |
| rule_version* | string | the rule set and version the gate cleared under |
| subject_type* | string | isin | lei | gtin | ticker | cmr | … (open list) |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 30, 2026.
{
"type": "object",
"required": [
"subject",
"subject_type",
"rule_version"
],
"properties": {
"caller": {
"type": "string",
"description": "who asked, when the gate knows it: x402:<wallet address>; stored only as its sha256"
},
"market": {
"type": "string",
"description": "ISO country or exchange code of the read"
},
"subject": {
"type": "string",
"description": "what was read: the identifier (an ISIN, LEI, GTIN, ticker, record id …)"
},
"caller_key": {
"type": "string",
"description": "the customer key the reader presented to the gate (RCO-Key); the door checks it and stores sha256(\"key:\" + key id) as caller"
},
"cleared_at": {
"type": "string",
"description": "RFC 3339 UTC; stored to the second; the door's clock when absent"
},
"answer_hash": {
"type": "string",
"description": "sha256:<hex> of the canonical answer bytes the agent received"
},
"rule_version": {
"type": "string",
"description": "the rule set and version the gate cleared under"
},
"subject_type": {
"type": "string",
"description": "isin | lei | gtin | ticker | cmr | … (open list)"
}
}
}