Verify Seal AI decision receipts: signed evidence anyone can check, no account needed.
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.
Read a receipt field by field, with stated limits. Does not check the signature.
The receipt, as a JSON object or a JSON string.
Read a receipt field by field, with stated limits. Does not check the signature.
| Argument | Type | Description |
|---|---|---|
| receipt* | object | string | The receipt, as a JSON object or a JSON string. |
{
"type": "object",
"required": [
"receipt"
],
"properties": {
"receipt": {
"type": [
"object",
"string"
],
"description": "The receipt, as a JSON object or a JSON string."
}
}
}The receipt format: fields, outcomes, verification commands, and what a signature does not establish. Use before describing the format.
No arguments.
{
"type": "object",
"properties": {}
}Fetch the published Seal signing key.
No arguments.
{
"type": "object",
"properties": {}
}The published sample evidence pack: fixed review question, bound receipts, disclosure.
| Argument | Type | Description |
|---|---|---|
| pack_id | string | Pack id. Only the published "sample" pack is available without an account. |
{
"type": "object",
"properties": {
"pack_id": {
"type": "string",
"description": "Pack id. Only the published \"sample\" pack is available without an account."
}
}
}A genuine signed receipt from the sample workspace (demo key), for trying verification.
| Argument | Type | Description |
|---|---|---|
| outcome | string | Pick a sample with this outcome. A BLOCKED receipt was signed without the call reaching the provider. |
{
"type": "object",
"properties": {
"outcome": {
"enum": [
"ALLOWED",
"BLOCKED",
"SUPPRESSED"
],
"type": "string",
"description": "Pick a sample with this outcome. A BLOCKED receipt was signed without the call reaching the provider."
}
}
}Inclusion proof plus signed tree head for one of your receipts. Requires your aqta_ key.
| Argument | Type | Description |
|---|---|---|
| attestation_id* | string | The attestation_id of one of your receipts. |
{
"type": "object",
"required": [
"attestation_id"
],
"properties": {
"attestation_id": {
"type": "string",
"description": "The attestation_id of one of your receipts."
}
}
}List your workspace receipts filtered by outcome, policy, model, or date range. Requires your aqta_ key as Bearer.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max rows, default 25. |
| model | string | Only receipts for this model. |
| since | string | ISO timestamp lower bound. |
| until | string | ISO timestamp upper bound. |
| policy | string | Only receipts where this policy ran, e.g. pii_scan. |
| outcome | string | Only receipts with this outcome. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max rows, default 25."
},
"model": {
"type": "string",
"description": "Only receipts for this model."
},
"since": {
"type": "string",
"description": "ISO timestamp lower bound."
},
"until": {
"type": "string",
"description": "ISO timestamp upper bound."
},
"policy": {
"type": "string",
"description": "Only receipts where this policy ran, e.g. pii_scan."
},
"outcome": {
"enum": [
"ALLOWED",
"BLOCKED",
"SUPPRESSED",
"PASSED"
],
"type": "string",
"description": "Only receipts with this outcome."
}
}
}Verify a review pack receipt by receipt. Each verdict comes from the signed envelope itself, never from stored state, and results are per-receipt, never an average.
| Argument | Type | Description |
|---|---|---|
| pack | object | string | A pack object, or "sample" for the published sample pack. |
| public_key | string | Key to check every receipt against. Omit it to check each receipt against Seal's published issuer keys. |
{
"type": "object",
"properties": {
"pack": {
"type": [
"object",
"string"
],
"description": "A pack object, or \"sample\" for the published sample pack."
},
"public_key": {
"type": "string",
"description": "Key to check every receipt against. Omit it to check each receipt against Seal's published issuer keys."
}
}
}Check that a record still says what was signed: the permitted or refused decision, unchanged, under Seal's published issuer keys or a key you supply. Handles both formats: ATTESTATION-v1 (a model-call decision) and ACTION-v1 (an agent tool action). No Aqta service in the check.
| Argument | Type | Description |
|---|---|---|
| profile | string | Usually omit this. The record's own signed version tag selects the format, and ATTESTATION-v1 is the default. Pass 'ACTION-v1' only to force an agent-action record to be checked as one. |
| receipt* | object | string | The record, as a JSON object or a JSON string. |
| public_key | string | Base64url Ed25519 key to check against. Omit it to check against Seal's published issuer keys; a record carrying any other key then fails. A key you supply is used as given, and issuer_key in the result says whether it is a Seal issuer key. |
{
"type": "object",
"required": [
"receipt"
],
"properties": {
"profile": {
"type": "string",
"description": "Usually omit this. The record's own signed version tag selects the format, and ATTESTATION-v1 is the default. Pass 'ACTION-v1' only to force an agent-action record to be checked as one."
},
"receipt": {
"type": [
"object",
"string"
],
"description": "The record, as a JSON object or a JSON string."
},
"public_key": {
"type": "string",
"description": "Base64url Ed25519 key to check against. Omit it to check against Seal's published issuer keys; a record carrying any other key then fails. A key you supply is used as given, and issuer_key in the result says whether it is a Seal issuer key."
}
}
}Outcome, model and policy counts across your recent receipts. Requires your aqta_ key.
| Argument | Type | Description |
|---|---|---|
| limit | number | How many recent receipts to summarise, default 100. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "How many recent receipts to summarise, default 100."
}
}
}