Skip to main content
Glama

Server Details

Signed declarations of agent execution steps for verifiable handoffs. Free preparation and verification; receipt issuance costs 0.002 USDC via x402 on Base. MCP, REST and A2A. Connect: https://datoka.dev/agent. Signatures do not independently verify execution.

Ownership verified
Status
Healthy
Uptime
100.0% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation4/5

The two verify tools (verify_agent_receipt vs verify_proof_receipt) are the closest pair, but descriptions explicitly distinguish the issuer-native receipt from the common proof-envelope format. prepare_agent_event vs issue_agent_receipt is also clearly delineated as free validation versus paid issuance.

Naming Consistency5/5

All five tools follow a strict snake_case verb_noun pattern (get_, issue_, prepare_, verify_). The convention is applied uniformly with no deviations.

Tool Count5/5

Five tools cleanly map to a receipt lifecycle: key retrieval, preparation, issuance, and two verification paths. Each earns its place with no redundancy.

Completeness4/5

The surface covers key discovery, pre-flight validation, issuance, and verification of both receipt formats, forming a coherent lifecycle. Minor gaps exist around revocation or listing of issued receipts, but core workflows are covered.

Available Tools

5 tools
get_agent_public_keysGet Agent Public KeysA
Read-onlyIdempotent
Inspect

Return public keys of this issuer. The operator must establish trust in this issuer independently.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
keysYes
issuerYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered. The description adds genuinely useful behavioral context beyond that: the keys identify 'this issuer' and the operator must independently establish trust in that issuer, a security-relevant caveat not derivable from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero waste; the purpose is front-loaded and the trust caveat follows immediately. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and there are no parameters to document. The description is complete enough to call the tool correctly; it could go slightly further on key freshness/rotation or the expected trust-verification workflow, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so per the rubric the baseline is 4. There is nothing parameter-wise for the description to clarify, and it correctly adds no spurious parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Return') and resource ('public keys of this issuer'), so the agent can tell it apart from the receipt-issuing/verifying siblings, which operate on different artifacts. It does not explicitly name a sibling, but none is confusable with this one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trust caveat implies the usage context (obtaining issuer keys to establish trust out-of-band), but there is no explicit when-to-use statement, no prerequisites, and no alternatives — there simply is no sibling alternative. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

issue_agent_receiptIssue Agent ReceiptA
Idempotent
Inspect

Persist a signed execution declaration receipt. Public price: 0.002 USDC via x402 on the advertised network. Preserve event, idempotencyKey and payment authorization on retries. Signed declarations do not independently prove execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventYesCommitment-only declaration of one execution step.
idempotencyKeyYesPersist this unique key before purchase. Reuse unchanged with the same input and payment authorization after interruption.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover safety and idempotency (readOnly=false, idempotent=true, openWorld=true), and the description adds traits those annotations cannot express: a mandatory per-call price (0.002 USDC via x402), the need to carry payment authorization across retries, and the epistemic caveat that signed declarations do not prove execution. These are materially useful behavioral disclosures beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, correctly front-loaded with the purpose before cost, retry, and caveat details. Nearly every clause earns its place, with only slight repetition of the payment point that the schema cannot cover.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with a deep nested schema, no output schema, and full parameter coverage, the description supplies the pieces the schema cannot: price/network, retry persistence rules, and the trust limitation of the receipt. An agent has enough to decide whether to call and how to retry safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both top-level parameters and the nested event fields in depth. The description reiterates event/idempotencyKey and adds retry/payment semantics, but does not clarify the nested commitment-only structure beyond what the schema already states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Persist a signed execution declaration receipt'), which is clear on its own. However it does not distinguish itself from siblings like issue_proof_receipt or prepare_agent_event, so an agent must infer the boundary between an 'agent receipt' and a 'proof receipt'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives operational guidance on retries ('Preserve event, idempotencyKey and payment authorization on retries'), which is a genuine when-doing-X instruction. But it never says when to choose this over issue_proof_receipt or what precondition ('payment authorization') gates a call, so routing is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_agent_eventPrepare Agent EventA
Read-onlyIdempotent
Inspect

Free validation of a locally built execution declaration before issuance. Hash exact input and output bytes locally; supply identifiers and UTC timestamps with milliseconds. Returns the validated event, commitment and logical chain without creating or purchasing a receipt. Use issue_agent_receipt only if a portable signed declaration is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventYesCommitment-only declaration of one execution step.

Output Schema

ParametersJSON Schema
NameRequiredDescription
chainYes
eventYesCommitment-only declaration of one execution step.
commitmentYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds real value beyond them: this is free, it does not create or purchase a receipt, and it operates on locally computed hashes rather than raw input. It stops short of describing what the returned commitment/chain look like or any limits, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the purpose then the operational constraint, then the alternative tool. Nothing is wasted, though the hashing/timestamp sentence partly restates schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description still names them (validated event, commitment, logical chain). Combined with annotations and full schema coverage, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single nested event object is thoroughly documented field-by-field. The description reiterates the key constraints (local hashing, identifiers, UTC timestamps with milliseconds) but adds no format detail the schema does not already carry, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: free validation of a locally built execution declaration before issuance. It also names the sibling it is not (issue_agent_receipt) and the condition that selects it, so an agent can distinguish it from the receipt-issuing tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing: use issue_agent_receipt only when a portable signed declaration is needed, implying this tool is the earlier/cheaper validation step. It also states the precondition that hashes must be computed locally, which is guidance the agent needs before calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_agent_receiptVerify Agent ReceiptA
Read-onlyIdempotent
Inspect

Free verification of an execution event and its unchanged receipt returned by issue_agent_receipt. Checks signature, scope and event commitment against this issuer. No wallet or new issuance required. Use verify_proof_receipt for the distinct common proof-envelope format. A valid signature does not independently prove execution; compare original bytes locally.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventYesCommitment-only declaration of one execution step.
receiptYesSigned Datoka receipt; verify against independently trusted keys.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runIdYesStable identifier for this execution run.
scopeYes
validYes
stepIdYesStable identifier of the step within the run.
agentIdYesIdentifier of the declaring agent, not an independently verified identity.
receiptIdYes
attestationYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (read-only, idempotent, non-destructive), and the description adds genuinely new behavior: what is actually checked (signature, scope, event commitment), that it is free, and the critical caveat that a valid signature does not independently prove execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five tight sentences, front-loaded with purpose and scope, then prerequisites, then the alternative-tool routing, then the trust caveat. Every sentence carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be described; the description instead supplies the routing, prerequisite, and trust-model context the structured fields cannot. Complete for a two-parameter verification tool with rich schema and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across both parameters, with detailed nested field docs, so the schema carries the parameter burden. The description references the receipt and the checks performed but adds no field-level syntax or format detail beyond it, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (verify) and resource (an execution event plus its unchanged receipt) and pins the origin to issue_agent_receipt. It also distinguishes itself from the sibling verify_proof_receipt, which handles the proof-envelope format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use verify_proof_receipt for the distinct proof-envelope format, and notes no wallet or new issuance is required, making the cost/prerequisite model clear. It even signals the trusted-key dependency ('against this issuer').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_proof_receiptVerify Proof ReceiptA
Read-onlyIdempotent
Inspect

Free verification of a common Datoka proof against an independently obtained caller-supplied public trust registry and explicit issuer/scope/chain. Send only the proof, never raw documents. receiptVerified concerns signature, context and dates; status remains incomplete because the artifact is checked locally. No payment, factual accuracy or parent signatures are verified.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoOptional expected logical chain identifier. Omit only when no chain restriction is required.
proofYesUnmodified common Datoka proof envelope; do not send its raw artifact.
scopeYesExpected scope authorized by the caller-supplied trust registry.
trustYesPublic trust registry obtained independently from a trusted source, not accepted merely because it accompanies this proof.
issuerYesExpected trusted issuer identifier; must match the trust registry and proof.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
checksYes
statusYes
receiptIdNo
trustSourceYes
receiptVerifiedYes
artifactHandlingYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive, and the description goes well beyond them: it is free, it verifies signature/context/dates only, returns an incomplete status because verification is local, and requires an independently obtained registry rather than one accompanying the proof. These are meaningful behavioral traits an agent cannot get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the core action and scope, then the input rule, then output semantics, then explicit exclusions. No filler; every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return structure needn't be restated, yet the description still explains the key result fields (receiptVerified vs incomplete status). Combined with the trust-independence rule and exclusion list, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic meaning: 'trust' must be independently sourced and not trusted merely because it accompanies the proof, and issuer/scope/chain are the explicit expected bindings. It clarifies intent behind the structured params rather than merely restating them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('verification of a common Datoka proof') and the exact basis of verification (caller-supplied public trust registry plus explicit issuer/scope/chain). This clearly distinguishes it from sibling verify_agent_receipt and issue_proof_receipt without needing the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete input constraint ('Send only the proof, never raw documents') and explicitly bounds the operation ('No payment, factual accuracy or parent signatures are verified'), which tells the agent when this tool is not sufficient. It stops short of naming the alternative sibling tool to use in those cases, so it is slightly below the top tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Removedissue_proof_receipt
  2. 5 tool updates
    • Changedissue_agent_receipt1 field changed
      • addedInput schema / properties / event / properties / version / description
        Added value: +"Declaration format version; preserve this literal."
    • Changedissue_proof_receipt2 fields changed
      • addedInput schema / properties / chain / description
        Added value: +"Logical proof-chain identifier within the authenticated pilot scope; not a blockchain network."
      • addedInput schema / properties / statement / description
        Added value: +"Commitment-only proof statement; compute artifact and source hashes locally. Preserve dates and unique parent receipt identifiers."
    • Changedprepare_agent_event2 fields changed
      • addedInput schema / properties / event / properties / version / description
        Added value: +"Declaration format version; preserve this literal."
      • addedOutput schema / properties / event / properties / version / description
        Added value: +"Declaration format version; preserve this literal."
    • Changedverify_agent_receipt1 field changed
      • addedInput schema / properties / event / properties / version / description
        Added value: +"Declaration format version; preserve this literal."
    • Changedverify_proof_receipt5 fields changed
      • addedInput schema / properties / chain / description
        Added value: +"Optional expected logical chain identifier. Omit only when no chain restriction is required."
      • addedInput schema / properties / issuer / description
        Added value: +"Expected trusted issuer identifier; must match the trust registry and proof."
      • addedInput schema / properties / proof / description
        Added value: +"Unmodified common Datoka proof envelope; do not send its raw artifact."
      • addedInput schema / properties / scope / description
        Added value: +"Expected scope authorized by the caller-supplied trust registry."
      • addedInput schema / properties / trust / description
        Added value: +"Public trust registry obtained independently from a trusted source, not accepted merely because it accompanies this proof."
  3. 6 tool updates
    • Changedget_agent_public_keys2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedissue_agent_receipt16 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / event / description
        Added value: +"Commitment-only declaration of one execution step."
      • addedInput schema / properties / event / properties / agentId / description
        Added value: +"Identifier of the declaring agent, not an independently verified identity."
      • addedInput schema / properties / event / properties / completedAt / description
        Added value: +"Declared completion in UTC with milliseconds, at or after start."
      • addedInput schema / properties / event / properties / inputHash / description
        Added value: +"SHA-256 of the exact input bytes, computed locally. Never send raw input."
      • addedInput schema / properties / event / properties / inputHash / properties / algorithm / description
        Added value: +"Hash algorithm."
      • addedInput schema / properties / event / properties / inputHash / properties / digest / description
        Added value: +"64 lowercase hexadecimal characters; SHA-256 of exact bytes."
      • addedInput schema / properties / event / properties / outcome / description
        Added value: +"Outcome declared by the caller; Datoka does not observe execution."
      • addedInput schema / properties / event / properties / outputHash / description
        Added value: +"SHA-256 of exact output bytes, computed locally. Never send raw output."
      • addedInput schema / properties / event / properties / outputHash / properties / algorithm / description
        Added value: +"Hash algorithm."
      • addedInput schema / properties / event / properties / outputHash / properties / digest / description
        Added value: +"64 lowercase hexadecimal characters; SHA-256 of exact bytes."
      • addedInput schema / properties / event / properties / runId / description
        Added value: +"Stable identifier for this execution run."
      • addedInput schema / properties / event / properties / startedAt / description
        Added value: +"Declared start time in UTC, with milliseconds."
      • addedInput schema / properties / event / properties / stepId / description
        Added value: +"Stable identifier of the step within the run."
      • addedInput schema / properties / event / properties / tool / description
        Added value: +"Tool or operation identifier declared by the caller."
      • addedInput schema / properties / idempotencyKey / description
        Added value: +"Persist this unique key before purchase. Reuse unchanged with the same input and payment authorization after interruption."
    • Changedissue_proof_receipt2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / idempotencyKey / description
        Added value: +"Persist this unique key before purchase. Reuse unchanged with the same input and payment authorization after interruption."
    • Changedprepare_agent_event30 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / event / description
        Added value: +"Commitment-only declaration of one execution step."
      • addedInput schema / properties / event / properties / agentId / description
        Added value: +"Identifier of the declaring agent, not an independently verified identity."
      • addedInput schema / properties / event / properties / completedAt / description
        Added value: +"Declared completion in UTC with milliseconds, at or after start."
      • addedInput schema / properties / event / properties / inputHash / description
        Added value: +"SHA-256 of the exact input bytes, computed locally. Never send raw input."
      • addedInput schema / properties / event / properties / inputHash / properties / algorithm / description
        Added value: +"Hash algorithm."
      • addedInput schema / properties / event / properties / inputHash / properties / digest / description
        Added value: +"64 lowercase hexadecimal characters; SHA-256 of exact bytes."
      • addedInput schema / properties / event / properties / outcome / description
        Added value: +"Outcome declared by the caller; Datoka does not observe execution."
      • addedInput schema / properties / event / properties / outputHash / description
        Added value: +"SHA-256 of exact output bytes, computed locally. Never send raw output."
      • addedInput schema / properties / event / properties / outputHash / properties / algorithm / description
        Added value: +"Hash algorithm."
      • addedInput schema / properties / event / properties / outputHash / properties / digest / description
        Added value: +"64 lowercase hexadecimal characters; SHA-256 of exact bytes."
      • addedInput schema / properties / event / properties / runId / description
        Added value: +"Stable identifier for this execution run."
      • addedInput schema / properties / event / properties / startedAt / description
        Added value: +"Declared start time in UTC, with milliseconds."
      • addedInput schema / properties / event / properties / stepId / description
        Added value: +"Stable identifier of the step within the run."
      • addedInput schema / properties / event / properties / tool / description
        Added value: +"Tool or operation identifier declared by the caller."
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / properties / event / description
        Added value: +"Commitment-only declaration of one execution step."
      • addedOutput schema / properties / event / properties / agentId / description
        Added value: +"Identifier of the declaring agent, not an independently verified identity."
      • addedOutput schema / properties / event / properties / completedAt / description
        Added value: +"Declared completion in UTC with milliseconds, at or after start."
      • addedOutput schema / properties / event / properties / inputHash / description
        Added value: +"SHA-256 of the exact input bytes, computed locally. Never send raw input."
      • addedOutput schema / properties / event / properties / inputHash / properties / algorithm / description
        Added value: +"Hash algorithm."
      • addedOutput schema / properties / event / properties / inputHash / properties / digest / description
        Added value: +"64 lowercase hexadecimal characters; SHA-256 of exact bytes."
      • addedOutput schema / properties / event / properties / outcome / description
        Added value: +"Outcome declared by the caller; Datoka does not observe execution."
      • addedOutput schema / properties / event / properties / outputHash / description
        Added value: +"SHA-256 of exact output bytes, computed locally. Never send raw output."
      • addedOutput schema / properties / event / properties / outputHash / properties / algorithm / description
        Added value: +"Hash algorithm."
      • addedOutput schema / properties / event / properties / outputHash / properties / digest / description
        Added value: +"64 lowercase hexadecimal characters; SHA-256 of exact bytes."
      • addedOutput schema / properties / event / properties / runId / description
        Added value: +"Stable identifier for this execution run."
      • addedOutput schema / properties / event / properties / startedAt / description
        Added value: +"Declared start time in UTC, with milliseconds."
      • addedOutput schema / properties / event / properties / stepId / description
        Added value: +"Stable identifier of the step within the run."
      • addedOutput schema / properties / event / properties / tool / description
        Added value: +"Tool or operation identifier declared by the caller."
    • Changedverify_agent_receipt20 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / event / description
        Added value: +"Commitment-only declaration of one execution step."
      • addedInput schema / properties / event / properties / agentId / description
        Added value: +"Identifier of the declaring agent, not an independently verified identity."
      • addedInput schema / properties / event / properties / completedAt / description
        Added value: +"Declared completion in UTC with milliseconds, at or after start."
      • addedInput schema / properties / event / properties / inputHash / description
        Added value: +"SHA-256 of the exact input bytes, computed locally. Never send raw input."
      • addedInput schema / properties / event / properties / inputHash / properties / algorithm / description
        Added value: +"Hash algorithm."
      • addedInput schema / properties / event / properties / inputHash / properties / digest / description
        Added value: +"64 lowercase hexadecimal characters; SHA-256 of exact bytes."
      • addedInput schema / properties / event / properties / outcome / description
        Added value: +"Outcome declared by the caller; Datoka does not observe execution."
      • addedInput schema / properties / event / properties / outputHash / description
        Added value: +"SHA-256 of exact output bytes, computed locally. Never send raw output."
      • addedInput schema / properties / event / properties / outputHash / properties / algorithm / description
        Added value: +"Hash algorithm."
      • addedInput schema / properties / event / properties / outputHash / properties / digest / description
        Added value: +"64 lowercase hexadecimal characters; SHA-256 of exact bytes."
      • addedInput schema / properties / event / properties / runId / description
        Added value: +"Stable identifier for this execution run."
      • addedInput schema / properties / event / properties / startedAt / description
        Added value: +"Declared start time in UTC, with milliseconds."
      • addedInput schema / properties / event / properties / stepId / description
        Added value: +"Stable identifier of the step within the run."
      • addedInput schema / properties / event / properties / tool / description
        Added value: +"Tool or operation identifier declared by the caller."
      • addedInput schema / properties / receipt / description
        Added value: +"Signed Datoka receipt; verify against independently trusted keys."
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / properties / agentId / description
        Added value: +"Identifier of the declaring agent, not an independently verified identity."
      • addedOutput schema / properties / runId / description
        Added value: +"Stable identifier for this execution run."
      • addedOutput schema / properties / stepId / description
        Added value: +"Stable identifier of the step within the run."
    • Changedverify_proof_receipt2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  4. 2 tool updates
    • Changedissue_agent_receipt1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "event": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "agentId": {
        -          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -          "type": "string"
        -        },
        -        "completedAt": {
        -          "format": "date-time",
        -          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
        -          "type": "string"
        -        },
        -        "inputHash": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "algorithm": {
        -              "const": "sha256",
        -              "type": "string"
        -            },
        -            "digest": {
        -              "pattern": "^[a-f0-9]{64}$",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "algorithm",
        -            "digest"
        -          ],
        -          "type": "object"
        -        },
        -        "outcome": {
        -          "enum": [
        -            "success",
        -            "error"
        -          ],
        -          "type": "string"
        -        },
        -        "outputHash": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "algorithm": {
        -              "const": "sha256",
        -              "type": "string"
        -            },
        -            "digest": {
        -              "pattern": "^[a-f0-9]{64}$",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "algorithm",
        -            "digest"
        -          ],
        -          "type": "object"
        -        },
        -        "runId": {
        -          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -          "type": "string"
        -        },
        -        "startedAt": {
        -          "format": "date-time",
        -          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
        -          "type": "string"
        -        },
        -        "stepId": {
        -          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -          "type": "string"
        -        },
        -        "tool": {
        -          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -          "type": "string"
        -        },
        -        "version": {
        -          "const": "datoka.agent.execution.v1",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "version",
        -        "agentId",
        -        "runId",
        -        "stepId",
        -        "tool",
        -        "outcome",
        -        "startedAt",
        -        "completedAt",
        -        "inputHash",
        -        "outputHash"
        -      ],
        -      "type": "object"
        -    },
        -    "receipt": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "algorithm": {
        -          "const": "Ed25519",
        -          "type": "string"
        -        },
        -        "body": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "id": {
        -              "format": "uuid",
        -              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        -              "type": "string"
        -            },
        -            "issuedAt": {
        -              "format": "date-time",
        -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
        -              "type": "string"
        -            },
        -            "issuer": {
        -              "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -              "type": "string"
        -            },
        -            "keyId": {
        -              "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -              "type": "string"
        -            },
        -            "previous": {
        -              "anyOf": [
        -                {
        -                  "pattern": "^[a-f0-9]{64}$",
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "request": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "chain": {
        -                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -                  "type": "string"
        -                },
        -                "eventType": {
        -                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -                  "type": "string"
        -                },
        -                "scope": {
        -                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -                  "type": "string"
        -                },
        -                "subject": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "algorithm": {
        -                      "const": "sha256",
        -                      "type": "string"
        -                    },
        -                    "digest": {
        -                      "pattern": "^[a-f0-9]{64}$",
        -                      "type": "string"
        -                    },
        -                    "encoding": {
        -                      "enum": [
        -                        "jcs",
        -                        "bytes"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "algorithm",
        -                    "encoding",
        -                    "digest"
        -                  ],
        -                  "type": "object"
        -                }
        -              },
        -              "required": [
        -                "scope",
        -                "chain",
        -                "eventType",
        -                "subject"
        -              ],
        -              "type": "object"
        -            },
        -            "sequence": {
        -              "exclusiveMinimum": 0,
        -              "maximum": 9007199254740991,
        -              "type": "integer"
        -            },
        -            "version": {
        -              "const": "datoka.receipt.v1",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "version",
        -            "id",
        -            "issuer",
        -            "keyId",
        -            "issuedAt",
        -            "request",
        -            "sequence",
        -            "previous"
        -          ],
        -          "type": "object"
        -        },
        -        "signature": {
        -          "pattern": "^[A-Za-z0-9_-]{86}$",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "body",
        -        "algorithm",
        -        "signature"
        -      ],
        -      "type": "object"
        -    }
        -  },
        -  "required": [
        -    "event",
        -    "receipt"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedissue_proof_receipt1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "receipt": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "algorithm": {
        -          "const": "Ed25519",
        -          "type": "string"
        -        },
        -        "body": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "id": {
        -              "format": "uuid",
        -              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        -              "type": "string"
        -            },
        -            "issuedAt": {
        -              "format": "date-time",
        -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
        -              "type": "string"
        -            },
        -            "issuer": {
        -              "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -              "type": "string"
        -            },
        -            "keyId": {
        -              "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -              "type": "string"
        -            },
        -            "previous": {
        -              "anyOf": [
        -                {
        -                  "pattern": "^[a-f0-9]{64}$",
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "request": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "chain": {
        -                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -                  "type": "string"
        -                },
        -                "eventType": {
        -                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -                  "type": "string"
        -                },
        -                "scope": {
        -                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
        -                  "type": "string"
        -                },
        -                "subject": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "algorithm": {
        -                      "const": "sha256",
        -                      "type": "string"
        -                    },
        -                    "digest": {
        -                      "pattern": "^[a-f0-9]{64}$",
        -                      "type": "string"
        -                    },
        -                    "encoding": {
        -                      "enum": [
        -                        "jcs",
        -                        "bytes"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "algorithm",
        -                    "encoding",
        -                    "digest"
        -                  ],
        -                  "type": "object"
        -                }
        -              },
        -              "required": [
        -                "scope",
        -                "chain",
        -                "eventType",
        -                "subject"
        -              ],
        -              "type": "object"
        -            },
        -            "sequence": {
        -              "exclusiveMinimum": 0,
        -              "maximum": 9007199254740991,
        -              "type": "integer"
        -            },
        -            "version": {
        -              "const": "datoka.receipt.v1",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "version",
        -            "id",
        -            "issuer",
        -            "keyId",
        -            "issuedAt",
        -            "request",
        -            "sequence",
        -            "previous"
        -          ],
        -          "type": "object"
        -        },
        -        "signature": {
        -          "pattern": "^[A-Za-z0-9_-]{86}$",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "body",
        -        "algorithm",
        -        "signature"
        -      ],
        -      "type": "object"
        -    },
        -    "statement": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "artifact": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "algorithm": {
        -              "const": "sha256",
        -              "type": "string"
        -            },
        -            "digest": {
        -              "pattern": "^[a-f0-9]{64}$",
        -              "type": "string"
        -            },
        -            "encoding": {
        -              "enum": [
        -                "bytes",
        -                "jcs"
        -              ],
        -              "type": "string"
        -            },
        -            "mediaType": {
        -              "maxLength": 512,
        -              "minLength": 1,
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "algorithm",
        -            "encoding",
        -            "digest",
        -            "mediaType"
        -          ],
        -          "type": "object"
        -        },
        -        "attestation": {
        -          "const": "signed_declaration",
        -          "type": "string"
        -        },
        -        "createdAt": {
        -          "format": "date-time",
        -          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
        -          "type": "string"
        -        },
        -        "independentlyVerified": {
        -          "const": false,
        -          "type": "boolean"
        -        },
        -        "parentReceipts": {
        -          "items": {
        -            "pattern": "^[a-f0-9]{64}$",
        -            "type": "string"
        -          },
        -          "maxItems": 64,
        -          "type": "array"
        -        },
        -        "references": {
        -          "items": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "kind": {
        -                "enum": [
        -                  "payment",
        -                  "authorization",
        -                  "anchor"
        -                ],
        -                "type": "string"
        -              },
        -              "protocol": {
        -                "maxLength": 512,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "reference": {
        -                "maxLength": 512,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "kind",
        -              "protocol",
        -              "reference"
        -            ],
        -            "type": "object"
        -          },
        -          "maxItems": 16,
        -          "type": "array"
        -        },
        -        "sources": {
        -          "items": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "description": {
        -                "maxLength": 512,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "retrievedAt": {
        -                "format": "date-time",
        -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
        -                "type": "string"
        -              },
        -              "snapshot": {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "algorithm": {
        -                    "const": "sha256",
        -                    "type": "string"
        -                  },
        -                  "digest": {
        -                    "pattern": "^[a-f0-9]{64}$",
        -                    "type": "string"
        -                  },
        -                  "encoding": {
        -                    "enum": [
        -                      "bytes",
        -                      "jcs"
        -                    ],
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "algorithm",
        -                  "encoding",
        -                  "digest"
        -                ],
        -                "type": "object"
        -              },
        -              "uri": {
        -                "format": "uri",
        -                "maxLength": 2048,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "uri",
        -              "retrievedAt"
        -            ],
        -            "type": "object"
        -          },
        -          "maxItems": 64,
        -          "type": "array"
        -        },
        -        "transformations": {
        -          "items": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "id": {
        -                "maxLength": 512,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "version": {
        -                "maxLength": 512,
        -                "minLength": 1,
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "id"
        -            ],
        -            "type": "object"
        -          },
        -          "maxItems": 32,
        -          "type": "array"
        -        },
        -        "validUntil": {
        -          "format": "date-time",
        -          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
        -          "type": "string"
        -        },
        -        "version": {
        -          "const": "datoka.proof.v0.1",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "version",
        -        "createdAt",
        -        "artifact",
        -        "sources",
        -        "transformations",
        -        "parentReceipts",
        -        "attestation",
        -        "independentlyVerified",
        -        "references"
        -      ],
        -      "type": "object"
        -    }
        -  },
        -  "required": [
        -    "statement",
        -    "receipt"
        -  ],
        -  "type": "object"
        -}New value: +null
  5. 1 tool update
    • Addedverify_proof_receipt
  6. 1 tool update
    • Addedissue_proof_receipt
  7. 4 tool updates
    • First observedget_agent_public_keys
    • First observedissue_agent_receipt
    • First observedprepare_agent_event
    • First observedverify_agent_receipt

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to create cryptographically verifiable receipts of their delegated work, with capabilities for multi-party approval and offline verification.
    11
    60 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    Cryptographic verification for AI agent actions — ECDSA-secp256k1 signed Action Receipts anchored on Base, multi-dimensional trust vectors, capability tokens, and offline-verifiable on-chain proof. 29 tools.
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides cryptographic governance receipts for AI agents, enabling pre-execution evaluation and signed verdicts (EXECUTE/BLOCK/REVIEW/SHADOW) with offline-verifiable audit trails.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources