Bitcoin-anchored, tamper-evident audit-permanence layer for AI agents, FRE 902(13)/(14)-shaped.
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.
Anchor a generic agent action to the Knox chain. Accepts any event_type from the canonical taxonomy plus a payload object. Returns the anchor sequence, payload hash, predecessor hash, timestamp, and verify URL. Requires a Knox Bearer API key on the Authorization header — unauthenticated calls are rejected. Provision a key by contacting Bonis Systems.
JSON-serializable payload describing the agent action. Hashed verbatim into the chain; do not include secrets — the payload is recoverable on verify.
Canonical event type (call list_event_types to enumerate). Free-form strings are accepted but not federal-citation-grade.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Anchor a generic agent action to the Knox chain. Accepts any event_type from the canonical taxonomy plus a payload object. Returns the anchor sequence, payload hash, predecessor hash, timestamp, and verify URL. Requires a Knox Bearer API key on the Authorization header — unauthenticated calls are rejected. Provision a key by contacting Bonis Systems.
| Argument | Type | Description |
|---|---|---|
| payload* | object | JSON-serializable payload describing the agent action. Hashed verbatim into the chain; do not include secrets — the payload is recoverable on verify. |
| event_type* | string | Canonical event type (call list_event_types to enumerate). Free-form strings are accepted but not federal-citation-grade. |
{
"type": "object",
"required": [
"event_type",
"payload"
],
"properties": {
"payload": {
"type": "object",
"description": "JSON-serializable payload describing the agent action. Hashed verbatim into the chain; do not include secrets — the payload is recoverable on verify."
},
"event_type": {
"type": "string",
"description": "Canonical event type (call list_event_types to enumerate). Free-form strings are accepted but not federal-citation-grade."
}
},
"additionalProperties": false
}Anchor a SHA-256 file digest to Knox and return an affidavit architected for FRE 902(13)/(14) self-authentication. The file itself is not transmitted — the caller computes the hash and only the digest + filename + size + MIME type are anchored. Admissibility in any matter remains a determination of the presiding court. Requires a Knox Bearer API key on the Authorization header — unauthenticated calls are rejected.
| Argument | Type | Description |
|---|---|---|
| hash* | string | SHA-256 file digest (64 lowercase hex chars). |
| filename | string | Original filename (max 256 chars). |
| mime_type | string | MIME type (max 128 chars). |
| size_bytes | integer | File size in bytes. |
{
"type": "object",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "SHA-256 file digest (64 lowercase hex chars)."
},
"filename": {
"type": "string",
"description": "Original filename (max 256 chars)."
},
"mime_type": {
"type": "string",
"description": "MIME type (max 128 chars)."
},
"size_bytes": {
"type": "integer",
"minimum": 0,
"description": "File size in bytes."
}
},
"additionalProperties": false
}Convenience anchor for the AAM Model Context Protocol theater. Records an `agent_mcp_tool_call` event with structured tool-call metadata (server URL, tool name, argument digest, asserted agent identity, response digest). The record is sealed with a commitment to the authenticated principal that made the assertion, so a reader can tell WHO claimed it. Knox does not authenticate the named agent: this makes an assertion about an agent's actions independently checkable, not the agent itself independently identified.
| Argument | Type | Description |
|---|---|---|
| outcome* | string | Outcome of the tool call. |
| tool_name* | string | Name of the tool invoked. |
| server_url* | string | MCP server endpoint the agent invoked. |
| agent_identity* | string | Stable identifier the CALLER asserts for the agent (e.g., agent ID, principal, did:knox:agent-X). Recorded as an assertion attributed to your API key, never as an authenticated subject; the anchored payload carries agentIdentityVerified:false and a commitment to the asserting principal. |
| response_digest | string | Caller-computed SHA-256 of the JSON-stringified response (64 hex chars). |
| arguments_digest* | string | Caller-computed SHA-256 of the JSON-stringified arguments (64 hex chars). |
Return Knox service status (operational or degraded), total anchors written, the latest anchor timestamp, and the Bitcoin anchoring cadence (OpenTimestamps, 1-6 hour confirmation window). Mirrors the public /api/knox/health endpoint under the MCP envelope.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Return the Knox MCP server self-description: operator, USPTO patent reference, jurisdiction, available tools, and links to the public AAM (Agent Audit and Management) documentation surface.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Return the canonical Knox event-type taxonomy. Each event type is a citation token for federal-grade audit; the registry expands monotonically and is itself anchored on every expansion.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}THE TICK. Your own door posts a returned trip: the plan, the door's record (targets and keyed commitments, never content), its head, the trip nonce and the agent's report. The trip's departure must already be sealed under the same key as agent_trip_departed. Knox checks the plan and nonce against that departure, recomputes the record's hash chain, compares plan, record and report, and seals the verdict as agent_trip_returned: one stamp on your plan. A second return of the same trip is refused as REPLAY and not sealed. Knox never holds your trip key; check the MACs yourself with verify-agent-trip.mjs. Requires a Knox Bearer API key on the Authorization header.
| Argument | Type | Description |
|---|---|---|
| flow | string | Optional. "bsa" when the trip ran in a BSA flow; the departure must say the same. Only such trips can enter the examiner pack. |
| plan* | array | The flight plan, as sealed at departure: [{tool, ref, max?, optional?}]. |
| nonce* | string | The trip nonce held by your door. Knox checks it against the nonce hash sealed at departure; it is not stored. |
| report* | object | null | What the agent says it did: {actions?: [{tool, ref}], claimedKinds?: [kind], effects?: [{kind, ref, hash}]}, or null when it never reported back. |
| door_head* | string | The hash of the door's last observation (64 zeros for an empty record). |
| observations |
THE TICK. Given the returned seal (64 hex) or the trip id of a customer agent trip, return what Knox sealed when the trip came back: the verdict (LINES_UP or MISMATCH), the finding classes, the door head, when it was sealed, and the Bitcoin status of its hourly batch. Public, no key. The witness is door_observed: the door ran in the agent's own process. The comparison is the agent's report against what the door recorded, not against the outside system's answer.
| Argument | Type | Description |
|---|---|---|
| hash | string | The returned seal: the stamp code of the trip's agent_trip_returned (64 hex chars). |
| trip_id | string | The trip id the door minted at departure. |
{
"type": "object",
"properties": {
"hash": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "The returned seal: the stamp code of the trip's agent_trip_returned (64 hex chars)."
},
"trip_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,64}$",
"description": "The trip id the door minted at departure."
}
},
"additionalProperties": false
}Given a SHA-256 anchor hash (64 hex chars), return the anchor record, chain link validity (predecessor present and matched), event type, sequence number, and verify URL. Public — no authentication required.
| Argument | Type | Description |
|---|---|---|
| hash* | string | SHA-256 anchor hash (64 lowercase hex chars). |
{
"type": "object",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "SHA-256 anchor hash (64 lowercase hex chars)."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"server_url",
"tool_name",
"arguments_digest",
"agent_identity",
"outcome"
],
"properties": {
"outcome": {
"enum": [
"success",
"error",
"timeout",
"rejected"
],
"type": "string",
"description": "Outcome of the tool call."
},
"tool_name": {
"type": "string",
"description": "Name of the tool invoked."
},
"server_url": {
"type": "string",
"description": "MCP server endpoint the agent invoked."
},
"agent_identity": {
"type": "string",
"maxLength": 256,
"description": "Stable identifier the CALLER asserts for the agent (e.g., agent ID, principal, did:knox:agent-X). Recorded as an assertion attributed to your API key, never as an authenticated subject; the anchored payload carries agentIdentityVerified:false and a commitment to the asserting principal."
},
"response_digest": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "Caller-computed SHA-256 of the JSON-stringified response (64 hex chars)."
},
"arguments_digest": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "Caller-computed SHA-256 of the JSON-stringified arguments (64 hex chars)."
}
},
"additionalProperties": false
}| array |
| The door's record, in order: [{seq, tool, kind, ref, argsCommit, resultCommit, outcome, reason, at, prevHash, hash, mac}]. Targets and keyed commitments, never content. |
| departure_seal* | string | The stamp code of the trip's agent_trip_departed, sealed under your key before the agent's first action. |
{
"type": "object",
"required": [
"departure_seal",
"nonce",
"plan",
"observations",
"door_head",
"report"
],
"properties": {
"flow": {
"enum": [
"bsa"
],
"type": "string",
"description": "Optional. \"bsa\" when the trip ran in a BSA flow; the departure must say the same. Only such trips can enter the examiner pack."
},
"plan": {
"type": "array",
"maxItems": 200,
"description": "The flight plan, as sealed at departure: [{tool, ref, max?, optional?}]."
},
"nonce": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "The trip nonce held by your door. Knox checks it against the nonce hash sealed at departure; it is not stored."
},
"report": {
"type": [
"object",
"null"
],
"description": "What the agent says it did: {actions?: [{tool, ref}], claimedKinds?: [kind], effects?: [{kind, ref, hash}]}, or null when it never reported back."
},
"door_head": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "The hash of the door's last observation (64 zeros for an empty record)."
},
"observations": {
"type": "array",
"maxItems": 5000,
"description": "The door's record, in order: [{seq, tool, kind, ref, argsCommit, resultCommit, outcome, reason, at, prevHash, hash, mac}]. Targets and keyed commitments, never content."
},
"departure_seal": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "The stamp code of the trip's agent_trip_departed, sealed under your key before the agent's first action."
}
},
"additionalProperties": false
}