Anchor a content-creation event to the Knox chain; returns a C2PA-aligned, FRE 902-shaped bundle.
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 any creation event to the Knox event chain and return a provenance bundle. Three creation modes are supported: human_original (camera capture, original writing, recording), ai_generated (model + prompt + parameters anchored), and ai_assisted_hybrid (human-AI collaboration with edit chain). Returns the Knox anchor record, a C2PA-aligned envelope, and an FRE 902(13)/(14)-shape affidavit. Bonis Systems anchors what creators present; it does not adjudicate authorship, does not grant copyright, and does not enforce any IP claim. Requires a Knox Bearer API key on the Authorization header — unauthenticated calls are rejected.
Display name for the work (max 256 chars).
Creation source.
SHA-256 digest of the content as 64 lowercase hex chars. The content itself is not transmitted.
AI-generation metadata (required when source = ai_generated).
Human-original metadata (optional when source = human_original).
Hybrid-creation metadata (required when source = ai_assisted_hybrid).
Content size in bytes.
MIME type (max 128 chars).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Anchor any creation event to the Knox event chain and return a provenance bundle. Three creation modes are supported: human_original (camera capture, original writing, recording), ai_generated (model + prompt + parameters anchored), and ai_assisted_hybrid (human-AI collaboration with edit chain). Returns the Knox anchor record, a C2PA-aligned envelope, and an FRE 902(13)/(14)-shape affidavit. Bonis Systems anchors what creators present; it does not adjudicate authorship, does not grant copyright, and does not enforce any IP claim. Requires a Knox Bearer API key on the Authorization header — unauthenticated calls are rejected.
| Argument | Type | Description |
|---|---|---|
| ai | object | AI-generation metadata (required when source = ai_generated). |
| name* | string | Display name for the work (max 256 chars). |
| human | object | Human-original metadata (optional when source = human_original). |
| hybrid | object | Hybrid-creation metadata (required when source = ai_assisted_hybrid). |
| source* | string | Creation source. |
| sizeBytes | integer | Content size in bytes. |
| contentHash* | string | SHA-256 digest of the content as 64 lowercase hex chars. The content itself is not transmitted. |
| contentType | string | MIME type (max 128 chars). |
{
"type": "object",
"required": [
"name",
"contentHash",
"source"
],
"properties": {
"ai": {
"type": "object",
"properties": {
"model": {
"type": "string",
"description": "Model identifier (e.g., openai/sora-2, google/veo-3)."
},
"prompt": {
"type": "string",
"description": "Plain-text prompt (will be hashed in the anchor)."
},
"provider": {
"type": "string",
"description": "Provider name."
},
"parameters": {
"type": "object",
"description": "Model parameters (hashed in the anchor)."
},
"promptHash": {
"type": "string",
"description": "Pre-hashed prompt (preferred for privacy)."
},
"generatedAt": {
"type": "string",
"description": "ISO timestamp from the provider."
},
"providerReceiptId": {
"type": "string",
"description": "Provider's job/run ID."
}
},
"description": "AI-generation metadata (required when source = ai_generated)."
},
"name": {
"type": "string",
"description": "Display name for the work (max 256 chars)."
},
"human": {
"type": "object",
"properties": {
"captureAt": {
"type": "string",
"description": "ISO timestamp of capture."
},
"authorClaim": {
"type": "string",
"description": "Author identity claim (name, DID, etc.)."
},
"captureMethod": {
"type": "string",
"description": "Camera / device / instrument used."
},
"captureLocation": {
"type": "string",
"description": "Location string; hashed before anchoring."
}
},
"description": "Human-original metadata (optional when source = human_original)."
},
"hybrid": {
"type": "object",
"required": [
"humanContribution",
"aiContribution"
],
"properties": {
"ai": {
"type": "object",
"description": "Optional AI metadata (same shape as 'ai')."
},
"editChain": {
"type": "array",
"items": {
"type": "object",
"required": [
"description",
"at"
],
"properties": {
"at": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"description": "Optional edit-history entries; hashed."
},
"aiContribution": {
"type": "string",
"description": "Description of the AI's role."
},
"humanContribution": {
"type": "string",
"description": "Description of the human creative role."
}
},
"description": "Hybrid-creation metadata (required when source = ai_assisted_hybrid)."
},
"source": {
"enum": [
"human_original",
"ai_generated",
"ai_assisted_hybrid"
],
"type": "string",
"description": "Creation source."
},
"sizeBytes": {
"type": "integer",
"minimum": 0,
"description": "Content size in bytes."
},
"contentHash": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "SHA-256 digest of the content as 64 lowercase hex chars. The content itself is not transmitted."
},
"contentType": {
"type": "string",
"description": "MIME type (max 128 chars)."
}
},
"additionalProperties": false
}Verify an anchored content-provenance record. Given a SHA-256 anchor hash (the payload_hash from a prior anchor_creation call), return the anchor record, predecessor hash, sequence number, and timestamp. Public — no authentication required. The verification path itself is also accessible at GET /api/knox/verify?hash=<hash>.
| 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
}