Skip to main content
Glama

AINumbers Fintech Intelligence Suite

Agent Identity & Authorization Attestation Checker

check_agent_attestation
Read-onlyIdempotent

Agent Identity & Authorization Attestation Checker: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2027-12 (EU AI Act Annex III high-risk obligations (Digital Omnibus, Parliament final approval June 2026) push agent KYA toward compliance requirement from 2 December 2027; KYA-OS donated to DIF March 2026). Deterministic OpenChainGraph compute node. By default (compute:"auto") inputs are computed server-side on Cloudflare Workers for gpu:false nodes with a registered kernel; compute:"browser" forces client-side execution and returns a browser delegation URL instead. gpu:true nodes always delegate to the browser. Inputs are processed transiently to compute the response and are not stored, logged, or retained. Use synthetic or anonymised inputs only. Exports an AP2 artifact with execution_hash for chain provenance. Consumes upstream artifacts from: art-01-ap2-mandate-chain-validator, art-02-agent-spend-policy-simulator, art-13-eudi-wallet-credential-readiness-checker. Output feeds: art-02-agent-spend-policy-simulator, art-32-a2a-agent-card-trust-chain-validator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-04-agent-identity-attestation-checker.html FV-status (published/proven/still-trusted for this spec): /fv-status/ca4e1dca8343f788a296161f0e19712f7afb7e5eaec0431081e715a4cc34b784.json — a snapshot, not a subscription; this receipt verifies offline regardless of whether that file is ever fetched. Summary: KYA-OS (DIF Trusted AI Agents WG) credential-chain attestation: delegated-authority credential chain, scope limits, validity windows (max 90 days), chain depth cap (4 hops), EU AI Act high-risk scope classification. Outputs: overall_status, pass, fail, warn, checks, root_agent_id, scopes. Output schema: call describe_tool("check_agent_attestation").

Input Schema

NameRequiredDescriptionDefault
computeNoCompute mode (v0.4 Compute Binding). "auto" (default) = server for gpu:false nodes with registered kernels; "server" = force server-side; "browser" = always return browser delegation URL. gpu:true nodes always delegate.
parent_hashesNoexecution_hash values from upstream ChainGraph AP2 artifacts to chain from (sets chain.parent_hashes in the export).
parent_tool_idsNotool_id values matching parent_hashes, in the same order.
policy_parametersNoInput parameters for this tool's decision function. For gpu:false nodes with a registered kernel, these are computed server-side when compute is "auto" or "server". Required: credential, validate_at_unix. Unknown keys are refused.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. Changed3 schema fields changed
    • changedInput schema / properties / policy_parameters / description
      Previous value: -"Input parameters for this tool's decision function. For gpu:false nodes with a registered kernel, these are computed server-side when compute is \"auto\" or \"server\". See the tool's manifest for field names."New value: +"Input parameters for this tool's decision function. For gpu:false nodes with a registered kernel, these are computed server-side when compute is \"auto\" or \"server\". Required: credential, validate_at_unix. Unknown keys are refused."
    • addedInput schema / properties / policy_parameters / properties
      Added value: +{
      +  "credential": {},
      +  "validate_at_unix": {}
      +}
    • removedInput schema / properties / policy_parameters / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "checks": {
      -      "items": {
      -        "properties": {
      -          "code": {
      -            "type": "string"
      -          },
      -          "status": {
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "fail": {
      -      "type": "integer"
      -    },
      -    "overall_status": {
      -      "type": "string"
      -    },
      -    "pass": {
      -      "type": "integer"
      -    },
      -    "root_agent_id": {
      -      "type": "string"
      -    },
      -    "scopes": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "warn": {
      -      "type": "integer"
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "checks": {
      +      "items": {
      +        "properties": {
      +          "code": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "fail": {
      +      "type": "integer"
      +    },
      +    "overall_status": {
      +      "type": "string"
      +    },
      +    "pass": {
      +      "type": "integer"
      +    },
      +    "root_agent_id": {
      +      "type": "string"
      +    },
      +    "scopes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "warn": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  5. Changed3 schema fields changed
    • addedInput schema / properties / compute
      Added value: +{
      +  "description": "Compute mode (v0.4 Compute Binding). \"auto\" (default) = server for gpu:false nodes with registered kernels; \"server\" = force server-side; \"browser\" = always return browser delegation URL. gpu:true nodes always delegate.",
      +  "enum": [
      +    "auto",
      +    "server",
      +    "browser"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / inputs
      Removed value: -{
      -  "additionalProperties": {},
      -  "description": "Simulation parameters for this tool's input fields. See the tool's embedded manifest for field names.",
      -  "propertyNames": {
      -    "type": "string"
      -  },
      -  "type": "object"
      -}
    • addedInput schema / properties / policy_parameters
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Input parameters for this tool's decision function. For gpu:false nodes with a registered kernel, these are computed server-side when compute is \"auto\" or \"server\". See the tool's manifest for field names.",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
  6. Added

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, but the description adds real value beyond them: server-side vs browser compute delegation semantics, the guarantee that inputs 'are not stored, logged, or retained,' determinism of the compute node, and the AP2 artifact with execution_hash emitted on export. The privacy/data-handling and delegation behavior are exactly the kind of context annotations cannot convey; it stops short only of describing failure modes or error behavior.

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

Conciseness2/5

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

A large share of the text is regulatory boilerplate—deadline 2027-12, Digital Omnibus, Parliament approval June 2026, KYA-OS donated to DIF March 2026, FV-status hash path—that does not help an agent decide or invoke. The genuinely useful summary of what the tool checks is buried at the very end rather than front-loaded, forcing the reader past multiple paragraphs of provenance before reaching the operation.

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?

The description names the returned fields (overall_status, pass, fail, warn, checks, root_agent_id, scopes) and points to describe_tool for the full output shape, which compensates for the absence of an output schema. Combined with the stated validity-window and chain-depth rules and the compute-mode explanation, an agent has enough to call it correctly; only explicit error/failure handling is missing.

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% and there are no required parameters, so baseline is 3. The description repeats the compute-mode semantics (auto/server/browser) and restates that credential and validate_at_unix are required, both of which are already in the schema, adding little new meaning for how to shape inputs.

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?

The closing summary states the specific operation precisely: 'KYA-OS credential-chain attestation: delegated-authority credential chain, scope limits, validity windows (max 90 days), chain depth cap (4 hops), EU AI Act high-risk scope classification.' That is a concrete verb-plus-resource with the checks it performs. It does not, however, explicitly differentiate itself from close siblings such as verify_acdc_delegation_chain, check_agent_token_scope, or validate_agent_obo_mandate, which an agent picking among many attestation tools needs.

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?

Usage is only implied through pipeline metadata: 'Consumes upstream artifacts from art-01-ap2-mandate-chain-validator...' and 'Output feeds: art-02-agent-spend-policy-simulator...' tells an agent where this sits in a chain but not when to prefer it over alternatives. There is no explicit when-to-use or when-not guidance, and no statement of prerequisites for the credential being attested.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.