Tamper-evident evidence log: signed heads, proofs, and recording salted digests of your records.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <your RiskRouter key>. Only needed to record; reading needs no key.
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.
The log's signed statement of one completeness chain as of the current head: its length and, for each position, the leaf, the time and the digest. A position nobody showed you is a record left out.
The chain's 64-hex tag.
Optional: the last position to list.
Optional: the first position to list.
The log's signed statement of one completeness chain as of the current head: its length and, for each position, the leaf, the time and the digest. A position nobody showed you is a record left out.
| Argument | Type | Description |
|---|---|---|
| to | integer | Optional: the last position to list. |
| from | integer | Optional: the first position to list. |
| chain_tag* | string | The chain's 64-hex tag. |
{
"type": "object",
"required": [
"chain_tag"
],
"properties": {
"to": {
"type": "integer",
"minimum": 0,
"description": "Optional: the last position to list."
},
"from": {
"type": "integer",
"minimum": 0,
"description": "Optional: the first position to list."
},
"chain_tag": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "The chain's 64-hex tag."
}
}
}The log's signed checkpoint in the C2SP format witnesses cosign (origin, size, root).
No arguments.
{
"type": "object",
"properties": {}
}Proof that the tree at size first is a prefix of the tree at size second (or now): the log never rewrote history.
| Argument | Type | Description |
|---|---|---|
| first* | integer | A tree size you hold a head for. |
| second | integer | Optional: a later tree size. |
{
"type": "object",
"required": [
"first"
],
"properties": {
"first": {
"type": "integer",
"minimum": 0,
"description": "A tree size you hold a head for."
},
"second": {
"type": "integer",
"minimum": 0,
"description": "Optional: a later tree size."
}
}
}The current signed head of the evidence log: tree size, Merkle root and signature. Save it: any later head must be consistent with it.
No arguments.
{
"type": "object",
"properties": {}
}Proof that the entry at leaf_index is in the tree, optionally at a given tree_size. Checkable offline with the public verifier.
| Argument | Type | Description |
|---|---|---|
| tree_size | integer | Optional: the tree size to prove against. |
| leaf_index* | integer | Position of the entry in the log. |
{
"type": "object",
"required": [
"leaf_index"
],
"properties": {
"tree_size": {
"type": "integer",
"minimum": 0,
"description": "Optional: the tree size to prove against."
},
"leaf_index": {
"type": "integer",
"minimum": 0,
"description": "Position of the entry in the log."
}
}
}The signed head hash of the hash-chained audit ledger of recorded quotes.
No arguments.
{
"type": "object",
"properties": {}
}How much is recorded, and by how many keys that are not ours. Counts only, nothing about anyone.
No arguments.
{
"type": "object",
"properties": {}
}Record the SHA-256 of a decision record you keep yourself, so it can later be shown to be unchanged. Send the digest and a short kind, never the record. Needs your RiskRouter key in the Authorization header of the MCP connection. Entries are permanent.
| Argument | Type | Description |
|---|---|---|
| kind* | string | A short tag such as ai.decision. |
| chain_seq | integer | Optional, with chain_tag: this record's position in its chain, from 1. |
| chain_tag | string | Optional: the completeness chain this record belongs to (64 hex characters derived from a secret you keep). |
| record_digest* | string | SHA-256 of your salted record, lowercase hex. Never the record itself. |
{
"type": "object",
"required": [
"record_digest",
"kind"
],
"properties": {
"kind": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9.-]{0,39}$",
"description": "A short tag such as ai.decision."
},
"chain_seq": {
"type": "integer",
"minimum": 1,
"description": "Optional, with chain_tag: this record's position in its chain, from 1."
},
"chain_tag": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "Optional: the completeness chain this record belongs to (64 hex characters derived from a secret you keep)."
},
"record_digest": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "SHA-256 of your salted record, lowercase hex. Never the record itself."
}
}
}