Skip to main content
Glama

AINumbers Fintech Intelligence Suite

Server Details

754 MCP tools across 1221 fintech tools: ChainGraph AP2 decisions, execution_hash. Zero PII.

Ownership verified
Status
Healthy
Uptime
99.7% over 71 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
PostOakLabs/ainumbers-mcp-apps
GitHub Stars
2
Server Listing
ainumbers-mcp-apps

TDQS

C2.8/5.0

Scored across 754 tools

Disambiguation2/5

With 754 tools there are many near-duplicate families whose boundaries blur in practice: check_genius_reserve_disclosure vs check_genius_reserve_disclosure_conformance, classify_settlement_finality vs classify_settlement_asset_finality vs classify_ledger_consensus_finality vs classify_bold_challenge_finality, calculate_solvency2_scr_ratio vs aggregate_solvency2_scr_modules, compute_rbc_action_level vs compute_rbc_action_level_private, plus '(v2)' and 'private-input' variants sitting beside their originals. Individual descriptions do differentiate most of these, but at this scale an agent will frequently pick the wrong sibling or a redundant node.

Naming Consistency3/5

Casing is consistently snake_case, which is good, but the verb vocabulary is sprawling (compute_/calculate_/check_/verify_/validate_/assess_/test_/score_ all used for near-identical actions) and several names break the verb_noun pattern (acdc_said_check, otlp_span_receipt, redline_diff, ha_gate_status, intoto_record_chain_run). Readable, but not a predictable scheme you can guess tool names from.

Tool Count1/5

754 tools is an extreme mismatch for any agent-facing surface — the listing is paginated across 13 pages and the server itself ships find_tool/call_tool/describe_tool purely to work around the fact that most clients never see the full catalog. Even with strong per-node scoping, this volume is far past what a coherent toolset can support.

Completeness4/5

The domain coverage is remarkably deep: regulatory diagnostics, compute nodes, validators, evidence-pack composers, verifiers, and chain orchestrators for essentially every fintech compliance area, plus meta-tools (find_chain, run_chain, build_chaingraph, verify_execution_hash) that close lifecycle and provenance gaps. Minor gaps are hard to identify rather than obvious, which is why it does not reach 5 for a set this sprawling and version-spaghetti'd.

Available Tools

754 tools
acdc_said_checkRecompute ACDC / vLEI credential SAIDs (structural integrity)A
Read-onlyIdempotent
Inspect

Agent-facing mirror of the tools/553 browser workbench (VS-1) -- recomputes the self-addressing identifiers (SAIDs) of a pasted ACDC / vLEI credential JSON (top-level "d" plus any nested a/e/r blocks) under the KERI/CESR Blake3-256 ("E") or SHA2-256 ("I") derivation codes, and cross-checks the declared schema SAID ("s") against a pinned table of 6 official GLEIF vLEI schema SAIDs. Reuses the SAME vendored SAID-check module as T553 -- the same credential produces byte-identical findings in either surface. Returns per-field match/mismatch/unsupported/unknown findings plus a receipt. This is a STRUCTURAL check only -- NOT the KERI chain of trust, NOT issuer authority, NOT revocation state. No network egress.

NameRequiredDescriptionDefault
credentialYesACDC / vLEI credential JSON object (v, d, i, ri, s, a, e, r fields).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description still adds real value: 'No network egress', a pinned table of exactly 6 GLEIF vLEI schema SAIDs, the finding vocabulary (match/mismatch/unsupported/unknown), and a receipt. The only gap is no indication of error behavior for malformed/unparseable credentials.

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

Conciseness3/5

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

Front-loaded with the core action and the crucial scope disclaimer lands well, but the first half is cluttered with internal references ('tools/553 browser workbench (VS-1)', 'T553', 'vendored SAID-check module') that give an external caller no actionable information. Trimming those would sharpen it without losing meaning.

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?

No output schema exists, and the description compensates by naming the return payload (per-field findings plus a receipt) and the full limitation set. Complete enough to call correctly; only the failure mode for invalid JSON is unaddressed.

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% and the single parameter is documented, so baseline would be 3. The description nonetheless adds domain meaning: which fields are SAID-checked (d, nested e/a/r, s) and that the s value is compared against a fixed external table, which tells the agent what a usable credential must contain.

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?

Specific verb+resource: 'recomputes the self-addressing identifiers (SAIDs) of a pasted ACDC / vLEI credential JSON', including which blocks (top-level d, nested a/e/r) and which derivation codes (E/I). It also explicitly bounds the scope against adjacent siblings (verify_acdc_delegation_chain, verify_revocation_status) by stating it is NOT chain-of-trust, issuer authority, or revocation.

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?

The exclusions ('STRUCTURAL check only -- NOT the KERI chain of trust, NOT issuer authority, NOT revocation state') give a clear use/don't-use boundary that helps an agent route elsewhere for those questions. However, no sibling tool is named as the alternative, so the routing is inferred rather than explicit.

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

adjudicate_emir_reconciliationEMIR Trade-Repository Reconciliation AdjudicatorC
Read-onlyIdempotent
Inspect

EMIR Trade-Repository Reconciliation Adjudicator: OpenChainGraph compute node (attestation_mandate). 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. Output feeds: art-483-emir-break-ageing. Open at: https://ainumbers.co/chaingraph/art-482-emir-recon-adjudicator.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: Under EMIR Refit the trade repository (TR) runs the inter-TR reconciliation and returns a daily ISO 20022 response naming matched/unreconciled fields per UTI -- a firm holds that TR response plus its own submitted state, never both counterparties' raw extracts. Outputs: as_of_date, break_count, break_set, field_tolerance_table_version, note, tr_disputed_count, tr_matched_count, trade_count, trades, verdict_disagrees_with_tr_count. Output schema: call describe_tool("adjudicate_emir_reconciliation").

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: firm_state, policy, tr_response. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, and the description still adds real context: server-side vs browser compute delegation, transient non-logged processing, and that an AP2 artifact with execution_hash is exported for chain provenance. The gap is that it never explains how the verdict is derived or what a disagreement with the TR means operationally.

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?

Dominated by infrastructure boilerplate — compute-node preamble, duplicated 'Deterministic OpenChainGraph compute node' sentence, an FV-status hash URL, and a documentation link — all placed ahead of the actual EMIR explanation. The valuable domain content sits near the end and is hard to reach.

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

Completeness3/5

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

Outputs are enumerated and describe_tool is pointed to for the schema, which covers return values adequately. But for a tool whose three nested inputs are untyped objects, the description should say what a firm_state, tr_response, or policy payload must contain; that omission is a meaningful gap for correct invocation.

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%, so the baseline is 3. The description does add some meaning by explaining that a firm holds a TR response plus its own submitted state, which hints at the firm_state and tr_response parameters, but it says nothing about the internal shape of the nested policy/firm_state/tr_response objects, which are declared as untyped open objects in the schema.

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

Purpose3/5

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

The domain summary explains the EMIR Refit inter-TR reconciliation context and lists concrete outputs (break_count, tr_disputed_count, verdict_disagrees_with_tr_count), so an agent can infer it adjudicates TR-returned breaks against the firm's own state. However the operational verb is never stated plainly and the description never distinguishes it from close siblings like reconcile_emir_pairing, age_emir_reconciliation_breaks, or check_emir_uti_completeness.

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

Usage Guidelines2/5

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

The only directive is the privacy caveat 'Use synthetic or anonymised inputs only.' There is no statement of when this tool applies versus reconcile_emir_pairing or the break-ageing sibling, and no prerequisites such as needing a TR ISO 20022 response plus submitted state before calling.

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

age_emir_reconciliation_breaksEMIR Reconciliation Break AgeingC
Read-onlyIdempotent
Inspect

EMIR Reconciliation Break Ageing: OpenChainGraph compute node (attestation_mandate). 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-482-emir-recon-adjudicator. Open at: https://ainumbers.co/chaingraph/art-483-emir-break-ageing.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: Diffs a current EMIR reconciliation break set (e.g. Outputs: breaks, escalation_breached_count, evaluated_at, newly_closed, newly_closed_count, newly_opened_count, note, persisting_count, total_current. Output schema: call describe_tool("age_emir_reconciliation_breaks").

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: current_break_set, policy, prior_sealed_break_set. Unknown keys are refused.

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds useful behavioral context beyond annotations by stating that inputs are processed transiently and not stored/logged, and that the tool exports an AP2 artifact with execution_hash provenance. However, it does not explain the break-ageing behavior itself, error conditions, or what the resulting artifact contains.

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?

The description is bloated with repeated platform boilerplate, a URL, an FV-status hash, and provenance details that do not help an agent select or invoke the tool. The actual purpose statement is cut off mid-sentence, so the structure is not front-loaded and the useful content is obscured.

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

Completeness2/5

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

This is a complex compute tool with nested policy_parameters and no output schema, yet the description does not complete its explanation of the ageing computation or define the partially listed output fields. It does mention upstream chaining and data-handling constraints, but those are not enough to make the definition complete for correct invocation.

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 compute modes, parent hashes/tool IDs, and policy_parameters. The description mainly repeats the compute-mode text and names the upstream artifact, but adds little semantic detail about how current_break_set, prior_sealed_break_set, or policy should be structured. Baseline 3 is appropriate when the schema carries the parameter semantics.

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

Purpose3/5

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

The title and opening line identify the resource as EMIR reconciliation break ageing, and the partial summary says it 'Diffs a current EMIR reconciliation break set.' However, the purpose sentence is truncated and buried under platform boilerplate, so it is not clear what ageing logic is performed or how it differs from close siblings such as reconcile_emir_pairing or adjudicate_emir_reconciliation.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use or when-not-to-use guidance, nor does it name alternatives. It mentions consuming upstream artifacts from art-482-emir-recon-adjudicator, which implies a chaining context, but does not explain when an agent should choose this tool over other EMIR reconciliation tools.

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

agentic_mandate_sandboxAgentic Mandate SandboxA
Read-onlyIdempotent
Inspect

Simulate agent payment policies for tokenized A2A corridors: set spend caps, MCC allowlists, velocity throttles, and approval thresholds; run synthetic transactions against the policy and export the result as a Policy Mandate. Browser-based, client-side only, zero PII. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("agentic_mandate_sandbox").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A3.9/5.0
Behavior4/5

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

Built on annotations that already declare read-only, idempotent, non-destructive, and closed-world behavior, the description adds meaningful runtime context: browser-based, client-side only, zero PII, zero network, and rendered as an interactive AINumbers widget. It does not discuss persistence or rate limits, but it substantially clarifies operational behavior beyond 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.

Conciseness4/5

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

The core purpose is front-loaded and the description is appropriately short for the tool. There is minor redundancy around client-side and zero PII behavior, but it remains readable and does not bury the primary usage.

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?

For a one-parameter sandbox tool with strong annotations and full schema coverage, the description covers purpose, input application, runtime environment, and output intent. It does not explain the Policy Mandate return payload in detail, but it explicitly points the caller to describe_tool for the output schema.

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 inputs parameter is already documented as a map of input element IDs to values applied via AIN Bridge prefill. The description repeats the AIN Bridge application but does not add mapping details, examples, or key-level semantics beyond what the schema provides.

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 description gives a specific verb and resource: simulate agent payment policies for tokenized A2A corridors, configure policy controls, run synthetic transactions, and export a Policy Mandate. It is clear what the tool does, but it does not explicitly distinguish itself from similar siblings such as simulate_agent_spend_policy or simulate_spend_policy.

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?

The description clearly establishes the usage context: simulating payment policies and running synthetic transactions before exporting a Policy Mandate. It does not state when to choose this tool over similar simulation siblings, but the sandbox/widget framing gives useful context with no misleading exclusions.

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

aggregate_cbam_precursor_emissionsCBAM Precursor-Emissions AggregatorC
Read-onlyIdempotent
Inspect

CBAM Precursor-Emissions Aggregator: OpenChainGraph compute node (compliance_mandate). 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-68-carbon-compliance-fit-diagnostic. Output feeds: art-69-cbam-embedded-emissions-calculator, cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-72-cbam-precursor-emissions-aggregator.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: Rolls up embedded emissions across precursors in a steel/aluminium value chain (incl. Outputs: cumulative_see_tco2e, data_quality_grade, note, precursor_breakdown, quantity_tonnes, scrap_adjustment. Output schema: call describe_tool("aggregate_cbam_precursor_emissions").

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". Unknown keys are refused.

TDQS

C2.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, closed-world, so the safety profile is covered. The description still adds genuinely useful behaviour beyond that: server-side vs browser delegation rules, transient non-retained input processing, and export of an AP2 artifact carrying execution_hash for chain provenance.

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?

Roughly half the text is reusable template boilerplate (compute binding, privacy notice, FV-status hash URL) that buries the actual purpose. The summary sentence is truncated mid-clause ('in a steel/aluminium value chain (incl. Outputs:'), which is a structural defect, not concision.

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

Completeness3/5

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

There is no output schema, so the description does list the return fields (cumulative_see_tco2e, data_quality_grade, precursor_breakdown, etc.) and names upstream/downstream artifacts, which helps. But the truncation of the defining sentence and the absence of any domain parameter meaning leave the agent guessing about what inputs the aggregation actually expects.

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% with per-parameter descriptions, so the schema already carries the semantics --- baseline 3. The description restates the compute:"auto" default and artifact-chaining intent but adds nothing about policy_parameters content (final_good, precursors, scrap_input_share), whose nested keys have no descriptions in either place.

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

Purpose3/5

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

The core purpose is stated ('Rolls up embedded emissions across precursors in a steel/aluminium value chain') but arrives at the very end of the description and is truncated mid-sentence, so the agent must parse boilerplate to find it. No differentiation is offered against close siblings such as calculate_cbam_embedded_emissions, resolve_cbam_default_value, or model_cbam_certificate_cost.

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

Usage Guidelines2/5

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

No guidance on when to choose this aggregator over calculate_cbam_embedded_emissions or run_carbon_compliance_fit, and no prerequisites stated. The only conditional behaviour mentioned is the compute mode, which is execution plumbing rather than usage guidance.

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

aggregate_execution_receiptsAgent-Action Audit-Trail AggregatorC
Read-onlyIdempotent
Inspect

Agent-Action Audit-Trail Aggregator: OpenChainGraph compute node (cryptographic_mandate). 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-30-agent-commerce-conformance-validator, art-31-a2a-x402-extension-mandate-validator, art-33-mcp-server-self-attestation-pack, cry-04-merkle-batch-verifier. Output feeds: ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/cry-05-agent-action-audit-trail-aggregator.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: The regulatory receipt. Outputs: aggregator_chain_depth, all_proofs_verified, max_chain_depth, merkle_root, n_receipts, receipts, session_receipt_root, tree_depth. Output schema: call describe_tool("aggregate_execution_receipts").

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: artifacts. Unknown keys are refused.

TDQS

C2.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 the description adds real behavioral context beyond them: the compute:auto vs compute:browser server-vs-client execution split, that gpu:true nodes always delegate, transient no-retention processing, the synthetic-inputs-only constraint, and that an AP2 artifact with execution_hash is exported. These are meaningful traits, though much of the wording is generic compute-node boilerplate rather than specific to receipt aggregation.

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?

The text is bloated with repeated boilerplate ('OpenChainGraph compute node' twice), a raw URL, and a 64-hex FV-status path, while the only true purpose statement ('Summary: The regulatory receipt') is buried at the very end. Front-loading is poor and several sentences do not earn their place.

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

Completeness3/5

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

With no output schema, listing the output fields is genuinely useful, and the upstream/downstream artifact references plus privacy and compute-mode notes round it out. However, it never explains what the aggregation actually does with the consumed artifacts or what 'all_proofs_verified' means for the caller, leaving real gaps for a 4-parameter nested-object tool.

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%, so the schema already documents compute enum behavior, parent_hashes/parent_tool_ids ordering, and that policy_parameters requires 'artifacts'. The description restates the compute-mode semantics but adds nothing about what artifact objects the policy_parameters array should contain or how chaining behavior works in practice.

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

Purpose3/5

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

The description labels the tool 'Agent-Action Audit-Trail Aggregator' and 'The regulatory receipt', and the listed outputs (merkle_root, n_receipts, tree_depth, session_receipt_root) hint that it aggregates receipts into a merkle tree, but the actual verb+resource statement never appears explicitly. Nothing distinguishes it from siblings like validate_agent_audit_trail, build_session_receipt, or the many other aggregate_* tools.

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

Usage Guidelines2/5

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

There is pipeline context ('Consumes upstream artifacts from: ... Output feeds: ptg-01-...') but no statement of when to call this tool, when not to, or which sibling to prefer for a similar audit-trail task. An agent must infer usage from the artifact IDs alone.

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

aggregate_ownership_50pctOwnership 50%-Rule AggregatorA
Read-onlyIdempotent
Inspect

Ownership 50%-Rule Aggregator: OpenChainGraph compute node (compliance_mandate). 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-90-sanctions-screening-fit-diagnostic. Output feeds: art-92-screening-list-coverage-checker, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-91-ownership-50pct-aggregator.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: Walks a synthetic ownership graph; computes direct + indirect + aggregate listed stakes per node; applies OFAC, EU, and BIS Affiliates Rule (in force 29 Sep 2025) 50%-thresholds to determine constructively-blocked entities. Outputs: blocked_count, entity_verdicts, listed_entity_count, note, reference_version, summary. Output schema: call describe_tool("aggregate_ownership_50pct").

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". Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

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

Annotations only declare readOnly/idempotent/non-destructive; the description adds substantial context beyond them — deterministic execution, transient non-stored inputs, server vs browser compute delegation, and AP2 export with execution_hash for provenance. This is exactly the extra behavioral context the annotations cannot carry.

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

Conciseness3/5

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

Core summary is front-loaded and useful, but the definition is padded with provenance boilerplate (FV-status hash URL, artifact-consumption list, 'deterministic OpenChainGraph compute node' repetition) that does not help an agent decide or invoke. Structure is fine; sizing is bloated.

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?

With no output schema, the description compensates by enumerating the return fields (blocked_count, entity_verdicts, etc.) and pointing to describe_tool. Annotations cover the safety profile, so this is close to complete, missing only explicit sibling differentiation.

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%, so both compute and policy_parameters are already documented in the schema. The description echoes the compute semantics and notes thresholds/ownership_graph are consumed by the decision function but adds no new syntax or constraints, 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 and resource ('walks a synthetic ownership graph; computes direct + indirect + aggregate listed stakes') and names the OFAC/EU/BIS 50%-thresholds applied. It does not explicitly distinguish itself from the similarly-named sibling compute_cdd_ownership_25pct, so it stops short of a 5.

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 compute-mode behavior and 'use synthetic or anonymised inputs only' constraint are explained, and upstream/downstream artifacts are named. But there is no explicit when-to-use vs when-not or guidance on choosing this over the 25%-rule sibling, leaving selection largely to inference.

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

aggregate_reputation_scoreProvable Reputation Score AggregatorA
Read-onlyIdempotent
Inspect

Provable Reputation Score Aggregator: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-278-reputation-score-aggregator.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: Aggregates a set of OCG execution receipts (attestations) into a deterministic, groth16-provable reputation score across competence, integrity, timeliness, and cooperation. Outputs: as_of, attestation_count, composite, decay_half_life_days, dims, excluded_self_issued, insufficient_evidence, subject_id. Output schema: call describe_tool("aggregate_reputation_score").

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: attestations. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent/non-destructive profile, yet the description adds real behavioral context: inputs are processed transiently and not stored or logged, results are deterministic, an AP2 artifact with execution_hash is exported, and the FV-status receipt is a snapshot verifiable offline. The main weakness is that much of this is stated in dense internal jargon rather than plain terms.

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?

The description opens with redundant restatements ("OpenChainGraph compute node... Deterministic OpenChainGraph compute node") and includes a long FV-status URL plus a pointer to describe_tool for the output schema. The single most useful sentence, the Summary, is placed near the end rather than front-loaded.

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?

With no output schema, the description compensates by enumerating the return fields (as_of, attestation_count, composite, dims, insufficient_evidence, etc.), and it covers execution routing, data handling, and provenance. What is missing is any explanation of how insufficient_evidence or excluded_self_issued are determined, which matters for a scoring tool.

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 all four parameters (including the nested policy_parameters object) are already documented, which sets the baseline at 3. The description does explain compute-mode semantics again and mentions execution_hash chaining, but adds little on parent_hashes/parent_tool_ids pairing or the nested decay/subject fields beyond what the schema states.

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 Summary sentence gives a precise verb and resource: aggregates OCG execution receipts into a deterministic, groth16-provable reputation score across four named dimensions. However, this clarity is buried after several lines of compute-node boilerplate, and no sibling (e.g. aggregate_execution_receipts) is named to disambiguate.

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?

There is concrete guidance on the compute modes ("auto" server-side for gpu:false kernels, "browser" forces a delegation URL, gpu:true always delegates) and a caution to use synthetic/anonymised inputs. But there is no statement of when this tool should be chosen over the many sibling aggregation tools, leaving tool selection to inference from the name.

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

aggregate_solvency2_scr_modulesSolvency II SCR Standard-Formula Module AggregatorA
Read-onlyIdempotent
Inspect

Solvency II SCR Standard-Formula Module Aggregator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-180-solvency2-scr-ratio-calculator. Open at: https://ainumbers.co/chaingraph/art-449-solvency2-scr-module-aggregator.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: Aggregates the five Solvency II standard-formula risk-module capital charges (market, counterparty default, life underwriting, health underwriting, non-life underwriting) into Basic SCR via the Delegated Regulation (EU) 2015/35 Annex IV correlation matrix, then adds the operational risk charge an... Outputs: adjustment_exceeds_bscr_plus_op, bscr, default_scr, health_scr, life_scr, loss_absorbing_adjustment, market_scr, nonlife_scr, scr_operational, scr_total. Output schema: call describe_tool("aggregate_solvency2_scr_modules").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/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 adds genuinely new context: compute-mode delegation behavior, transient no-storage processing, synthetic-input requirement, and an AP2 artifact with execution_hash for provenance. Deductions for the truncated sentence and boilerplate FV-status hash paragraph that don't aid invocation.

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

Conciseness3/5

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

Purpose is front-loaded and the calculation detail earns its place, but the text is bloated with boilerplate (full FV-status URL with hash, 'Deterministic OpenChainGraph compute node' repeated) and is truncated mid-sentence ('...adds the operational risk charge an...').

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?

For a read-only compute node, the description supplies the enumerated outputs, the downstream consumer, and the safety/privacy profile. It falls short only on the internal structure of policy_parameters, which an agent needs to construct a valid call.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters; the description largely repeats the compute-mode semantics. It does not explain what the nested policy_parameters.modules / policy_parameters.operational objects should contain, leaving the core inputs undescribed beyond the schema stubs.

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: aggregates the five Solvency II standard-formula risk-module charges into Basic SCR via the Annex IV correlation matrix, then adds operational risk. The downstream feed (art-180-solvency2-scr-ratio-calculator) implicitly distinguishes it from the ratio calculator sibling, though the comparison is not made explicit.

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: the 'Output feeds' line signals where results go, letting an agent infer this is the upstream module-aggregation step. There is no explicit when-to-use/when-not or named alternative among siblings like calculate_solvency2_scr_ratio.

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

aggregate_summa_mst_liabilitiesSumma MST Liability AggregatorC
Read-onlyIdempotent
Inspect

Summa MST Liability Aggregator: OpenChainGraph compute node (cryptographic_mandate). 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. Output feeds: art-620-summa-mst-inclusion-checker. Open at: https://ainumbers.co/chaingraph/art-621-summa-mst-liability-aggregator.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.

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". See the tool's manifest for field names.

TDQS

C2.8/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), yet the description adds real value beyond them: transient no-store/no-log processing, a 'synthetic or anonymised inputs only' requirement, deterministic execution, and that an AP2 artifact with execution_hash is exported for chain provenance. Compute-mode delegation behavior (server vs browser, gpu:true always delegates) is also disclosed.

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

Conciseness3/5

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

Lead sentences restate the title and repeat "deterministic OpenChainGraph compute node" twice, which is wasted space, while the substantive compute-mode and privacy statements are buried mid-paragraph. The trailing FV-status receipt URL is long and low-value relative to the missing purpose statement.

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

Completeness3/5

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

With no output schema, the description does cover the returned artifact and execution_hash, which is helpful. However, for a tool whose only substantive input is an underspecified policy_parameters object, an agent still cannot construct a valid call without fetching the external manifest — a notable gap given the nested-object complexity.

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 compute, parent_hashes, and parent_tool_ids are already well documented; the description merely echoes the compute-mode semantics that the schema states verbatim. The critical policy_parameters object is left to "See the tool's manifest for field names" in both schema and description, so the description does not compensate for the one genuinely opaque parameter.

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

Purpose2/5

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

The description repeats the title ("Summa MST Liability Aggregator") and labels the tool a "deterministic OpenChainGraph compute node," but never states in domain terms what is being aggregated or computed — no mention of what a liability set is, what the decision function does, or what the output represents beyond an AP2 artifact. The only differentiator from the many sibling aggregate_* tools is a downstream consumer URL (art-620-summa-mst-inclusion-checker).

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance and no named alternative among the numerous sibling aggregate_* / compute_* tools. Pipeline position is only implied through "Output feeds: art-620-summa-mst-inclusion-checker" and the parent_hashes chaining hint, leaving the agent to infer invocation conditions.

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

aggregate_taxonomy_kpi_garTaxonomy KPI & Green Asset Ratio AggregatorB
Read-onlyIdempotent
Inspect

Taxonomy KPI & Green Asset Ratio Aggregator: OpenChainGraph compute node (model_governance). 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-73-taxonomy-alignment-scorer. Output feeds: cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-74-taxonomy-kpi-gar-aggregator.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: Rolls activity-level Taxonomy alignment (from ART-73) into entity KPIs: revenue/CapEx/OpEx aligned proportions and, for financial undertakings, the Green Asset Ratio (GAR) per the Disclosures Delegated Act denominator rules. Outputs: activity_count, aligned_count, capex_aligned_pct, entity_type, gar_detail, green_asset_ratio, kpi_breakdown, note, opex_aligned_pct, reference, revenue_aligned_pct. Output schema: call describe_tool("aggregate_taxonomy_kpi_gar").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; the description adds compute-mode behavior (auto/server/browser, gpu:true always delegates), that inputs are processed transiently and not retained, and that an AP2 artifact with execution_hash is exported. Those are real behavioral facts beyond the annotations. Some of this is repeated boilerplate rather than tool-specific detail.

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?

The definition is long and poorly front-loaded: the domain purpose is buried after OpenChainGraph compute-node boilerplate, privacy language, an artifact URL and an FV-status hash. It also repeats itself ('Deterministic OpenChainGraph compute node' appears twice), so several sentences do not earn their place.

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

Completeness3/5

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

Outputs are enumerated, upstream/downstream artifacts are named, and compute/retention behavior is described, which suits a complex node with no output schema. But the nested policy_parameters object is opaque in both schema and description, and there is no explanation of denominator inputs like total_assets or covered_assets that the GAR calculation depends on.

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 baseline is 3. The description restates the compute-mode semantics already documented in the schema and does not explain the nested policy_parameters keys (activities, entity_type, total_assets, covered_assets, gar_numerator_items) or parent_hashes/parent_tool_ids beyond what the schema already says.

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 Summary sentence states a specific verb and resource: it 'rolls activity-level Taxonomy alignment (from ART-73) into entity KPIs' including revenue/CapEx/OpEx aligned proportions and the Green Asset Ratio under the Disclosures Delegated Act denominator rules. That is far more specific than the title, and naming the upstream ART-73 scorer distinguishes it from sibling score_taxonomy_alignment. However, the actual purpose appears only near the end, after several sentences of platform boilerplate.

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 lineage: it consumes art-73-taxonomy-alignment-scorer and feeds cry-05-agent-action-audit-trail-aggregator, which tells the agent where it sits in a pipeline. There is no explicit when-to-use/when-not guidance and no named alternative such as score_taxonomy_alignment. The only direct constraint is 'Use synthetic or anonymised inputs only.'

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

ai_displacement_risk_screenerAI Displacement Risk ScreenerC
Read-onlyIdempotent
Inspect

AI Displacement Risk Screener: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-763-ai-displacement-risk-screener.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: Port of ApexLogics Apex #104 (AL-111) AI Displacement Risk Screener into the AINumbers chaingraph shape. Outputs: score, adj_score, tier, prob, routine_frac, sector_exp, automation_pct, routine_pct, sector_pct, title, soc, median_salary_usd, alts. Output schema: call describe_tool("ai_displacement_risk_screener").

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: rc, rm, nra, nri, nrm, sector_exp, ed_level, years_role. Unknown keys are refused.

TDQS

C2.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 the description adds genuine value beyond them: inputs are processed transiently and not stored or logged, synthetic/anonymised inputs are required, server-vs-browser delegation rules govern execution, and an AP2 artifact with execution_hash is exported for provenance. These are exactly the operational traits structured fields cannot express; only the rambling FV-status hash sentence dilutes it.

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?

It is bloated with low-value content: a full URL, a 64-character FV-status hash embedded in a path, legalistic provenance boilerplate, and a closing instruction to 'call describe_tool' for the output schema. The actual purpose statement is buried behind compute-node plumbing, so the text is not front-loaded on what the agent needs.

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

Completeness3/5

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

There is no output schema, but the description enumerates the returned fields (score, adj_score, tier, prob, median_salary_usd, alts), which compensates somewhat. However, for a scoring tool it never explains what the score/tier mean, how policy_parameters map to the result, or what 'alts' contains, leaving the agent able to call it but not interpret it.

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%, so the schema documents compute, parent_hashes, parent_tool_ids and the policy_parameters block, giving a baseline of 3. The description does add one useful fact not in the schema (the nested required keys rc/rm/nra/nri/nrm/sector_exp/ed_level/years_role, since the top-level required array is empty), but it never decodes those cryptic acronyms, so semantic meaning is still absent.

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

Purpose3/5

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

The description identifies the tool only by restating its own name ('Port of ApexLogics Apex #104 (AL-111) AI Displacement Risk Screener'), which is close to tautological. The output-field list (score, tier, prob, routine_frac, sector_exp, automation_pct) lets an agent infer that it scores occupation-level AI displacement risk, but the description never states that in a verb+resource sentence.

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

Usage Guidelines2/5

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

There is guidance on the compute parameter ('auto' vs 'browser' delegation) but nothing on when an agent should pick this screener over siblings such as classify_agentic_ai_risk, classify_ai_system_governance, or run_ai_act_highrisk_fit. With a large sibling set of AI-risk tools, the absence of routing guidance is a real gap.

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

allocate_ihb_interestIHB Interest AllocationA
Read-onlyIdempotent
Inspect

IHB Interest Allocation: OpenChainGraph compute node (analytics_mandate). 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-259-compute-multilateral-netting, art-262-validate-ebam-acmt-flow. Open at: https://ainumbers.co/chaingraph/art-260-allocate-ihb-interest.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: Allocates overnight in-house-bank (IHB) interest across notional pool or ZBA sweep members. Outputs: allocations, arm_length_rate, base_currency, day_count_convention, day_count_fraction, days, entity_count, net_interest_payable, not_legal_advice, oecd_tp_compliant, pii_note, pool_net_balance, pool_type, regulatory_basis, table_source, table_version, total_interest_allocated. Output schema: call describe_tool("allocate_ihb_interest").

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: arm_length_rate, base_currency, day_count_convention, days, pool_members, pool_type. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses genuine behavioral traits: transient server-side processing with no storage or logging, the auto/server/browser compute split with gpu:true always delegating, and export of an AP2 artifact carrying execution_hash for provenance. Missing only things like latency, failure modes, or whether the FV-status receipt affects 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?

The opening repeats itself ('OpenChainGraph compute node (analytics_mandate). Deterministic OpenChainGraph compute node') and the single most useful sentence, the Summary, is buried near the end. The provenance-hash URL and offline-verification note consume significant space without helping an agent decide or invoke.

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?

For a four-parameter nested-policy tool with no output schema, the description covers the important ground: what it computes, required policy keys, upstream chaining inputs, compute-mode behavior, and an explicit enumeration of output fields. Data-handling and provenance expectations are also set.

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 compute enum, parent_hashes/parent_tool_ids ordering, and policy_parameters keys are already documented. The description largely restates the compute modes and adds only the list of required policy_parameters, which sits at the baseline for a fully-documented schema.

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 Summary sentence states a specific verb and resource — 'Allocates overnight in-house-bank (IHB) interest across notional pool or ZBA sweep members' — and the upstream-artifact list (multilateral netting, EBAM/ACMT validation) helps place it among siblings. However, the tool's actual purpose appears late, after several sentences of compute-node boilerplate, and no sibling is named as an alternative.

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 context is implied rather than stated: it consumes artifacts from art-259/compute_multilateral_netting and art-262/validate_ebam_acmt_flow, and requires synthetic or anonymised inputs. There is no explicit when-to-use vs when-to-use-another-tool guidance, and no named alternative for IHB allocation work.

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

amortize_asc606_commissionsASC 340-40 Commission AmortizationB
Read-onlyIdempotent
Inspect

ASC 340-40 Commission Amortization: OpenChainGraph compute node (compliance_mandate). 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-266-reconcile-commission-statement. Open at: https://ainumbers.co/chaingraph/art-265-amortize-asc606-commissions.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: Computes ASC 340-40-25-4 practical expedient (contract_term_months <= 12 -> expense immediately, apply_expedient=true) and full straight-line amortization schedules for longer-term capitalized incremental costs of obtaining a contract under ASC 606. Outputs: amortization_period_months, annual_amortization, apply_expedient, asc340_40_compliant, carrying_amount, impairment_flag, incremental_cost_test_passed, monthly_amortization, not_legal_advice, pii_note, regulatory_basis, renewal_treatment, table_source, table_version, total_amortization_periods. Output schema: call describe_tool("amortize_asc606_commissions").

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". Unknown keys are refused.

TDQS

B3.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), and the description adds genuinely new context: gpu:true nodes always delegate to the browser, inputs are processed transiently and not retained, synthetic/anonymised inputs are required, and the call exports an AP2 artifact carrying execution_hash for chain provenance. That extra disclosure is substantive rather than a restatement of 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.

Conciseness2/5

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

The purpose is buried behind repeated infrastructure boilerplate ('OpenChainGraph compute node ... Deterministic OpenChainGraph compute node'), a verbatim restatement of the compute enum already in the schema, and a 64-character FV-status hash URL. The dangling list of 15 output field names at the end is unstructured, and the front-loaded content is process plumbing rather than what the tool does.

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

Completeness3/5

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

With no output schema, the description does enumerate output fields and explain compute modes, privacy and provenance, which covers a lot. But it never explains what the returned flags actually mean (impairment_flag, incremental_cost_test_passed, renewal_treatment) or the semantics of the nested policy_parameters, leaving gaps for a compliance calculation of this complexity.

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 parameter contract is already documented and the 3 baseline applies. The description adds a little meaning for policy_parameters through the expedient rule keyed on contract_term_months, but the other keys (renewal_cost, incremental_cost, impairment_indicators, renewal_commensurate, amortization_period_override_months) get no interpretation beyond their names.

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 description names a specific standard and computation: 'ASC 340-40-25-4 practical expedient ... and full straight-line amortization schedules for longer-term capitalized incremental costs of obtaining a contract under ASC 606.' That is a concrete verb+resource and the ASC citation implicitly separates it from generic siblings like build_amortization_schedule or compute_deterministic_amortization_schedule, but no sibling is named outright, so it stops short of a 5.

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?

It states the decision rule ('contract_term_months <= 12 -> expense immediately, apply_expedient=true') and a prerequisite ('Consumes upstream artifacts from: art-266-reconcile-commission-statement'), which implies when it applies. However there is no explicit when-to-use/when-not guidance and no named alternative among the many amortization-related siblings.

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

analyze_dc_vs_lc_cost_benefitDocumentary Collection vs Letter of Credit Cost-BenefitA
Read-onlyIdempotent
Inspect

Documentary Collection vs Letter of Credit Cost-Benefit: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-478-analyze-dc-vs-lc-cost-benefit.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: Compares the total cost and risk-adjusted exposure of Documentary Collections (D/P, D/A) against Letters of Credit (Sight, Usance, Confirmed, SBLC) for a trade transaction. Outputs: breakEvenProbabilityPct, dcRiskAdjCostUSD, dcRiskExposureUSD, dcTotalFeesUSD, heuristic_note, lcProtectionScore, lcRiskAdjCostUSD, lcTotalFeesUSD, lc_protection_score_heuristic, recommendation. Output schema: call describe_tool("analyze_dc_vs_lc_cost_benefit").

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: buyerCountryRisk, buyerRelationship, dcCollectingCommissionPct, dcNonPaymentProbabilityPct, dcProtestFeeUSD, dcRemittingFeeUSD, dcType, goodsStatus, invoiceValueUSD, lcAdvisingFeeUSD, lcAmendmentFeeUSD, lcConfirmationPctPerQuarter, lcExpectedAmendments, lcIssuancePctPerQuarter, lcNegotiationPct, lcType, paymentTermDays, sellerCountryRisk. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-destructive safety profile. The description adds meaningful context beyond that: compute routing behavior, transient processing with no storage/logging, browser delegation semantics, and AP2 artifact/execution_hash provenance. It does not cover rate limits or cost/access constraints, but the added behavioral detail is substantial.

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

Conciseness3/5

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

The description contains useful purpose and behavior information, but it is bloated with repeated boilerplate, an external URL, and a lengthy FV-status snapshot explanation. The actual comparison summary appears mid-description rather than being front-loaded, reducing scan efficiency.

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

Completeness3/5

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

The description lists outputs and covers compute routing and AP2 artifact behavior, which helps for a complex compute node. However, for a tool with a nested policy_parameters object containing 18 required fields, the description does not adequately explain those inputs, and there is no output schema to carry return-value semantics.

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 is the primary source for parameter semantics. The description repeats the compute-mode behavior but does not explain the nested policy_parameters fields (dcType, lcType, risk inputs, fee inputs), which are only listed by name in the schema.

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?

The description names a specific comparison (Documentary Collections vs Letters of Credit cost-benefit) and identifies the decision context (trade transaction). The summary sentence lists the exact DC and LC variants being compared, which clearly distinguishes this tool from sibling LC-document validation or trade-rule tools.

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 description implies the tool is used for trade-transaction cost/risk comparison and states that only synthetic or anonymised inputs should be used. However, it does not explicitly say when to use this tool instead of siblings such as examine_lc_document_presentation or check_digital_trade_rules, and no exclusions are given.

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

analyze_espp_dispositionESPP Break-Even & Optimal SellC
Read-onlyIdempotent
Inspect

ESPP Break-Even & Optimal Sell: OpenChainGraph compute node (compensation_benefits). 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. Open at: https://ainumbers.co/chaingraph/art-760-espp-break-even-optimal-sell.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: Port of ApexLogics Apex #110 (AL-117) ESPP Break-Even & Optimal Sell Analyzer into the AINumbers chaingraph shape. Output schema: call describe_tool("analyze_espp_disposition").

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: purchase_price, offering_price, current_price, shares, grant_date, purchase_date, ordinary_income, filing_status. Unknown keys are refused.

TDQS

C2.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), yet the description adds real value beyond them: transient server-side processing with no storage or logging, a requirement to use synthetic/anonymised inputs, and the export of an AP2 artifact carrying execution_hash for chain provenance. It does not, however, describe what the computed result contains or how the browser delegation URL behaves in practice.

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?

The functional purpose is buried in a trailing 'Summary' sentence after several paragraphs of infrastructure boilerplate, a documentation URL, and an opaque FV-status hash path. Front-loading is poor and much of the text serves provenance/marketing rather than tool selection.

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

Completeness2/5

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

With no output schema, the description carries the burden of explaining what comes back, yet it only says an AP2 artifact with execution_hash is exported and defers to describe_tool and a web URL. For a financial decision tool with nine nested policy inputs, an agent cannot tell whether the result is a break-even price, a sell recommendation, or a quantified disposition outcome.

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 the policy_parameters schema already enumerates shares, prices, dates, income and filing_status plus its required set, so the description does not need to restate parameter meaning. The description's compute-mode sentence duplicates the schema's own compute description rather than adding to it, so baseline 3 applies.

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

Purpose3/5

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

The name and first line establish the domain (ESPP break-even and optimal sell analysis), but the only substantive sentence is the provenance note about porting 'ApexLogics Apex #110 (AL-117) ESPP Break-Even & Optimal Sell Analyzer'. The description never says what the analysis actually computes (break-even price? optimal sell timing? tax treatment?) and offers no explicit differentiation from siblings like compute_breakeven, model_scorp_break_even, or estimate_hdhp_ppo_breakeven.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The lengthy compute-mode discussion ('auto'/'server'/'browser') is about a transport parameter, not about when an agent should select this tool over another ESPP or break-even tool.

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

analyze_prediction_marketPrediction Market AnalyzerB
Read-onlyIdempotent
Inspect

Prediction Market Analyzer: OpenChainGraph compute node (event_market_pnl). 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. Output feeds: art-212-prediction-market-arbitrage. Open at: https://ainumbers.co/chaingraph/art-211-prediction-market-analyzer.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: Analyzes a binary or scalar prediction market position. Outputs: break_even_probability, brier_score, disclaimer, entry_price, expected_value, fee_paid, half_kelly_stake, implied_probability, kelly_fraction, log_score, mode, n_contracts, no_vig_fair_value, odds_american, odds_decimal, odds_fractional, payout, pnl, settlement_clamped, settlement_delta, settlement_in_range, settlement_value, side, strike, unit_value, venue, won. Output schema: call describe_tool("analyze_prediction_market").

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: forecast_prob, mode, no_ask, outcome, side, user_probability, venue, won. Unknown keys are refused.

TDQS

B3.4/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, yet the description adds substantive context: compute:"auto" runs server-side on Workers for gpu:false nodes with kernels, compute:"browser" returns a delegation URL instead of a result, and gpu:true nodes always delegate. It also discloses that inputs are transient and not stored or logged, plus that an AP2 artifact with execution_hash is exported for provenance.

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?

The one genuinely useful sentence (what it analyzes, what it computes) is buried after a wall of platform boilerplate about compute binding and transient processing, followed by a 71-character FV-status hash URL and a 30-field output dump. Substantial text — the full hex digest, the "snapshot, not a subscription" disclaimer — earns no place for an agent deciding whether to call the tool.

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

Completeness3/5

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

With no output schema present, the enumerated output field list does real work in telling the agent what comes back, and the compute-mode explanation covers the main non-obvious behavior. What's missing is any semantic gloss on the metrics (what break_even_probability or half_kelly_stake represent) and any statement of units or supported venues/modes, leaving an agent to infer meaning from bare field names.

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 compute, parent_hashes, parent_tool_ids and the nested policy_parameters. The description only restates the compute-mode semantics and repeats the required-key list (forecast_prob, mode, no_ask, outcome, side, user_probability, venue, won) that the schema already enforces, adding no interpretation of what those keys mean or how they interact.

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 description does state a specific verb and resource: "Analyzes a binary or scalar prediction market position" and enumerates the derived metrics (break_even_probability, kelly_fraction, brier_score, etc.). Sibling find_prediction_arbitrage is not named or contrasted, but the "/output feeds: art-212-prediction-market-arbitrage" line at least implies this is the single-position analytics step rather than an arbitrage scanner.

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?

It gives downstream routing ("Output feeds: art-212-prediction-market-arbitrage") and an input-safety constraint ("Use synthetic or anonymised inputs only"), which is real usage guidance. However, it never says when to pick this over find_prediction_arbitrage or any other market tool, and no preconditions beyond the input-hygiene note are stated.

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

anchor_document_integrityDocument Integrity & eIDAS Electronic Timestamp AnchorA
Read-onlyIdempotent
Inspect

Document Integrity & eIDAS Electronic Timestamp Anchor: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-122-timestamp-attestation-verifier. Open at: https://ainumbers.co/chaingraph/art-121-document-integrity-anchor.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: Bind a document SHA-256 and claimed timestamp into an OCG execution_hash that serves as an eIDAS Art.41 / RFC 3161-aligned electronic timestamp: self-verifiable, no external TSA call. Outputs: anchored, document_hash, document_type, timestamp_claim. Output schema: call describe_tool("anchor_document_integrity").

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". Unknown keys are refused.

TDQS

A3.6/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 the description adds real value beyond them: transient processing with no storage or logging, a synthetic-inputs-only constraint, export of an AP2 artifact with execution_hash for chain provenance, and the fact that the FV-status receipt verifies offline without fetching. The compute-mode explanation largely restates the schema, which caps this at 4 rather than 5.

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?

The actual purpose is buried at the very end behind a duplicated boilerplate header ('OpenChainGraph compute node... Deterministic OpenChainGraph compute node'), a compute-mode paragraph that repeats the schema verbatim, and a long FV-status paragraph containing a raw hash URL. Front-loading is poor and several sentences do not earn their 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?

With no output schema, the description compensates by listing the returned fields (anchored, document_hash, document_type, timestamp_claim), the artifact exported, the downstream verifier, and the data-handling posture. That is enough for an agent to call it correctly, though the unspecified nested policy_parameters keys are a residual gap.

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 baseline is 3, but the description earns extra credit by explaining what the opaque policy_parameters object is for: binding document SHA-256, claimed timestamp, and the anchoring decision function. The nested keys themselves (hash_algorithm, document_type) remain undocumented anywhere, so it is not complete.

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 Summary states a specific verb and resource: bind a document SHA-256 plus claimed timestamp into an OCG execution_hash serving as an eIDAS Art.41/RFC 3161-aligned timestamp. That is concrete and distinguishable. It does not, however, differentiate itself from the sibling anchor_stamp, which sounds functionally adjacent.

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 description names a downstream consumer ('Output feeds: art-122-timestamp-attestation-verifier') and instructs using synthetic/anonymised inputs, which is useful routing context. It never states when to prefer this over anchor_stamp, verify_timestamp_attestation, or verify_execution_hash, and gives no exclusions or prerequisites.

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

anchor_stampAnchor an execution_hash (or batch) at a real timestamp authorityAInspect

Calls the anchor-suite MCP server (server-to-server, not the browser CORS-gated relay) to timestamp one execution_hash, or batch-anchor an array via anchor-suite's own anchor_batch (one upstream call per batch, RFC 6962 Merkle root anchored, per-hash merkle_inclusion returned), and shapes the result as literal OCG v0.7 section 20 anchor_bindings entries ready to append to an artifact. Success is only reported after this tool independently confirms anchored_hash (or, for a batch entry, merkle_inclusion.leaf) equals the caller-supplied hash -- it does not merely trust anchor-suite's response. On ANY failure -- anchor-suite unreachable, erroring, timing out, or an equality mismatch -- returns {ok:false, unanchored:true, reason} verbatim, never a fabricated binding. Caller-invoked only; not wired into any automatic per-artifact-emission path.

NameRequiredDescriptionDefault
authorityNoDefaults to whatever anchor-suite's own anchor_hash/anchor_batch default to today (currently sigstore for rfc3161-tst) -- this tool does not own or hardcode a preference beyond that mirror.
execution_hashYesThe execution_hash(es) to anchor.

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: server-to-server vs. CORS relay, one upstream call per batch, RFC 6962 Merkle root anchoring, per-hash merkle_inclusion, independent equality re-verification before reporting success, and the exact failure payload {ok:false, unanchored:true, reason}. It also states it never fabricates a binding, which is critical trust context not conveyed by the hints.

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?

The mechanics are front-loaded in the opening clause and the failure contract is stated compactly. It is dense, with nested parentheticals, but each clause carries information about anchoring, verification, or failure semantics, so little is wasted.

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?

With no output schema, the description carries the return-shape burden and does so reasonably: success yields OCG v0.7 section 20 anchor_bindings entries, failure yields a fixed {ok, unanchored, reason} object. It does not detail the full binding structure, but for a two-param tool the key contract elements are present.

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 baseline is 3; the description goes further by explaining that an array triggers anchor_batch as a single upstream call with per-hash merkle_inclusion, and clarifies that authority mirrors anchor-suite's default rather than a hardcoded preference. That adds real meaning beyond the schema's field-level text.

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 (anchor/timestamp) and resource (execution_hash, single or batch array) and specifies the upstream path (anchor-suite MCP server, not the CORS-gated relay). This clearly distinguishes it from read-only siblings like verify_timestamp_attestation and verify_anchored_extract.

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?

Explicitly says 'Caller-invoked only; not wired into any automatic per-artifact-emission path', which tells the agent when the tool is appropriate versus automatic flows. It does not name a specific alternative sibling (e.g. a verification tool) as the way to check an existing binding, so it stops short of full routing guidance.

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

ap2_aml_mandate_builderAP2 AML Mandate BuilderB
Read-onlyIdempotent
Inspect

Anchor agentic tool for Cat-12. Translate AML/BSA program controls, TM rules, and customer risk policy into a structured Policy Mandate JSON for agentic payment sy Browser-based, client-side only. Zero PII. Link users to https://ainumbers.co/tools/131-ap2-aml-mandate-builder.html for interactive use. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("ap2_aml_mandate_builder").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful operational context: it runs client-side with zero PII and zero network access, renders as a widget, and applies inputs via the AIN Bridge. It does not cover error behavior or execution limits, but it adds substantial behavior beyond 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.

Conciseness3/5

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

The purpose is front-loaded, but the description repeats the client-side and zero-PII points, and the phrase 'agentic payment sy' appears truncated. The link and describe_tool pointer are useful, but the overall text could be tighter and more polished.

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

Completeness3/5

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

For a one-parameter read-only builder, the description gives enough context to understand that it produces a Policy Mandate JSON and runs client-side. However, it lacks detail about the expected input manifest and does not directly explain return values beyond pointing to describe_tool, leaving moderate gaps given the absence of an output schema.

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 inputs map is already documented in the schema. The description adds that inputs are applied via the AIN Bridge, but this mostly repeats the schema's explanation and does not provide additional element ID or value semantics.

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 description states a specific verb and resource: translate AML/BSA program controls, transaction monitoring rules, and customer risk policy into a structured Policy Mandate JSON for agentic payments. This is meaningfully distinct from generic AP2 mandate tools, but it does not explicitly differentiate itself from siblings such as build_google_ap2_mandate or draft_ap2_mandate_credential.

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

Usage Guidelines2/5

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

The description explains that the tool is browser-based and client-side, and provides a link for interactive use, but it does not say when an agent should choose this tool over sibling AP2 mandate builders or validators. There are no explicit when-to-use, when-not-to-use, or alternative-routing instructions.

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

apply_climate_scenarioClimate Scenario Applicator (NGFS / Fit-for-55)A
Read-onlyIdempotent
Inspect

Climate Scenario Applicator (NGFS / Fit-for-55): OpenChainGraph compute node (model_governance). 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-68-carbon-compliance-fit-diagnostic, art-71-cbam-certificate-cost-engine. Output feeds: cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-76-climate-scenario-applicator.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: Applies a climate scenario path (NGFS Phase V orderly/disorderly/hot-house, Fit-for-55 supervisory; reference_version NGFS-Phase-V-2025) to an exposure set, emitting stress-adjusted metrics for a bank/insurer climate-risk file. Outputs: baseline_metric, carbon_price_assumption, delta, delta_by_sector, delta_pct, gdp_delta_at_horizon, horizon, metric, note, reference, scenario_family, scenario_label, stressed_metric, transition_intensity. Output schema: call describe_tool("apply_climate_scenario").

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". Unknown keys are refused.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world, but the description adds substantive behavior: server-vs-browser execution routing via registered kernels, transient/no-retention processing, 'use synthetic or anonymised inputs only', and AP2 provenance export with execution_hash. The remaining bulk is boilerplate (URL, FV-status hash blob) rather than further behavioral insight.

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

Conciseness3/5

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

Front-loaded summary is buried mid-description after the title restatement, compute-mode boilerplate, and provenance chain text. The artifact URL and FV-status hash receipt take significant space without helping tool selection, though the descriptive content itself is substantive.

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?

There is no output schema, and the description compensates by enumerating all returned fields (baseline_metric, delta_by_sector, stressed_metric, scenario_family, etc.), plus scenario inputs, privacy posture and chain provenance. It does not cover failure behavior or what is refused/'unknown keys are refused' beyond the schema note.

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%, but the nested policy_parameters sub-properties (metric, scenario, exposures) are untyped empty objects in the schema, so the description's enumeration of scenario families and reference_version supplies meaning the schema genuinely lacks. The compute/parent_hashes semantics are mostly restated from the schema rather than extended.

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 — 'Applies a climate scenario path ... to an exposure set' — and names the concrete scenario regimes (NGFS Phase V orderly/disorderly/hot-house, Fit-for-55, NGFS-Phase-V-2025) plus the emitted metrics. An agent can distinguish this from replay_supervisory_scenario or compute_stress_test_scenarios without opening 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 clear operating context: compute mode selection rules ('auto' vs 'browser' vs gpu:true delegation), upstream artifacts to chain from (art-68-carbon-compliance-fit-diagnostic, art-71-cbam-certificate-cost-engine), and the down-stream consumer. It does not explicitly name a sibling alternative and state when that sibling should be preferred over this one.

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

assemble_ai_addendumAI Addendum AssemblerA
Read-onlyIdempotent
Inspect

AI Addendum Assembler: OpenChainGraph compute node (compliance_mandate). 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-412-ai-act-procurement-clause-mapper. Output feeds: art-409-dpa-art28-completeness-checker. Open at: https://ainumbers.co/chaingraph/art-411-ai-addendum-assembler.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: Assembles a Common Paper AI Addendum (Version 1.0, CC BY 4.0) from your Cover Page Key Terms: whether Provider may Train Models on Customer data, whether Provider may use data for non-training improvement, data retention window, output ownership, and AI sub-processor disclosure. Outputs: assembled_markdown, attribution, body_sha256, checks, contract_api, cover_page_markdown, disclaimer, license, source_url, template_id, zero_pii_notice. Output schema: call describe_tool("assemble_ai_addendum").

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: effective_date, improvement_restrictions, model_improvement, output_ownership, retention_window, subprocessor_ai, train_on_customer_data, training_data, training_purposes, training_restrictions. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), but the description adds genuine behavioral context: inputs are processed transiently and not stored/logged/retained, an AP2 artifact with execution_hash is emitted for chain provenance, and the compute mode determines whether execution is server-side on Cloudflare Workers or delegated to a browser URL. The FV-status receipt note explains offline verifiability, which is useful provenance information. It does not contradict the read-only annotation — the tool computes and exports, it does not mutate remote state.

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?

The text is not front-loaded: the tool's actual job appears in the last third, after a repeated 'compute node' framing, a Cloudflare Workers explanation that duplicates the compute enum, a 128-character FV-status URL and a bare documentation link. Several sentences ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.') are near-duplicates. An agent must read to the end to learn what the tool does.

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?

For a 4-parameter assembly tool with nested policy inputs and no output schema, the description covers what is missing elsewhere: the enumerated output fields (assembled_markdown, body_sha256, checks, cover_page_markdown, license, template_id), the upstream/downstream chain links, and the privacy posture. What it omits is small — e.g., what 'checks' contains or how the required policy_parameters keys must be expressed — but the agent has enough to call it 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?

Top-level schema coverage is 100%, so compute, parent_hashes and parent_tool_ids are already documented — the description's restatement of compute modes adds little. But the nested policy_parameters object has ten properties with completely empty schemas, and the description is the only place that gives those keys domain meaning (training on customer data, non-training improvement, retention window, output ownership, AI sub-processor disclosure). That is meaningful compensation for the real gap in the schema.

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 Summary sentence names a specific verb and artifact: assembling a Common Paper AI Addendum (Version 1.0) from Cover Page Key Terms, and enumerates the key terms involved (training on customer data, retention window, output ownership, AI sub-processor). It also places itself in the chain relative to art-412 procurement clause mapping and art-409 DPA checks, which distinguishes it from generic assembly siblings. The flaw is placement: the actual purpose sits after several paragraphs of compute/provenance boilerplate, so an agent skimming the first lines sees 'OpenChainGraph compute node' rather than 'assembles an AI addendum'.

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 implied rather than stated: the description declares upstream inputs come from art-412-ai-act-procurement-clause-mapper and the output feeds art-409-dpa-art28-completeness-checker, so an agent can infer where in a workflow this belongs. It also gives a hard input constraint ('Use synthetic or anonymised inputs only'). However, it never says when to choose this over near siblings like assemble_license_terms, assemble_mutual_nda, or map_ai_act_procurement_clauses, and gives no preconditions or exclusions.

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

assemble_aiuc1_evidence_packAIUC-1 Evidence Pack AssemblerA
Read-onlyIdempotent
Inspect

AIUC-1 Evidence Pack Assembler: OpenChainGraph compute node (compliance_mandate). 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-303-aiuc1-control-evidence-linter, cry-05-agent-action-audit-trail-aggregator. Output feeds: art-305-aiuc1-evidence-freshness-lint. Open at: https://ainumbers.co/chaingraph/art-304-aiuc1-evidence-pack-assembler.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: Assembles a signed, AIUC-1 control-keyed evidence pack from execution receipts, escalation closures, and work mandates: binds each mapped control to its resolved artifact digests, computes pack_claim_strength as the honest minimum across bound controls, and exports an OSCAL Assessment Results doc... Outputs: aiuc1_version, anchor, cadence_attestation, controls, insufficient_evidence, oscal_assessment_results, pack_claim_strength, version_mismatch. Output schema: call describe_tool("assemble_aiuc1_evidence_pack").

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: aiuc1_version, anchor_document_integrity, artifacts, cadence_attestation_input, cadence_period_days, control_mapping. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new context on top: deterministic execution, transient processing with no storage/logging/retention, server vs browser delegation behavior, and an execution_hash-bearing AP2 artifact for chain provenance. Missing are failure modes (e.g. what happens on digest mismatch / version_mismatch) and any note on cost or delegation round-trip timing.

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?

The actual purpose is buried in a 'Summary:' fragment at the very end, behind duplicated boilerplate ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node'), a marketing URL, and an FV-status hash URL. An agent must read past several sentences of platform scaffolding before learning what the tool produces.

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?

For a complex tool with nested policy_parameters and no output schema, the description lists the return fields (aiuc1_version, anchor, cadence_attestation, controls, insufficient_evidence, oscal_assessment_results, pack_claim_strength, version_mismatch) and explains the compute path and chain position. The main remaining gap is guidance on the required nested inputs and expected failure conditions.

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 baseline is 3. The description restates the compute-mode semantics that the enum already documents, and hints that execution_hash values are what chain provenance (parent_hashes) consumes. It says nothing about parent_tool_ids ordering requirements or the relationship between control_mapping and cadence_period_days inside policy_parameters, so it adds little beyond the schema.

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 'Summary:' sentence gives a specific verb+resource: assembles a signed, AIUC-1 control-keyed evidence pack from execution receipts, escalation closures and work mandates, binding controls to artifact digests and exporting an OSCAL Assessment Results doc. Named upstream/downstream artifacts (art-303 linter, cry-05 aggregator, art-305 freshness lint) help place it against the many sibling *evidence_pack/assemble_* tools, though it never explicitly distinguishes itself from build_evidence_pack or assemble_ocg_evidence_bundle. The core purpose is only reached after a large block of platform boilerplate.

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?

It states a usage constraint ('Use synthetic or anonymised inputs only') and explains the compute-mode decision (auto/server/browser, gpu:true always delegates), but that is operational guidance rather than when-to-use guidance. It never says when to pick this pack over the sibling evidence-pack assemblers, nor what prerequisites (which upstream artifacts must exist) are needed before calling.

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

assemble_license_termsLicense Terms AssemblerA
Read-onlyIdempotent
Inspect

License Terms Assembler: OpenChainGraph compute node (compliance_mandate). 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-204-license-compatibility-checker. Output feeds: art-206-rights-record-builder. Open at: https://ainumbers.co/chaingraph/art-205-license-terms-assembler.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: Renders a deterministic license term sheet by substituting field values into a pre-approved template (CC-STANDARD-USE, IP3-RIGHTS-RECORD, NFT-EMBEDDED-LICENSE). Outputs: available_templates, checks, disclaimer, fields_missing, fields_used, rendered_html, rendered_text, template_id. Output schema: call describe_tool("assemble_license_terms").

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: fields, template_id. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behaviour, so the bar is lower, yet the description still adds real substance: deterministic server- or browser-side compute, transient processing with no storage or logging, a 'use synthetic or anonymised inputs only' constraint, and an exported AP2 artifact carrying execution_hash for provenance. It does not mention determinism failure modes or rate limits, but the safety and data-handling picture is well covered.

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

Conciseness3/5

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

The text is long and inverted: boilerplate, a URL, and a 64-character FV-status hash dominate the opening while the single sentence that explains what the tool does sits at the very end. Most content does earn its place, but the hash and link block is noise for tool selection and could be moved or trimmed.

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?

With four parameters, a nested policy_parameters object, and no output schema, the description compensates by enumerating the return fields (available_templates, checks, disclaimer, fields_missing, fields_used, rendered_html, rendered_text, template_id) and by naming upstream/downstream artifacts. An agent has essentially everything needed to call it and interpret the result; only a note on how fields versus template_id must line up is thin.

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 baseline is 3; the description earns a step up by naming the concrete template values (CC-STANDARD-USE, IP3-RIGHTS-RECORD, NFT-EMBEDDED-LICENSE) that the otherwise unconstrained policy_parameters.template_id accepts, which lets an agent construct a valid call without probing. The parent_hashes/parent_tool_ids semantics are only in the schema, not elaborated here.

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 final 'Summary' sentence gives a specific verb and resource: renders a deterministic license term sheet by substituting field values into one of three named pre-approved templates. That is enough to distinguish it from siblings like check_license_compatibility or build_rights_record. However, the opening sentence is mostly boilerplate ('OpenChainGraph compute node (compliance_mandate)') and the actual purpose arrives last, so the read is not front-loaded.

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 compute-mode paragraph tells the agent when to choose auto vs server vs browser, and the chain references (consumes art-204-license-compatibility-checker, feeds art-206-rights-record-builder) imply where this tool sits in a workflow. Those compute-mode rules are, however, nearly verbatim copies of the compute parameter's schema description, and the description never states when to pick this tool over a sibling such as select_embedded_license or certify_license_election.

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

assemble_mutual_ndaMutual NDA ComposerB
Read-onlyIdempotent
Inspect

Mutual NDA Composer: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-277-agreement-acceptance-binder. Open at: https://ainumbers.co/chaingraph/art-276-mutual-nda-composer.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: Assembles a Common Paper Mutual NDA (Version 1.0, CC BY 4.0) from your Cover Page Key Terms: purpose, effective date, MNDA term, term of confidentiality, and governing law and jurisdiction. Outputs: assembled_markdown, attribution, body_sha256, checks, contract_api, cover_page_markdown, disclaimer, license, source_url, template_id, zero_pii_notice. Output schema: call describe_tool("assemble_mutual_nda").

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: confidentiality_term_mode, confidentiality_term_years, effective_date, governing_law, jurisdiction, mnda_term_mode, mnda_term_years, modifications, purpose. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real behavior beyond that: compute:'auto' runs server-side on Cloudflare Workers when a kernel is registered, compute:'browser' returns a delegation URL instead of a result, gpu:true nodes always delegate, and inputs are processed transiently with no storage or logging. That delegation-vs-result distinction materially changes what the caller gets back.

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?

The text is heavily padded with infrastructure and provenance boilerplate (Cloudflare Workers kernel registration, a full FV-status hash URL, an offline-verification aside, an exhaustive output key list) before reaching the actual purpose. The single most useful sentence — what the tool assembles — is buried in the final third, so the structure works against fast triage.

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?

Although there is no output schema, the description enumerates the returned fields (assembled_markdown, body_sha256, checks, contract_api, cover_page_markdown, attribution, license, zero_pii_notice), states the required key terms, notes the AP2 execution_hash provenance, and identifies the downstream consumer. For a deterministic composer this is close to complete; only the confidentiality/MNDA term-mode value conventions remain unexplained.

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 compute enum, parent_hashes/parent_tool_ids chaining fields, and the required policy_parameters keys are already documented in the schema, which sets the baseline at 3. The description contributes the mapping of 'Cover Page Key Terms' onto policy_parameters fields, but it does not clarify value formats, term-mode semantics, or what 'modifications' should contain.

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 description does name the specific artifact and verb: assembles a Common Paper Mutual NDA (v1.0) from Cover Page Key Terms (purpose, effective date, MNDA term, confidentiality term, governing law/jurisdiction), which distinguishes it from generic siblings like assemble_license_terms or compile_work_mandate. The problem is placement: this core statement appears near the end after infrastructure boilerplate, so the tool's identity is not front-loaded.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no named alternative among the many assemble_*/compile_* siblings. The only directive-like sentence is a data-handling constraint ('Use synthetic or anonymised inputs only'), which is a restriction, not a selection rule. 'Output feeds: art-277-agreement-acceptance-binder' faintly implies downstream chaining but does not tell the agent when this tool is the right choice.

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

assemble_ocg_evidence_bundleEvidence Bundle Tier LabelerA
Read-onlyIdempotent
Inspect

Evidence Bundle Tier Labeler: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-408-evidence-bundle-tier-labeler.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: Assembles a shareable evidence bundle around an artifact and stamps the SPEC.md §SIDECAR.1 tiered label it qualifies for: OCG-Verify (envelope well-formed, execution_hash recomputes), OCG-Execute (additionally §21 chain-execution and §22 mandate gates hold), OCG-Prove (additionally a §18 compute-... Outputs: artifact_execution_hash, artifact_tool_id, disambiguation, eligible_tiers, gate_provenance, note, proof_ref_count, proof_refs, tier_label. Output schema: call describe_tool("assemble_ocg_evidence_bundle").

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: artifact_execution_hash, artifact_tool_id, gate_results, human_accountability_records, proof_refs. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description meaningfully adds beyond that: transient processing with no storage, logging or retention; server-side vs browser delegation semantics for GPU nodes; and that an AP2 artifact with execution_hash is exported for chain provenance. This is exactly the extra context the dimension rewards.

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?

Wrong score placeholder

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

Completeness3/5

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

With a nested policy_parameters object, no output schema, and 100% schema coverage, the description does supply output field names and the tier definitions, so an agent can understand the return. But the truncated OCG-Prove clause and the noise (URL, FV-status hash, repeated boilerplate) leave the conceptual model incomplete.

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 compute modes and parent_hashes/parent_tool_ids chaining are already documented; the description only restates the compute modes. The listed 'Outputs' names are outputs, not inputs, so they add no parameter meaning. 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?

The description does contain a specific verb+resource: 'Assembles a shareable evidence bundle around an artifact and stamps the ... tiered label it qualifies for' (OCG-Verify/Execute/Prove). However, that purpose statement is buried after several sentences of compute-node boilerplate, and the sentence defining OCG-Prove is truncated mid-word. It never differentiates from near-identical siblings like build_evidence_pack or assemble_aiuc1_evidence_pack.

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?

It gives a concrete input constraint ('Use synthetic or anonymised inputs only') and explains the compute:'auto' vs 'browser' vs gpu:true selection logic. It says nothing about when to choose this over the many sibling evidence-pack tools, which is the harder selection problem an agent faces.

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

assess_agent_directory_publish_readinessAgent Directory Publish Readiness DiagnosticC
Read-onlyIdempotent
Inspect

Agent Directory Publish Readiness Diagnostic: OpenChainGraph compute node (compliance_mandate). 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-133-agent-payment-rail-trust-crosswalk. Open at: https://ainumbers.co/chaingraph/art-134-agent-directory-publish-readiness.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.

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". See the tool's manifest for field names.

TDQS

C2.7/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 behavior. The description adds meaningful context beyond that: server-side vs browser compute routing, forced browser delegation for gpu:true nodes, transient processing with no storage/logging/retention, AP2 artifact export with execution_hash, and upstream artifact consumption.

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?

The description is bloated with a title restatement, a long compute-routing paragraph, an artifact URL, and a FV-status hash snapshot. The core purpose is not front-loaded, and several provenance details do not help an agent select or invoke the tool.

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

Completeness3/5

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

No output schema exists, and the description does not explain the shape of the readiness result or how the assessment decision is represented. It does provide useful context on compute behavior, privacy handling, upstream artifacts, and AP2 export, but leaves the actual diagnostic output underspecified.

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 explains compute, parent_hashes, parent_tool_ids, and policy_parameters. The description repeats compute-mode behavior and implies upstream chaining, but adds no detail about policy_parameters field names or required structure beyond pointing to the manifest.

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

Purpose2/5

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

The description largely restates the title ("Agent Directory Publish Readiness Diagnostic") and calls itself an "OpenChainGraph compute node (compliance_mandate)" without stating what readiness criteria are assessed or what decision is produced. It never distinguishes this diagnostic from sibling readiness tools such as run_agentic_readiness_diagnostic or score_mcp_readiness.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no when-not-to-use guidance, and no comparison to alternatives. The only usage constraint is "Use synthetic or anonymised inputs only," which is a data-handling rule rather than selection guidance.

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

assess_ai_act_conformityEU AI Act Credit-Scoring Conformity PackA
Read-onlyIdempotent
Inspect

EU AI Act Credit-Scoring Conformity Pack: OpenChainGraph compute node (model_governance). Regulatory deadline: 2027-12-02 (EU AI Act Annex III Part 5(b) — credit-scoring high-risk obligations fully apply 2 December 2027, per the Digital Omnibus amendments (Parliament final approval, June 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. Output feeds: ml-01-isolation-forest, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-05-eu-ai-act-credit-scoring-conformity.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.

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". See the tool's manifest for field names.

TDQS

A3.5/5.0
Behavior5/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), and the description adds real substance beyond them: server-vs-browser compute routing with gpu:true always delegating, transient non-retained input handling, and an AP2 artifact export carrying execution_hash for chain provenance. It even names the downstream consumers and the FV-status receipt semantics.

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

Conciseness3/5

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

Core information (scope, compute semantics, data handling) is front-loaded and useful, but the definition is padded with a regulatory deadline aside, a long explanatory parenthetical, and a full FV-status hash URL that an agent gains little from at selection time.

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

Completeness3/5

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

With no output schema, the description does well on provenance and privacy but leaves the actual decision surface opaque: nothing says what a conformity verdict looks like or which policy_parameters fields drive it. For a decision-function compute node with a free-form nested object, a bit more is warranted.

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 baseline is 3. The description restates the compute:auto/browser behavior already present in the schema and explicitly punts on policy_parameters ('See the tool's manifest for field names'), so it adds no field-level meaning for the one genuinely opaque parameter.

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 name, title and opening line make clear this is an EU AI Act credit-scoring (Annex III Part 5(b)) conformity assessment node in the model_governance domain. It states the verb+resource, though it never explicitly says what artifact the assessment produces and offers no differentiation from neighbors like run_ai_act_highrisk_fit, classify_annex3_decisioning_obligations or build_ai_conformity_pack.

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

Usage Guidelines2/5

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

There is no when-to-use/when-not guidance and no routing to alternative sibling tools for AI Act conformity work. The only operational guidance is about compute modes and using synthetic inputs, which is invocation mechanics rather than selection guidance.

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

assess_circumvention_diligenceCircumvention Diligence AssessorA
Read-onlyIdempotent
Inspect

Circumvention Diligence Assessor: OpenChainGraph compute node (compliance_mandate). 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-94-eccn-dual-use-classifier. Output feeds: art-96-no-russia-clause-pack-builder, cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-95-circumvention-diligence-assessor.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: Scores a transaction/contract config vs the EU 20th-package (23 Apr 2026) no-Russia clause + anti-circumvention due-diligence, emitting a liability-allocation verdict (seller liability-shift where DD documented under the safe harbour). Outputs: controlled_goods_flag, dd_gaps, dd_score_pct, diligence_grade, diversion_risk_flag, eu_20th_package_note, key_dates, liability_allocation, no_russia_clause_status, note, reference_version. Output schema: call describe_tool("assess_circumvention_diligence").

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". Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

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

Substantially exceeds what the annotations provide: it explains the auto/server/browser compute resolution, that gpu:true nodes always delegate to the browser with a delegation URL returned, that inputs are processed transiently and not stored or logged, that only synthetic or anonymised inputs may be used, and that an AP2 artifact with execution_hash is exported for provenance. These are real operational constraints an agent could not infer from readOnlyHint/idempotentHint alone.

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?

The opening two sentences are near-duplicates ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.'), and an inline FV-status SHA-256 hash plus a URL consume a large share of the text. The actual purpose, which matters most, is placed last rather than front-loaded.

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?

With no output schema, the description compensates by enumerating the return fields (liability_allocation, dd_score_pct, diligence_grade, dd_gaps, etc.), and compute behavior and provenance are fully covered. The remaining gap is the shape of the nested policy_parameters.transaction input, which an agent must guess.

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 compute, parent_hashes, parent_tool_ids and policy_parameters are already documented in the schema; baseline is 3. The description adds only marginal parameter meaning — the upstream-artifact sentence hints at how parent_hashes/parent_tool_ids are sourced, but nothing explains the nested policy_parameters.transaction payload that drives the scoring decision.

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 Summary sentence states a concrete verb and object — scoring a transaction/contract config against the EU 20th-package no-Russia clause and anti-circumvention due diligence — and names the verdict type emitted. The upstream/downstream artifact references (art-94 classifier in, art-96 clause-pack builder and cry-04 out) also implicitly differentiate it from the sibling build_no_russia_clause_pack. The problem is that this is buried at the end of a long preamble.

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 the artifact chain: it consumes the ECCN dual-use classifier output and feeds two named downstream builders, which tells an agent roughly where it sits in a chain. There is no explicit 'use this when X, not Y' statement and no exclusions relative to siblings like build_no_russia_clause_pack or score_nis2_supply_chain_diligence.

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

assess_cra_vuln_reporting_readinessCRA Vulnerability Reporting Readiness (Art. 14)B
Read-onlyIdempotent
Inspect

CRA Vulnerability Reporting Readiness (Art. 14): OpenChainGraph compute node (compliance_mandate). 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-139-cra-annex1-completeness-checker. Open at: https://ainumbers.co/chaingraph/art-140-cra-vuln-reporting-readiness.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: Assesses EU CRA Article 14 vulnerability reporting readiness: actively_exploited_detection, 24-hour early_warning_24h_process, 72-hour notification_72h_process, csirt_enisa_endpoint_configured, and coordinated_disclosure_policy. Outputs: gaps, vuln_reporting_ready. Output schema: call describe_tool("assess_cra_vuln_reporting_readiness").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely non-obvious behavior: the auto/server/browser compute binding, transient processing with no storage or logging, and an AP2 artifact export carrying execution_hash for chain provenance. It also discloses that 'Unknown keys are refused' at the parameter level and that the FV-status receipt verifies offline. Some of this is boilerplate shared across the node family, but it goes well beyond what annotations convey.

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?

The description is dominated by reusable platform boilerplate — compute-mode explanation duplicated from the schema, a raw FV-status URL with a 64-character hash, and a 'call describe_tool(...)' pointer. The tool-specific content (one Summary sentence plus a criterion list) is at the very end rather than front-loaded.

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?

For a deterministic compute node with no output schema, the description supplies the decision criteria, the upstream artifact dependency, the exported artifact type, and the output field names (gaps, vuln_reporting_ready), which is enough for an agent to invoke and interpret it. What's missing is selecting-guide context relative to the many adjacent CRA and readiness tools.

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%, so all four parameters are already documented, including compute, parent_hashes, parent_tool_ids, and the nested policy_parameters object. The description's contribution is naming the five policy_parameters keys as assessment criteria, which helps interpret them but adds little syntax or format detail beyond the schema.

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 Summary section states a concrete verb and compliance obligation ('Assesses EU CRA Article 14 vulnerability reporting readiness') and enumerates the five criteria it evaluates, which is enough to tell it apart from check_cra_annex1_completeness. However, the actual purpose is buried behind compute-binding and provenance boilerplate, so an agent must read to the end to learn what the tool does.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no named alternative among the dozens of sibling assess_* and check_cra_* tools. The only routing signal is 'Consumes upstream artifacts from: art-139-cra-annex1-completeness-checker', which describes a data dependency rather than a selection rule.

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

assess_defi_lendingDeFi Lending Health and Liquidation MonitorB
Read-onlyIdempotent
Inspect

DeFi Lending Health and Liquidation Monitor: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-271-defi-lending-health.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: Computes DeFi lending health factor, liquidation price, borrow capacity, and distance to liquidation for Aave v3, Morpho Blue, Fluid, Sky (MakerDAO v2), and Liquity v2. Outputs: borrow_capacity_usd, buffer_to_liquidation_pct, collateral_value_usd, current_ltv_pct, debt_value_usd, distance_to_liquidation_pct, health_factor, health_status, liquidation_bonus_pct, liquidation_mechanism, liquidation_mechanism_note, liquidation_penalty_usd, liquidation_price_usd, liquidation_threshold_pct, not_financial_advice, pii_note, protocol, regulatory_basis, table_source, table_version. Output schema: call describe_tool("assess_defi_lending").

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: collateral_amount, liquidation_bonus_pct, liquidation_threshold_pct, protocol. Unknown keys are refused.

TDQS

B3.2/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 description carries a lighter burden, and it does add real context: inputs are processed transiently and not stored or logged, the call exports an AP2 artifact with an execution_hash for chain provenance, and compute mode changes where execution happens. It does not describe failure modes or latency, but the added disclosure is substantive.

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?

Large amounts of text are spent on repeated boilerplate ('OpenChainGraph compute node', stated twice), a duplicated compute-mode explanation already in the schema, a documentation URL, and a long FV-status hash URL. The one sentence that actually describes the tool arrives near the end, so the content is back-loaded rather than front-loaded.

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?

With no output schema, listing the output fields (health_factor, liquidation_price_usd, buffer_to_liquidation_pct, health_status, liquidation_mechanism, etc.) does meaningful work in place of a schema. Privacy handling and provenance are covered, and the nested policy_parameters contract lives in the schema; only the meaning/units of ambiguous fields like health_status or buffer_to_liquidation_pct are left unstated.

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 compute, parent_hashes, parent_tool_ids, and the policy_parameters object with its required keys. The description only restates the compute modes and never clarifies the semantics of protocol, collateral_amount, collateral_price_usd, or the distinction between collateral_value_usd and collateral_amount × price beyond what the schema implies. 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?

The Summary sentence gives a specific verb-and-resource: computes health factor, liquidation price, borrow capacity, and distance to liquidation, with the covered protocols named (Aave v3, Morpho Blue, Fluid, Sky/MakerDAO v2, Liquity v2). It is not differentiated from near-neighbours like assess_restaking_risk, compute_ltv_ratios, or model_perp_margin, and the operative sentence is buried under provenance boilerplate.

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

Usage Guidelines2/5

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

There is no statement of when to pick this over the many adjacent collateral/leverage tools in the sibling list, and no prerequisites or exclusions. The only quasi-guidance is the compute-mode explanation and 'use synthetic or anonymised inputs only', which are execution constraints rather than selection guidance.

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

assess_exam_readiness_packExamination Readiness PackA
Read-onlyIdempotent
Inspect

Examination Readiness Pack: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-670-examination-readiness-pack.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: One pack, two selectable regime modules, five stages of regulatory exam management over an institution's own supplied request list. Outputs: valid, errors, total, delivered, open, overdue_count, overdue_ids, readiness_pct, findings, overall, module_annex, evidence_handoff. Output schema: call describe_tool("assess_exam_readiness_pack").

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: as_of, module, requests. Unknown keys are refused.

TDQS

A3.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 closed-world behavior. The description adds material behavior beyond annotations: deterministic server/browser compute binding, gpu delegation, transient processing with no storage/logging/retention, synthetic-input requirement, AP2 artifact export with execution_hash, and offline-verifiable FV status; there is no annotation contradiction.

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?

The actual purpose summary is buried after repeated OpenChainGraph compute-node boilerplate, an external URL, and FV-status details. Several sentences are aimed at provenance/documentation rather than tool selection or invocation, and the description is not front-loaded.

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?

For a complex nested compute tool with no output schema, the description covers compute modes, privacy behavior, provenance, module selection, and lists the output fields. It still lacks clear usage routing and deeper parameter semantics, but it is broadly complete for invocation.

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 baseline is 3. The description explains compute auto/browser/gpu behavior and mentions the two regime modules and supplied request list, but it adds little about parent_hashes, parent_tool_ids, or the nested policy_parameters beyond what the schema already documents.

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 late summary states the tool is a pack for regulatory exam management over an institution's own supplied request list, with two selectable regime modules and five stages, so the resource and scope are clear. It does not explicitly distinguish itself from the many sibling readiness/compliance assessment tools, and the leading compute-node boilerplate delays the core purpose.

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?

There is no explicit when-to-use, when-not-to-use, or named alternative guidance. The summary implies the context (regulatory exam management over an institution's request list) and the compute enum implies mode selection, but an agent must infer when this tool is preferable to siblings such as other readiness diagnostics.

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

assess_iso42001_aims_conformanceISO 42001 AIMS Clause ConformanceA
Read-onlyIdempotent
Inspect

ISO 42001 AIMS Clause Conformance: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-172-ai-risk-impact-assessment-validator. Open at: https://ainumbers.co/chaingraph/art-171-iso42001-aims-clause-conformance.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: Assess ISO/IEC 42001 AIMS conformance across clauses 4-10 (context, leadership, planning, support, operation, evaluation, improvement) and six Annex A controls (AI policy, roles, impact assessment, data governance, system lifecycle, third-party supplier management). Outputs: clause_score, clauses_fully_present, control_score, controls_fully_present, gaps, maturity_band, overall_maturity, total_clauses, total_controls. Output schema: call describe_tool("assess_iso42001_aims_conformance").

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: aims. Unknown keys are refused.

TDQS

A4/5.0
Behavior5/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), and the description adds substantial context beyond them: server-vs-browser compute binding, transient non-retention of inputs, an 'use synthetic or anonymised inputs only' caution, and AP2 artifact export with execution_hash for provenance. No contradiction with readOnlyHint, since exporting a provenance receipt is not a data mutation.

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

Conciseness3/5

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

The substantive summary is front-loaded and specific, but it is padded with duplicated boilerplate ('OpenChainGraph compute node' stated twice), a long generic privacy/compute paragraph, and a raw FV-status receipt URL blob that is not needed to select or call the tool.

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?

With no output schema, the description compensates by enumerating every returned field (clause_score, gaps, maturity_band, etc.) and pointing to describe_tool for the full schema, and it explains compute delegation and artifact chaining. For a 4-param nested-input tool this is nearly complete, short of explicit tool-selection guidance.

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 each parameter is already documented, so the baseline is 3. The description's chaining note ('AP2 artifact with execution_hash for chain provenance') loosely ties to parent_hashes and it restates compute-mode behavior, but it adds nothing about policy_parameters/aims, the one required input.

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?

The summary states a specific verb and resource: assess ISO/IEC 42001 AIMS conformance across clauses 4-10 and six Annex A controls, naming each clause/control family. This is clearly distinct from siblings like assess_ai_act_conformity or check_gpai_code_conformance without opening any schema.

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?

It names a downstream consumer ('Output feeds: art-172-ai-risk-impact-assessment-validator') and explains compute-mode selection, which implies where it sits in a chain, but it never states when to choose this over alternatives such as score_clause_coverage or assess_ai_act_conformity, nor any exclusions.

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

assess_mar_crypto_surveillanceMAR-Crypto Surveillance-Readiness AssessorB
Read-onlyIdempotent
Inspect

MAR-Crypto Surveillance-Readiness Assessor: OpenChainGraph compute node (compliance_mandate). 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-98-mica-casp-fit-diagnostic. Output feeds: cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-103-mar-crypto-surveillance-readiness.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: Scores market-abuse arrangements (Arts 86-92 + Dec-2024 RTS): PPAET (prevention/detection), STOR templates, insider lists, manipulation-pattern config on synthetic order batches. Outputs: arrangement_scores, assets_in_scope, composite_pct, gaps, mar_rts_note, note, ppaet_status, reference_version, stor_ready, surveillance_grade. Output schema: call describe_tool("assess_mar_crypto_surveillance").

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". Unknown keys are refused.

TDQS

B3.4/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 description doesn't need to re-litigate safety, and instead adds genuinely useful traits: deterministic execution, server-vs-browser compute delegation, transient non-retained processing of inputs, and export of an AP2 artifact with execution_hash for provenance chaining. The only weakness is that the compute-mode paragraph largely restates the schema's `compute` field.

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?

The text is poorly front-loaded: title echo, compute-binding boilerplate, privacy note, a raw URL and an FV-status receipt path all precede the one sentence that says what the tool actually does. Several passages (compute mode, determinism) duplicate schema or sibling-wide boilerplate and do not earn their space.

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

Completeness3/5

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

It does list the output fields (arrangement_scores, composite_pct, gaps, stor_ready, surveillance_grade, etc.) and points to describe_tool for the full schema, plus covers privacy and provenance. The critical gap is that with zero required parameters the agent is never told which `policy_parameters` keys a kernel-backed compliance node accepts, beyond 'unknown keys are refused'.

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%, so the baseline is 3. The description explains compute modes and parent hash chaining at roughly the same depth as the schema already does, and it hints at the content of `policy_parameters` via the PPAET/STOR/insider-list/manipulation-pattern domains, but it never enumerates valid keys for that free-form object.

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 'Summary' sentence names a specific verb and resource: 'Scores market-abuse arrangements (Arts 86-92 + Dec-2024 RTS): PPAET, STOR templates, insider lists, manipulation-pattern config'. That is concrete enough to separate it from generic siblings like assess_mica_casp_readiness or run_mica_casp_fit. However, the actual purpose is buried at the end behind compute-node boilerplate, so an agent skimming the first sentences sees only 'OpenChainGraph compute node' rather than the function.

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: the description states it 'Consumes upstream artifacts from: art-98-mica-casp-fit-diagnostic' and its output 'feeds: cry-05-agent-action-audit-trail-aggregator', which positions it in a workflow. It also constrains inputs ('Use synthetic or anonymised inputs only'). But it never says when to pick this over sibling readiness assessors, and no exclusions are stated.

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

assess_mica_casp_readinessCASP Authorization-Readiness AssessorB
Read-onlyIdempotent
Inspect

CASP Authorization-Readiness Assessor: OpenChainGraph compute node (compliance_mandate). 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-98-mica-casp-fit-diagnostic, art-99-mica-transitional-deadline-router. Output feeds: art-101-mica-art67-own-funds-calculator, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-100-mica-casp-authorization-readiness.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: Scores readiness for MiCA CASP authorization (Arts 59-63): service-permission scope, governance/fit-and-proper, custody segregation, complaints/conflicts, ICT/DORA overlap. Outputs: application_pack_checklist, authorization_grade, composite_pct, dimension_scores, gaps, note, notified_body, reference_version. Output schema: call describe_tool("assess_mica_casp_readiness").

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: inputs. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/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 adds genuinely non-obvious behaviour: server-side vs browser delegation, transient processing with no retention, AP2 export with execution_hash, and that the FV-status file is a snapshot receipt. The contribution is diluted by generic compute-node boilerplate, but the substance is there.

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?

Front-loading is poor: the description opens with the title and a duplicated 'OpenChainGraph compute node' sentence, and the actual purpose only appears in the trailing Summary after compute-mode, data-retention, artifact-chaining, URL and FV-status text. Substantial boilerplate that does not earn its place for this tool.

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

Completeness3/5

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

The enumerated outputs and upstream/downstream artifacts compensate for the absent output schema, and the retention/compute notes are relevant. However, with a nested, largely untyped policy_parameters object and no input example, an agent still lacks enough to construct a correct call without consulting describe_tool.

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%, so the schema already documents all four parameters including policy_parameters and the compute enum. The description repeats the compute-mode semantics and the 'required: inputs' constraint without adding format or shape detail beyond the schema – baseline 3.

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 Summary states a specific verb and resource – 'Scores readiness for MiCA CASP authorization (Arts 59-63)' – and enumerates the five scored dimensions. It is distinguishable from siblings such as run_mica_casp_fit or check_mica_reserve_disclosure, although it never names them or contrasts the scope.

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?

'Use synthetic or anonymised inputs only' is a real usage constraint, and the upstream artifact IDs hint at prerequisites. But there is no when-to-use/when-not-use statement and no routing away from the near-duplicate mica fit tools that fill the sibling list.

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

assess_model_validation_statusModel Validation Status AssessorA
Read-onlyIdempotent
Inspect

Model Validation Status Assessor: OpenChainGraph compute node (compliance_control). 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-451-model-outcome-analysis. Open at: https://ainumbers.co/chaingraph/art-453-model-validation-status.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: Determines a model's SR 26-2 validation status by combining its proportionality tier, last-validation date, and most recent outcome-analysis result against a tier-based revalidation cadence (high=365 days, moderate=730, limited=1095, overridable). Outputs: as_of_date, cadence_days, days_since_validation, last_validation_date, never_validated, next_validation_due_days, outcome_status, overdue, tier, validation_status. Output schema: call describe_tool("assess_model_validation_status").

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: as_of_date, cadence_days_override, last_validation_date, outcome_status, tier. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavioral traits: server-side vs browser compute modes, GPU delegation behavior, transient input processing with no storage or logging, AP2 artifact export with execution_hash, and the nature of the FV-status receipt as an offline-verifiable snapshot. These details materially help an agent understand execution and provenance.

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?

The core purpose is buried near the end in a 'Summary' section behind repeated compute-node boilerplate, a URL, and a long FV-status hash. Several sentences, such as the offline-verification snapshot note and duplicated 'Deterministic OpenChainGraph compute node' phrasing, do not directly help an agent select or invoke the tool.

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?

For a complex compute tool with no output schema, the description does well by listing the output fields and explaining compute modes, privacy handling, upstream artifact consumption, and artifact export. The main remaining gap is the absence of explicit usage guidance versus sibling tools.

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 description coverage is 100%, so the schema already carries the baseline documentation burden for all four parameters. The description adds domain meaning around the policy_parameters, especially tier, last_validation_date, outcome_status, and the overridable cadence, while compute mode behavior is also reiterated contextually.

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 description clearly states the specific operation: determining a model's SR 26-2 validation status by combining proportionality tier, last-validation date, and outcome-analysis result against a tier-based cadence. It also names the upstream artifact it consumes, which helps orient it in the chain, but it does not explicitly distinguish this tool from nearby siblings such as compute_eba_im_model_validation_tracker or compare_model_outcome_analysis.

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 implied by the detailed purpose statement and the named upstream dependency, so an agent can infer this is for SR 26-2 model validation status checks. However, there is no explicit 'use this when...' guidance, no stated exclusions, and no direct routing to alternatives.

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

assess_naic_ais_program_readinessNAIC AI Systems Program Readiness AssessmentC
Read-onlyIdempotent
Inspect

NAIC AI Systems Program Readiness Assessment: OpenChainGraph compute node (compliance_mandate). 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-239-test-bifsg-bias-thresholds. Open at: https://ainumbers.co/chaingraph/art-240-assess-naic-ais-program-readiness.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.

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". See the tool's manifest for field names.

TDQS

C2.8/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/closed-world, but the description adds real behavioral context beyond them: inputs are processed transiently and never stored or logged, compute:'browser' returns a delegation URL instead of a result, and the node emits an AP2 artifact carrying execution_hash for chain provenance. The FV-status receipt path further discloses that the provenance snapshot verifies offline. This is meaningful disclosure for a compute node whose execution location is non-obvious.

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?

The text is long and front-loaded with boilerplate that doesn't help selection or invocation: generic OpenChainGraph compute-binding prose, a privacy sentence, an AP2 export note, and a full FV-status URL plus hash. A roughly equal volume is spent on chain/compute plumbing as on anything about the assessment itself, and no purpose statement precedes the plumbing.

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

Completeness2/5

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

For a compliance-mandate assessment tool with a free-form policy_parameters object and no output schema, the description never explains what is assessed against NAIC AI systems expectations, what the result/report contains, or how to populate the decision-function inputs. It answers execution and provenance questions well but leaves the core 'what does this judge and what do I feed it' question unanswered.

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 compute, parent_hashes and parent_tool_ids are fully documented in the schema; the description mainly repeats the compute-mode semantics. The critical gap is policy_parameters: the description only points at 'the tool's manifest for field names', so the agent has no way to know which assessment fields to supply for a free-form nested object.

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

Purpose3/5

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

The opening clause simply restates the tool name/title, and the body pivots immediately to OpenChainGraph infrastructure (compute modes, privacy, AP2 export) rather than saying what the assessment evaluates or how a NAIC AI-systems readiness verdict is produced. The one substantive hint is the upstream dependency on art-239-test-bifsg-bias-thresholds, which implies bias-threshold evidence is consumed. Against dozens of adjacent 'readiness/fit' siblings (run_insurance_reporting_fit, assess_iso42001_aims_conformance, run_ai_governance_fit), nothing distinguishes 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 Guidelines2/5

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

No statement of when to call this versus the many other readiness/fit-assessment siblings, and no prerequisites or exclusions. The only usage-like instruction is the input constraint 'Use synthetic or anonymised inputs only', which constrains data handling rather than tool selection.

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

assess_psd3_readinessPSD3 / PSR Readiness CheckerB
Read-onlyIdempotent
Inspect

PSD3 / PSR Readiness Checker: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2027-06-01 (EU PSD3 expected transposition ~2027; UK PSR enacted 2024 (APP reimbursement Oct 2024 already live)). 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. Output feeds: art-04-agent-identity-attestation-checker, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-14-psd3-psr-readiness-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: Six-domain PSD3/PSR readiness rubric: Open Finance access rights (Art.35/36), TPP categorisation (PISP/AISP/PIISP), SCA exemption alignment (Art.85–90), consent framework maturity, fraud liability model (Art.59–65), and embedded finance/BaaS scope. Outputs: band, critical_gaps, domain_scores, overall_readiness_score, verdict. Output schema: call describe_tool("assess_psd3_readiness").

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: baasScope, consentMaturity, fraudLiability, instType, jurisdiction, openBankingLevel, openFinance, psd2Status, scaExemptions, tppTypes. Unknown keys are refused.

TDQS

B3.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), and the description adds real value beyond them: deterministic compute, server-vs-browser execution routing, transient no-storage/no-logging data handling, and the AP2 artifact with execution_hash it exports for chain provenance. The compute-mode paragraph largely restates the schema enum, which is already at 100% coverage, so it is not fully additive.

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?

The definition is poorly front-loaded: it leads with node-type restatement and compute-routing text duplicated from the schema, then includes FV-status receipt verbiage and a documentation URL before finally stating what the tool computes. The genuinely useful sentences (rubric summary, outputs, data-handling policy) are diluted by boilerplate.

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

Completeness3/5

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

With no output schema, the description does the right thing by listing return fields (band, critical_gaps, domain_scores, overall_readiness_score, verdict). But for a tool requiring ten nested policy_parameters values, it never explains what those values should look like, which is the main risk for incorrect invocation; the AP2 export and privacy notes are good supplements.

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 baseline is 3. The description's domain list loosely maps onto the opaque policy_parameters keys (TPP categorisation → tppTypes, SCA exemption alignment → scaExemptions, fraud liability model → fraudLiability, embedded finance/BaaS → baasScope), which helps somewhat, but it never states accepted values or formats for those untyped properties.

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 description names a specific verb+resource (PSD3/PSR readiness assessment) and enumerates the six rubric domains with article references (Art.35/36, Art.85–90, Art.59–65), which makes the scope unmistakable against siblings like run_mica_casp_fit or assess_ai_act_conformity. However, the actual purpose statement is buried at the end after node-type and compute-binding boilerplate, and no sibling is named explicitly for routing.

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 by the deadline context (2027-06-01 transposition) and the instruction to use synthetic/anonymised inputs. There is no 'use this when / use X instead' guidance, no statement of prerequisites (e.g., which policy_parameters facts must be known before calling), and no exclusions relative to the many other readiness/fit tools.

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

assess_restaking_riskRestaking Delegation and Slashing Risk AnalyzerB
Read-onlyIdempotent
Inspect

Restaking Delegation and Slashing Risk Analyzer: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-272-restaking-risk.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: Models restaking delegation rewards, operator fees, AVS yield, and slashing-waterfall risk for EigenLayer and Symbiotic. Outputs: buffer_absorbs_usd, delegator_net_slash_eth, delegator_net_slash_usd, eth_price_usd, expected_annual_slash_usd, first_loss_tranche_pct, gross_apy_pct, gross_usd_per_year, insurance_enabled, insurance_makes_sense, insurance_premium_pct_of_rewards, insurance_premium_usd_per_year, max_slash_usd, net_apy_pct, net_apy_risk_adjusted_pct, net_usd_per_year, net_usd_per_year_risk_adjusted, net_with_insurance_apy_pct, net_with_insurance_usd_per_year, not_financial_advice, operator_cut_pct, operator_fee_usd_per_year, pii_note, protocol, protocol_note, regulatory_basis, risk_reward_ratio, slash_magnitude_pct, slashing_risk_pct, staked_eth, staked_usd, table_source, table_version. Output schema: call describe_tool("assess_restaking_risk").

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: avs_reward_apy_pct, base_staking_apy_pct, first_loss_tranche_pct, insurance_enabled, operator_fee_pct, protocol, slash_magnitude_pct, slashing_risk_pct. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real context beyond them: transient, non-logged, non-retained input processing; deterministic computation with an AP2 artifact and execution_hash for provenance; and the browser-delegation behaviour for gpu:true nodes. That is substantive disclosure for a compute node. It stops short of describing failure modes or what happens when required policy keys are missing.

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?

The structure is backwards: platform boilerplate and an FV-status URL with a long hash come first, and the one sentence that says what the tool does comes last. Roughly forty output field names are dumped inline in a single run-on list, most contributing no interpretable meaning. Every sentence does not earn its place.

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

Completeness3/5

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

There is no output schema, so the description must convey returns – it enumerates field names but never explains what the key ones mean (first_loss_tranche_pct, insurance_makes_sense, risk_reward_ratio). Data-handling and provenance are covered well. For a nested-parameter risk model, the description is adequate but leaves an agent guessing at output interpretation.

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 compute, parent_hashes and the eleven policy sub-fields. The description's compute-mode text largely restates the schema's own compute description, and it adds no meaning to policy_parameters such as first_loss_tranche_pct or insurance_premium_pct_of_rewards. Baseline 3 applies when the schema carries the load.

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 'Summary' sentence gives a specific verb+resource: models restaking delegation rewards, operator fees, AVS yield and slashing-waterfall risk for EigenLayer and Symbiotic. That is enough to separate it from generic siblings like assess_defi_lending. It is not front-loaded, though – the purpose is buried after several sentences of platform boilerplate.

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

Usage Guidelines2/5

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

There is no statement of when to pick this tool over alternatives (assess_defi_lending, model_arc_cpn_economics, etc.), and no prerequisites or scenario framing. 'Use synthetic or anonymised inputs only' is a data-handling constraint, not usage guidance. The compute-mode hints are parameter-level behaviour already documented in the schema.

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

assess_suspect_product_statusDSCSA Suspect/Illegitimate Product Quarantine AssessorB
Read-onlyIdempotent
Inspect

DSCSA Suspect/Illegitimate Product Quarantine Assessor: OpenChainGraph compute node (compliance_mandate). 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-113-saleable-returns-verifier. Open at: https://ainumbers.co/chaingraph/art-114-suspect-product-quarantine.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: Determine suspect vs illegitimate product status and required actions (quarantine, investigate, 72-hour FDA Form 3911 notification, trading partner notification). Outputs: required_actions, status. Output schema: call describe_tool("assess_suspect_product_status").

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". Unknown keys are refused.

TDQS

B3.2/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, and the description still adds real context: server-side vs browser delegation rules, transient non-retained input handling with a 'synthetic or anonymised inputs only' warning, and an AP2 artifact export carrying execution_hash for provenance. The compute-mode paragraph largely restates the schema's own compute description, which limits it from 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.

Conciseness2/5

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

The definition opens with a title restatement and two nearly identical 'deterministic OpenChainGraph compute node' sentences, then a compute-mode block, privacy note, provenance note, and an FV-status URL before reaching the actual purpose. The most useful information is last rather than front-loaded, and boilerplate occupies most of the text.

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

Completeness3/5

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

It lists the outputs (required_actions, status), the upstream artifact to chain from, and the provenance artifact, which is adequate for a 0-required-parameter compute node. However, the decision inputs in policy_parameters are left unexplained even though they are the substance of the suspect-vs-illegitimate determination, and there is no output schema to fall back on.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description only echoes the compute modes and never explains the policy_parameters keys (quarantined, fda_notified, verification_failed, identifier_unmatched, counterfeit_indicators) that drive the assessment, so it adds no meaning beyond the schema.

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 'Summary' sentence names a specific verb and resource (determine suspect vs illegitimate product status under DSCSA) plus the concrete actions it triggers (quarantine, investigate, Form 3911, trading partner notice). It is clearly distinguishable from nearby siblings such as verify_saleable_return or verify_dscsa_transaction_statement, but the definition never says so, and the purpose is buried after a long preamble.

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

Usage Guidelines2/5

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

There is no statement of when to pick this tool over the DSCSA-related siblings or when not to use it. The compute-mode sentence describes execution modes, not selection guidance, and the upstream-artifact mention (art-113-saleable-returns-verifier) hints at sequencing without saying what to do with it.

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

assess_traiga_exposureTRAIGA Exposure AssessorA
Read-onlyIdempotent
Inspect

TRAIGA Exposure Assessor: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-314-traiga-safe-harbor-pack-builder. Open at: https://ainumbers.co/chaingraph/art-313-traiga-exposure-assessor.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: Assesses supplied Texas AI-deployment attributes and intentional-use assertions against the Texas Responsible AI Governance Act (TRAIGA, HB 149, eff. Outputs: cure_window_days, matched_prohibited_uses, penalty_per_violation_usd, prohibited_use_detected, statute_citation, traiga_applicable. Output schema: call describe_tool("assess_traiga_exposure").

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: asserted_use_flags, deploys_in_texas. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the annotations, the description discloses deterministic execution, server-side versus browser delegation behavior, transient non-retention of inputs, synthetic-input requirements, AP2 artifact export with execution_hash, and FV-status provenance. This is substantial behavioral context, though the phrase 'Exports an AP2 artifact' is slightly ambiguous against readOnlyHint and the description does not discuss authorization or rate limits.

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?

The description is long and cluttered with repeated compute-node boilerplate, an external URL, a raw FV-status hash, and an output-schema lookup instruction. The actual purpose appears near the end rather than being front-loaded, and several sentences do not help an agent select or invoke the tool.

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?

Given the absence of an output schema, the description usefully lists output fields and explains provenance/artifact behavior. Combined with rich annotations and full schema descriptions, it gives enough context to call the tool correctly, though it could be better organized around assessment semantics.

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 parameter baseline is 3. The prose explains compute modes and policy-parameter required keys, but those details are already present in the schema; the description adds little meaning beyond the structured parameter documentation.

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 description states a specific verb and resource: it assesses Texas AI-deployment attributes and intentional-use assertions against TRAIGA/HB 149. The final summary makes the purpose clear, though the first several sentences are about compute-node mechanics rather than the assessment itself, and sibling differentiation is only indirect via the downstream safe-harbor pack builder.

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 implied by the name and by the statement that outputs feed the TRAIGA safe-harbor pack builder, but there is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The compute-mode guidance is useful for invocation but does not substitute for use-case routing.

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

assess_vida_drr_reporting_obligationViDA DRR Transaction ReporterC
Read-onlyIdempotent
Inspect

ViDA DRR Transaction Reporter: OpenChainGraph compute node (compliance_mandate). 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-159-vida-einvoice-en16931-conformance-validator. Output feeds: art-161-vida-recapitulative-statement-migration-assessor. Open at: https://ainumbers.co/chaingraph/art-160-vida-drr-transaction-reporter.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.

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". See the tool's manifest for field names.

TDQS

C2.7/5.0
Behavior4/5

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

Beyond the annotations (which already declare readOnly/idempotent/non-destructive), the description adds meaningful traits: inputs processed transiently with no logging/retention, 'use synthetic or anonymised inputs only', an AP2 artifact with execution_hash for provenance, and gpu:true always delegating to browser. These are genuinely useful behavioral facts not covered by 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.

Conciseness2/5

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

The text is boilerplate-heavy, repeating the compute-mode explanation already in the schema, and pads with a long FV-status hash blob. The actual purpose of the assessment is never front-loaded or stated at all.

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

Completeness3/5

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

For a 4-param compute node with no output schema and a nested policy_parameters object, the description covers compute routing and provenance well but leaves the decision function and policy_parameters shape entirely undocumented, deferring to an external manifest.

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 parameter meaning is largely carried by the schema. The description reinforces compute-mode behavior consistent with the enum but adds no syntax or format detail for policy_parameters, which remains opaque ('see the tool's manifest').

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

Purpose2/5

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

The lead 'ViDA DRR Transaction Reporter: OpenChainGraph compute node (compliance_mandate)' restates the name/title and labels a category rather than saying what the tool actually assesses about DRR reporting obligations. Pipeline position (consumes art-159, feeds art-161) hints at a domain but never states the verb+resource outcome an agent would need to distinguish it from siblings like assess_vida_recapitulative_migration or run_vida_readiness_diagnostic.

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

Usage Guidelines2/5

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

No statement of when to use this tool versus the many ViDA-adjacent siblings, and no prerequisites or exclusions. The upstream/downstream artifact references provide chaining context but not selection guidance.

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

assess_vida_recapitulative_migrationViDA Recapitulative Statement Migration AssessorC
Read-onlyIdempotent
Inspect

ViDA Recapitulative Statement Migration Assessor: OpenChainGraph compute node (compliance_mandate). 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-160-vida-drr-transaction-reporter. Open at: https://ainumbers.co/chaingraph/art-161-vida-recapitulative-statement-migration-assessor.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behaviour and the description is consistent with them, while adding real context beyond them: deterministic execution, transient processing with no storage/logging, a synthetic-inputs-only constraint, and an AP2 artifact export carrying execution_hash for provenance. It also names the required upstream artifact (art-160-vida-drr-transaction-reporter), which is material for correct invocation.

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?

Long stretches are generic node boilerplate (Cloudflare Workers, gpu:false kernels, AP2 export mechanics) plus a 64-character FV-status path that no agent needs in order to select the tool. 'Deterministic OpenChainGraph compute node' is said twice, and the front-loaded portion is title repetition rather than purpose.

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

Completeness2/5

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

One of four parameters is an open-ended object whose fields are not described anywhere in the definition and there is no output schema, yet the description says nothing about what the assessment returns or what the compliance criteria are. It is complete on the compute/transport layer and largely silent on the decision layer that defines the tool.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and the shape of policy_parameters; the description only echoes the compute-mode semantics and the parent-hash chaining rather than adding to them. For policy_parameters it defers entirely to 'the tool's manifest for field names', leaving the actual decision inputs undisclosed.

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

Purpose2/5

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

The description opens by restating the title verbatim ('ViDA Recapitulative Statement Migration Assessor: OpenChainGraph compute node') and never states what the assessment actually evaluates or produces. Nothing distinguishes it from close siblings such as assess_vida_drr_reporting_obligation, run_vida_readiness_diagnostic, or route_vida_oss_registration.

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

Usage Guidelines2/5

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

There is no task-level guidance on when to run this assessor versus the other ViDA tools, nor any prerequisites. The only guidance offered is operational ('compute:"auto"' vs 'compute:"browser"'), which is transport mechanics, not usage selection.

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

attest_bulk_disbursement_integrityBulk Disbursement IntegrityB
Read-onlyIdempotent
Inspect

Bulk Disbursement Integrity: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-518-bulk-disbursement-integrity.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: Attests that a bulk payment run -- salaries, pensions, social transfers, vendor payments -- is internally consistent and matches its authorization. Outputs: absent_this_run, as_of, authorized_payee_count, authorized_total_display, authorized_total_minor_units, control_total_reconciled, count_break, currency, declared_exclusions, destination_cap_breaches, duplicate_candidate_cluster_count, duplicate_candidate_clusters, has_destination_cap_breach, has_limit_breach, has_roster_movement, limit_breaches, new_this_run, note, per_payee_limit_minor_units, per_run_limit_breach, per_run_limit_minor_units, prior_run_payee_count, rationale, reconciled_record_count, reconciled_total_display, reconciled_total_minor_units, rejected_inputs, roster_movement_verifiable, run_reference, split_payment_candidates, value_break_display, value_break_minor_units. Output schema: call describe_tool("attest_bulk_disbursement_integrity").

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: as_of, authorized_control_total, currency, declared_exclusions, duplicate_key_commitment_scheme, payee_records, per_payee_limit_minor_units, per_run_limit_minor_units, prior_run_payee_refs, run_reference. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Well beyond the annotations, it discloses that execution is deterministic, that gpu:false nodes run server-side on Cloudflare Workers unless compute:"browser" forces delegation, that inputs are processed transiently and not stored or logged, and that an AP2 artifact with execution_hash is exported for chain provenance. The note that the FV-status file is a snapshot that verifies offline is genuinely useful context. The compute paragraph largely restates the schema's own compute description, which tempers the score.

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?

Purpose is not front-loaded; five sentences of generic compute-node, privacy, and artifact boilerplate precede the one useful Summary line. The compute-mode text duplicates the schema verbatim, and a full FV-status URL plus a 40-hex JSON path consume substantial space for a pointer. The 30-item output field dump is low-density compared to pointing at describe_tool.

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

Completeness3/5

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

It covers what the tool decides, the compute/delegation model, retention behavior, and names the output fields, which compensates for the absent output schema reasonably well. However it never explains the decision logic an agent should expect — duplicate cluster detection, destination caps, roster movement — and the boilerplate crowds out anything about input semantics like duplicate_key_commitment_scheme.

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 the schema already documents compute, parent_hashes, parent_tool_ids, and every policy_parameters key including the required list. The description adds no additional meaning about inputs — the long field enumeration describes outputs, not parameters. 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?

The summary sentence states a specific verb and resource: attests that a bulk payment run (salaries, pensions, social transfers, vendor payments) is internally consistent and matches its authorization. That is concrete enough to distinguish it from generic reconciliation siblings like attest_daily_reconciliation. It loses a point because the actual purpose is buried after several sentences of OpenChainGraph node boilerplate rather than stated up front.

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 description implies the use case (verify a bulk payment batch before disbursement) but never states when to choose this over alternatives such as attest_daily_reconciliation or reconcile_report_to_general_ledger. The only explicit directives are operational constraints — 'Use synthetic or anonymised inputs only' and the compute-mode selection rules — not task-selection guidance.

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

attest_calc_agent_independenceCalculation-Agent Independence AttestationC
Read-onlyIdempotent
Inspect

Calculation-Agent Independence Attestation: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-559-attest-calc-agent-independence.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: Receipts the organizational-independence claim a parametric trigger's neutrality depends on: that the entity whose kernel computed a specific art-251/art-252/art-309 execution_hash declares no controlling or compensating relationship with a named interested party (cedant, sponsor, reinsurer, or o... Outputs: calc_agent_id, interested_parties, relationship_declaration, disclosure_note, trigger_ref, independence_asserted, rejected_inputs, note. Output schema: call describe_tool("attest_calc_agent_independence").

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". Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

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

Beyond the annotations, the description discloses substantive behavior: inputs are processed transiently and not stored, logged or retained; gpu:true nodes always delegate; a browser delegation URL is returned instead of a result under compute:'browser'; and the tool exports an AP2 artifact carrying execution_hash for chain provenance. That is real context the readOnly/idempotent hints do not convey, though pagination/rejection behavior is only implied by the 'rejected_inputs' output field.

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?

The definition is dominated by repeated OCG platform boilerplate ('Deterministic OpenChainGraph compute node', the full hosting URL, a 64-character FV-status hash) that precedes the one sentence explaining what the tool does. The purpose sentence is also cut off, so the structure actively buries the load-bearing information.

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

Completeness3/5

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

For a zero-required-parameter attestation tool, the definition covers data-handling posture, compute routing, and enumerates the returned fields, which is reasonably complete given there is no output schema object. Gaps remain around when the tool is the right choice versus sibling independence checks and what a rejected/refused input produces.

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 parameter semantics are already fully documented, including the compute enum and the parent_hashes/parent_tool_ids chaining pair. The description adds the output field list (calc_agent_id, relationship_declaration, independence_asserted, rejected_inputs) but no extra meaning for the inputs themselves, so the baseline 3 applies.

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

Purpose3/5

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

The actual purpose only appears in the fifth sentence ('Receipts the organizational-independence claim a parametric trigger's neutrality depends on...'), after boilerplate about compute nodes and hosting URLs. It is specific about the resource (independence declaration of the entity whose kernel computed an art-251/252/309 execution_hash) but the sentence is truncated mid-clause ('or o...'), and no sibling (e.g. check_assessor_independence) is named for differentiation.

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

Usage Guidelines2/5

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

There is useful guidance on the compute modes ('auto' default, 'browser' forces delegation) and a data-handling instruction ('Use synthetic or anonymised inputs only'). What is absent is any statement of when to choose this tool over alternatives such as check_assessor_independence or other attest_* tools, and no preconditions are described.

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

attest_daily_reconciliationDaily Reconciliation AttestationB
Read-onlyIdempotent
Inspect

Daily Reconciliation Attestation: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-516-daily-reconciliation-attestation.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.

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". See the tool's manifest for field names.

TDQS

B3/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), but the description adds valuable context beyond them: determinism, server vs browser execution behavior, transient input processing with no retention, a synthetic-data-only recommendation, and the AP2 artifact export with execution_hash. This is a rich behavioral profile for an attestation tool.

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

Conciseness3/5

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

The description is somewhat bloated: it restates schema details, embeds a long URL and FV-status paragraph, and mixes compute mechanics with provenance notes. It is front-loaded with the tool's identity but could be tightened without losing actionable information.

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

Completeness3/5

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

For a 4-parameter compute node with no output schema, the description covers execution modes, privacy, and the artifact type, but it still leaves the core reconciliation logic opaque and defers parameter specifics to an external manifest. An agent can invoke it mechanically but lacks enough context to judge whether it is the right tool for a given reconciliation task.

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 all four parameters thoroughly. The description repeats the compute-mode semantics from the schema and adds no extra detail for parent_hashes, parent_tool_ids, or policy_parameters, so it provides no meaningful value beyond the structured fields.

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

Purpose3/5

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

The description states the tool is a 'Daily Reconciliation Attestation' compute node that exports an AP2 artifact, but it does not explain what reconciliation is being attested or what the decision function does. It also fails to distinguish this from the many other attest_* and reconcile_* siblings, leaving the agent without a clear sense of its unique role.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It focuses entirely on compute-mode mechanics rather than selection criteria.

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

attest_margin_call_lifecycleMember Margin Call LifecycleC
Read-onlyIdempotent
Inspect

Member Margin Call Lifecycle: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-531-member-margin-call-lifecycle.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.

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". See the tool's manifest for field names.

TDQS

C2.7/5.0
Behavior4/5

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

Goes well beyond the annotations: it discloses deterministic computation, the auto/server/browser compute binding behavior, that gpu:true nodes always delegate, that inputs are transient and neither stored nor logged, and that output is an AP2 artifact carrying execution_hash for provenance. That is meaningful operational context for a readOnly, idempotent tool. It stops short of describing latency, size limits, or failure modes.

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

Conciseness3/5

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

The core purpose is front-loaded but is only a restated title; the body is dominated by infrastructure boilerplate and a long FV-status URL-plus-hash sentence that adds little for tool selection. Sentences are individually coherent, but the proportion of low-value content is high relative to the one or two useful claims.

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

Completeness2/5

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

For a 4-parameter tool with a nested policy_parameters object and no output schema, the description should explain what inputs the decision function expects and what the result contains. Instead it points to an external manifest and an external spec URL, and substitutes output-schema coverage with a single line about the AP2 artifact. An agent still cannot construct a valid policy_parameters payload from this text.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters; the description's compute-mode explanation duplicates the schema field text rather than adding to it. Critically, it defers policy_parameters content to "the tool's manifest," leaving the actual decision inputs unspecified in both places. Baseline 3 applies when the schema does the work.

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

Purpose2/5

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

The only purpose statement is the title restated ("Member Margin Call Lifecycle: OpenChainGraph compute node"), which is tautological. The text never says what the tool computes or attests about a margin call lifecycle, nor does it differentiate from siblings like mobilize_margin_collateral or compute_derivatives_margin_workbench. It does reveal the output is an AP2 artifact with execution_hash, which is the one informative detail.

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

Usage Guidelines2/5

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

No when-to-use guidance and no named alternatives among a very dense sibling set. The only constraint offered ("Use synthetic or anonymised inputs only") is an input restriction, not a routing rule. An agent cannot infer from this description when to pick this tool over the many other margin-related tools.

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

audit_acp_ucp_product_feedACP/UCP Product-Feed Conformance AuditorB
Read-onlyIdempotent
Inspect

ACP/UCP Product-Feed Conformance Auditor: OpenChainGraph compute node (scheme_rule). 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-19-agentic-checkout-protocol-selector. Output feeds: art-21-agent-traffic-acceptance-policy-builder, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-20-acp-ucp-product-feed-conformance-auditor.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: Validates product/checkout/mandate JSON payloads against ACP or UCP field schemas (5 schema arrays). Outputs: acp_missing_required, audit_target, conformance_scores, critical_gaps, payload_type, ucp_missing_required, verdict, warnings. Output schema: call describe_tool("audit_acp_ucp_product_feed").

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: payload. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds rich behavioral context beyond that: compute modes (auto/server/browser), GPU delegation, transient processing with no storage/logging/retention, the synthetic-input requirement, and the export of an AP2 artifact with execution_hash for chain provenance. This is substantial disclosure that helps an agent understand side effects and data handling.

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?

The description is bloated with boilerplate about OpenChainGraph compute nodes, FV-status links, and URLs. It is not front-loaded with the core purpose (which appears only in the final 'Summary' sentence) and includes many sentences that do not help an agent select or invoke the tool.

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?

Despite the verbosity, the description covers what an agent needs to call the tool correctly: compute mode behavior, data handling constraints, chaining prerequisites via parent_hashes/parent_tool_ids, and the exported artifact. It lacks an output schema but points to describe_tool for that, making it reasonably complete for a complex node.

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 input schema already fully documents all four parameters. The description mentions compute modes and chaining concepts but does not add meaning beyond what the schema provides for the parameters themselves. 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?

The description explicitly states the verb and resource: 'Validates product/checkout/mandate JSON payloads against ACP or UCP field schemas (5 schema arrays).' This is a clear, specific purpose. However, it does not explicitly contrast with sibling tools like validate_acp_checkout or lint_ucp_checkout_payload, leaving the combined ACP+UCP scope to be inferred.

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

Usage Guidelines2/5

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

The description mentions upstream artifact consumption and downstream feeds, and says to use synthetic or anonymised inputs, but it provides no guidance on when to choose this tool over alternatives such as validate_acp_checkout or lint_ucp_checkout_payload. No exclusions or selection criteria are given.

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

audit_agent_key_rotationAgent Key Rotation AuditorC
Read-onlyIdempotent
Inspect

Agent Key Rotation Auditor: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-133-agent-payment-rail-trust-crosswalk. Open at: https://ainumbers.co/chaingraph/art-132-agent-key-rotation-auditor.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.

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". See the tool's manifest for field names.

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, and the description adds real context beyond them: inputs are processed transiently and not stored or logged, execution is deterministic, gpu:true nodes always delegate to the browser with a delegation URL, and the call exports an AP2 artifact carrying an execution_hash. The data-handling and delegation behaviour are exactly the kind of traits annotations cannot express. It stops short of describing failure modes or what the audit validates, which keeps it off 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.

Conciseness2/5

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

The text opens by restating the title, then pads with repeated framing ('OpenChainGraph compute node', 'Deterministic OpenChainGraph compute node'), a marketing URL, and a long FV-status hash with an offline-verification caveat. The genuinely useful facts — transient processing, synthetic inputs only, execution_hash export — are buried in the middle and compete with boilerplate. It is sized for a landing page, not a tool selection decision.

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

Completeness3/5

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

With no output schema, the description does useful work by naming the AP2 artifact and execution_hash and pointing to the downstream consumer. However, the primary decision inputs live in an untyped policy_parameters object whose fields are never enumerated, and the tool's actual audit criteria are unstated, leaving an agent unable to construct a correct call without fetching the external manifest.

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 compute, parent_hashes, and parent_tool_ids semantics are already fully documented in the schema, and the description's compute-mode passage merely restates them. For the open-ended policy_parameters object the description punts with 'See the tool's manifest for field names', adding no meaning. High coverage justifies the baseline 3, but the explicit deferral prevents anything higher.

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

Purpose3/5

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

The name and title identify the resource (agent key rotation) and the verb (audit), but the description spends most of its words on platform mechanics — 'OpenChainGraph compute node', server vs browser execution — rather than saying what the audit actually evaluates or returns. An agent learns it is a 'deterministic compute node' in the 'compliance_mandate' category, which is a category label, not a purpose statement. It is distinguishable from siblings only by the name itself.

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

Usage Guidelines2/5

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

There is no statement of when to choose this tool over near-neighbours such as check_agent_token_scope, audit_mcp_tool_scope_revocation, or check_agent_attestation. The only directive is an input restriction ('Use synthetic or anonymised inputs only'), which is a constraint rather than usage guidance. 'Output feeds: art-133-agent-payment-rail-trust-crosswalk' hints at downstream chaining but never states a selection condition.

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

audit_borrower_escrow_stmtBorrower Escrow AuditorB
Read-onlyIdempotent
Inspect

Borrower Escrow Auditor: OpenChainGraph compute node (consumer_finance). 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. Open at: https://ainumbers.co/chaingraph/732-borrower-escrow-auditor.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: Audits a servicer escrow accounting statement from borrower-supplied values only: recomputes the aggregate accounting trial running balance month by month, compares the servicer stated end-of-month balances line by line, flags each discrepant line, checks the stated cushion against the one-sixth-... Outputs: verdict, account_status, periods_analyzed, recomputed_balances, recomputed_low_point, target_low_point, total_annual_disbursements, cushion_cap_amount, stated_cushion, cushion_within_cap, shortage_amount, surplus_amount, shortage_threshold_base, shortage_threshold_base_source, shortage_at_or_above_one_month_payment, shortage_permitted_courses, servicer_course_permitted, surplus_refund_required, surplus_refund_unverified, discrepancies, evidence, manual_review_required. Output schema: call describe_tool("audit_borrower_escrow_stmt").

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: starting_balance, monthly_payments, disbursements, stated_balances. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely useful behavior beyond that: determinism, server-side vs browser-delegation kernel semantics, that inputs are processed transiently and not stored or logged, and that an AP2 artifact with execution_hash is exported for provenance. The offline-verifiable receipt claim adds further context, though much of this is node-wide boilerplate rather than escrow-specific 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?

The definition opens with two paragraphs of generic OpenChainGraph boilerplate (compute binding, retention policy, link, FV-status hash URL) before reaching the one sentence that actually describes the tool, and even that sentence is cut off mid-clause ('one-sixth-...'). The long output-field dump then dominates, so the signal is buried rather than front-loaded.

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

Completeness3/5

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

There is no output schema, but the description mitigates this by enumerating the verdict fields (shortage/surplus, cushion_cap, discrepancies, manual_review_required), so return values are largely covered. What's missing is the decision logic itself — the truncated cushion rule plus undefined threshold and course semantics — and any detail on the required policy_parameters value formats for a fairly complex, nested-input tool.

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 baseline is 3. The description's compute-mode text duplicates the schema's own compute description, and it says nothing about the shape of the nested policy_parameters payload (disbursements, monthly_payments, stated_balances arrays are unspecified even in the schema), leaving the most error-prone inputs undocumented.

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 Summary sentence gives a specific verb and resource (audits a servicer escrow accounting statement, recomputes running balances, compares stated end-of-month balances, checks cushion against the one-sixth cap), which is far more than a restatement of the name. However it is truncated mid-clause and never distinguishes this from siblings like compute_escrow_analysis or test_hpml_escrow, so an agent still can't rule out the near-duplicates.

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 implicit: the summary indicates the tool applies when you have borrower-supplied escrow values (disbursements, stated balances, starting balance, monthly payments). The compute-mode paragraph explains server-vs-browser execution but that is parameter selection, not when-to-use guidance, and there is no exclusion or named alternative among the many escrow/servicing siblings.

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

audit_mcp_oauthMCP OAuth 2.1 Authorization AuditorA
Read-onlyIdempotent
Inspect

Audit MCP OAuth 2.1 authorization: validate RFC 9728 protected-resource-metadata, check RFC 8707 audience binding, and assess token-passthrough / confused-deputy risk. Use when a developer is securing an MCP server's authorization. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("audit_mcp_oauth").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A3.8/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 openWorld=false, so the safety profile is covered. The description adds genuinely non-derivable behavior: the tool renders as an interactive widget, runs client-side, uses the AIN Bridge for prefills, and involves zero PII and zero network traffic. It stops short of describing failure modes when inputs are missing, hence 4 not 5.

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?

Three front-loaded sentences: capability, triggering context, then execution model and output discovery. Each sentence carries distinct information with no repetition, and the most decision-relevant content (what it audits) comes first.

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?

For a read-only, client-side audit with no output schema, the description covers the safety profile, execution model, and where to obtain the input and output schema via describe_tool. The one gap is that an agent cannot invoke it meaningfully without a prior describe_tool call to learn the input element IDs, so it is disclosed but indirect rather than fully self-contained.

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 'inputs' parameter is an opaque map whose keys are not knowable from the schema itself. The description explains the delivery mechanism ('applied via AIN Bridge prefill') and points to describe_tool for the manifest input_schema, but does not list or characterize any of the expected input element IDs. Baseline 3 applies when the schema documents the parameter; the added pointer is marginal.

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 and resource ('Audit MCP OAuth 2.1 authorization') and enumerates the concrete checks: RFC 9728 protected-resource-metadata, RFC 8707 audience binding, and token-passthrough/confused-deputy risk. That is far more specific than a tautology, but it never distinguishes itself from nearby siblings such as validate_mcp_authorization_metadata, lint_mcp_server_conformance, or audit_mcp_tool_scope_revocation.

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?

'Use when a developer is securing an MCP server's authorization' gives a real triggering context, which is better than nothing. It offers no exclusions and no routing to the many overlapping MCP-authorization siblings, so the agent must infer when this is preferred over validate_mcp_authorization_metadata or lint_mcp_server_conformance.

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

audit_mcp_tool_scope_revocationMCP Tool Scope & Revocation AuditorA
Read-onlyIdempotent
Inspect

MCP Tool Scope & Revocation Auditor: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-151-agent-obo-mandate-validator. Open at: https://ainumbers.co/chaingraph/art-150-mcp-tool-scope-revocation-auditor.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: Audit scoped and revocable MCP tool access per the new MCP specification: each granted tool must carry an explicit scope array, a revocation endpoint must be configured (https-scheme), and token rotation posture (max age vs elapsed time, next-key presence) must be healthy. Outputs: audit_pass, revocable, rotation_ok, scopes_ok, token_age_s, ungated_tools. Output schema: call describe_tool("audit_mcp_tool_scope_revocation").

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". Unknown keys are refused.

TDQS

A3.6/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), yet the description adds genuine behavior: server-side vs browser delegation semantics for compute modes, gpu:true always delegating, transient non-retention of inputs, and an exported AP2 artifact carrying execution_hash for chain provenance. The FV-status receipt note is mostly boilerplate but does disclose that the trust snapshot is off-line verifiable rather than a live subscription.

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?

The definition is not front-loaded: the actual purpose appears only in the 'Summary:' paragraph after compute-mode, retention, AP2-export, FV-status, and URL boilerplate that is largely identical across every tool in this family. Several sentences (the full compute:'auto'/'browser'/'gpu:true' explanation) duplicate the schema's own compute description, and the tool's specific payload is a minority of the text.

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?

For a 4-parameter, zero-required, read-only audit node with no output schema, the description is largely sufficient: it names the checks performed, the output fields, the compute/delegation behavior, and the provenance artifact. The gap is that it never says what a caller should supply for policy_parameters in a minimal call, but the business-level explanation of the fields covers most of that.

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 goes past the schema: the nested policy_parameters keys have no property descriptions, and the description supplies their meaning — max token age versus elapsed time, next-key presence, and the https-scheme requirement on the revocation endpoint. It also names the output fields (audit_pass, revocable, rotation_ok, scopes_ok, token_age_s, ungated_tools), which compensates for the absent output schema.

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 'Summary:' sentence states a specific verb+resource (audit MCP tool scope and revocation) and enumerates the concrete checks: explicit scope arrays, https-scheme revocation endpoint, and token rotation posture. It is clear what the tool does, but the statement arrives after ~600 characters of generic compute-node boilerplate, and nothing distinguishes it from close siblings such as audit_mcp_oauth, check_agent_token_scope, or lint_mcp_tool_definition.

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 by the purpose: this is the auditor for scoped+revocable MCP tool grants. There is a real input constraint ('Use synthetic or anonymised inputs only') and routing context ('Output feeds: art-151-agent-obo-mandate-validator'), but no explicit when-to-use / when-not-to-use guidance and no named alternative among the many MCP-audit siblings.

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

authorize_payment_against_mandateMandate Authorization GateB
Read-onlyIdempotent
Inspect

Mandate Authorization Gate: OpenChainGraph compute node (payment_mandate). 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-476-map-agent-payment-mandate. Open at: https://ainumbers.co/chaingraph/art-703-mandate-authorization-gate.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: Automated payment approval gate with no human step: a fixed ten-rule mandate check lists every failing rule with a named reason, issues a one-use authorization bound to the exact request digest with a window clipped to the mandate expiry, and re-verifies the committed request at commit time. Outputs: authorization, authorization_id, decision, domain_errors, mode, primary_reason, reasons, remaining_budget_minor, scope_note. Output schema: call describe_tool("authorize_payment_against_mandate").

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: mode, as_of. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description adds real behavioral facts: the node is deterministic, evaluation runs server-side on Cloudflare Workers unless compute is set to browser, inputs are not stored or logged, the authorization is one-use and window-clipped to the mandate expiry, and the request is re-verified at commit time. The FV-status line also clarifies that the receipt is an offline-verifiable snapshot rather than a subscription. The phrase 'issues a one-use authorization' slightly strains readOnlyHint, but because execution is stated as deterministic and non-persistent it is a computed output, not a stored side effect.

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?

The prose opens with redundant boilerplate ('Mandate Authorization Gate: OpenChainGraph compute node (payment_mandate). Deterministic OpenChainGraph compute node.'), buries the actual purpose in a trailing 'Summary:' section, and includes a long hex FV-status URL path that carries little selection value. The useful substance is there but it is not front-loaded, and the duplicate compute-node framing wastes the most valuable position.

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

Completeness3/5

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

With no output schema, the enumerated output keys (authorization, decision, reasons, primary_reason, remaining_budget_minor, etc.) and the 'call describe_tool' pointer do reasonable work in describing the return. However, the description never explains the ten rules or the shape of the mandate and request objects, and it does not clarify how reasons vs domain_errors differ, leaving meaningful gaps for a decision tool whose whole value is the rule verdicts.

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%, so the compute, parent_hashes, parent_tool_ids, and policy_parameters fields are already documented; the description only restates the compute auto/browser semantics that the schema already gives verbatim. It adds nothing about the nested mandate/request object shapes inside policy_parameters, which are opaque in both places, so it does not compensate for the one genuine gap.

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 description names a specific verb and resource – an automated payment approval gate that runs a fixed ten-rule mandate check and issues a one-use authorization – which is far more informative than the title alone. It falls short of a 5 because it never positions itself against obvious siblings such as map_agent_payment_mandate, validate_ap2_mandate_chain, or build_google_ap2_mandate, so an agent has to infer which mandate tool is the right 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?

Usage context is only implied: it says inputs are processed transiently and 'use synthetic or anonymised inputs only', and mentions it consumes upstream artifacts from art-476-map-agent-payment-mandate, which hints at pipeline position. There is no explicit when-to-use/when-not-to-use statement and no named alternative for related mandate operations, so the agent must infer routing from the name.

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

baas_provider_comparatorBaaS Provider ComparatorA
Read-onlyIdempotent
Inspect

Score and compare BaaS providers across 10 capability dimensions (regulatory standing, programme management, card issuance, rails, KYC/KYB, disputes, developer experience, pricing, FDIC pass-through, compliance tooling) with a user-adjustable 1-5 weighting matrix. Outputs a weighted comparison matrix and Markdown evaluation memo. Browser-based, client-side only, zero PII. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("baas_provider_comparator").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds valuable behavioral context beyond those: browser-based client-side execution, zero PII, zero network, widget rendering, and AIN Bridge prefill. It does not cover error handling or input constraints, so a 4 is appropriate.

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?

The purpose and scope are front-loaded in the first sentence. The description is generally efficient but slightly redundant, repeating 'client-side' and 'zero PII' and spending two sentences on tool execution mechanics.

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?

For a one-parameter tool with annotations and no output schema, the description covers purpose, outputs, execution environment, and points to describe_tool for the output schema. A gap remains around what happens when no inputs are supplied (default weighting behavior), but overall it is nearly complete.

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 the single optional 'inputs' object is fully documented in the schema. The description only notes that inputs are applied via the AIN Bridge, which adds minor meaning but does not elaborate parameter-level details beyond the schema baseline.

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 ('score and compare') and resource ('BaaS providers') plus the exact dimensions and outputs. It does not explicitly differentiate itself from sibling comparison tools such as compare_agentic_payment_protocols, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description implies the tool is for evaluating BaaS providers but gives no explicit when-to-use guidance, exclusions, or alternative tools. It never states conditions under which an agent should choose this over related comparators or scoring tools.

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

benchmark_tp_interquartile_rangeTransfer-Pricing Interquartile Range BenchmarkB
Read-onlyIdempotent
Inspect

Transfer-Pricing Interquartile Range Benchmark: OpenChainGraph compute node (compliance_mandate). 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-472-cbcr-builder. Open at: https://ainumbers.co/chaingraph/art-473-interquartile-benchmark.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: OECD Transfer Pricing Guidelines Ch. Outputs: comparable_count, iqr, median, missing_inputs, not_a_comparable_selector, q1, q3, range_verdict, ratio_suite, sorted_comparable_ratios, tested_party_ratio. Output schema: call describe_tool("benchmark_tp_interquartile_range").

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: comparable_ratios, financials, tested_party_ratio. Unknown keys are refused.

TDQS

B3.1/5.0
Behavior5/5

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

Beyond the read-only/idempotent/non-destructive annotations, the description discloses server-side versus browser compute behavior, GPU delegation, transient non-retention of inputs, export of an AP2 artifact with execution_hash, and upstream artifact consumption. These are substantive behavioral details that materially affect how an agent should invoke the tool.

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?

The description is overlong and front-loads infrastructure boilerplate instead of the tool's purpose. It includes lengthy provenance/FV-status text and an incomplete 'Summary: OECD Transfer Pricing Guidelines Ch.' sentence that do not help an agent decide or invoke the tool.

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

Completeness3/5

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

The description does provide compute behavior, data-handling context, provenance notes, and an output list, which is useful given nested parameters and no output schema. But it omits a clear explanation of what the benchmark computes and when it should be used, leaving an important semantic gap.

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?

With schema description coverage at 100%, the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description's compute-mode explanation mirrors the schema and adds little extra parameter meaning, so the baseline of 3 is appropriate.

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

Purpose3/5

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

The description identifies this as a Transfer-Pricing Interquartile Range Benchmark and lists outputs such as iqr, median, q1/q3, and range_verdict, which hints at the computation. However, it never plainly states the core action, e.g. computing comparable-ratio quartiles and testing the tested-party ratio against an arm's-length range. The opening line restates the title and labels it a compute node, leaving the actual purpose to inference.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no comparison to any of the many sibling benchmark or compute tools. The only usage constraints given are 'Use synthetic or anonymised inputs only' and a mention of an upstream artifact consumer, which are operational constraints rather than selection guidance.

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

bind_agreement_acceptanceAgreement Acceptance BinderA
Read-onlyIdempotent
Inspect

Agreement Acceptance Binder: OpenChainGraph compute node (compliance_mandate). 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-276-mutual-nda-composer. Open at: https://ainumbers.co/chaingraph/art-277-agreement-acceptance-binder.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: Binds a party's acceptance to a specific assembled agreement artifact, referenced by its execution_hash, template_id, and vendored body_sha256, never by re-embedding the agreement text. Outputs: acceptance_statement, accepted_body_sha256, accepted_template_id, accepting_party_role, checks, disclaimer, previous_proof_hash, referenced_execution_hash, zero_pii_notice. Output schema: call describe_tool("bind_agreement_acceptance").

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: acceptance_statement, accepting_party_role, body_sha256, previous_proof_hash, referenced_execution_hash, template_id. Unknown keys are refused.

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations, it discloses deterministic compute behavior, server-vs-browser execution, transient processing with no storage/logging/retention, synthetic-input guidance, AP2 artifact export with execution_hash, and upstream provenance. These are substantial behavioral details and do not contradict readOnlyHint=true.

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

Conciseness3/5

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

The purpose is buried after compute infrastructure, a long FV-status path, and repeated 'OpenChainGraph compute node' phrasing. Some boilerplate is provenance-relevant, but the definition is not front-loaded around the core action.

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?

Despite having no output schema, the description lists the returned fields, explains the artifact/provenance model, covers compute routing and data handling, and references the upstream artifact. An agent has enough context to invoke it 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 description coverage is 100%, so the schema already fully documents compute, parent_hashes, parent_tool_ids, and nested policy_parameters. The description mirrors some required keys and modes but adds little parameter-level meaning beyond the schema.

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?

The summary states a specific verb and resource: binding a party's acceptance to a specific assembled agreement artifact, referenced by execution_hash, template_id, and body_sha256 rather than re-embedding text. This clearly distinguishes it from assembly-oriented siblings such as assemble_mutual_nda.

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?

The description gives clear workflow context by saying it consumes upstream artifacts from art-276-mutual-nda-composer and explains compute-mode selection. It does not explicitly name alternatives or when-not-to-use cases, so it stops short of a 5.

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

bind_attested_subjectAttested Artifact Subject BinderA
Read-onlyIdempotent
Inspect

Attested Artifact Subject Binder: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-502-bind-attested-subject.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: Computes the SPEC.md section 27.4 attested-artifact subject identifier for the sealed output of a pinned non-OCG producer: a spreadsheet, a reconciliation export, a report builder's PDF, anything with a content-addressed manifest but no kernel, no node and no chain. Outputs: binding_complete, findings, inputs_digest_source, no_arithmetic_claim, note, preimage_member_count, producer_pinned, rationale, subject_hash, subject_preimage. Output schema: call describe_tool("bind_attested_subject").

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: artifact, inputs_digest, producer_inputs, tool_ref. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the description's job is to add traits beyond that — and it does: transient processing with no storage or logging, a 'synthetic or anonymised inputs only' restriction, deterministic computation, browser delegation for gpu:true, and an AP2 artifact export carrying execution_hash for provenance. What is missing is failure behavior and what happens when a required policy_parameter is refused ('Unknown keys are refused' is stated only in the schema).

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?

The opening is a near-restatement of the title ('Attested Artifact Subject Binder: OpenChainGraph compute node'), followed by compute-mode and privacy boilerplate before the actual purpose appears in a later paragraph. A hash-bearing fv-status URL and a documentation link consume space without helping an agent decide to call the tool. Information is present but poorly front-loaded and inflated.

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?

There is no output schema, but the description enumerates every return field (binding_complete, findings, subject_hash, subject_preimage, producer_pinned, etc.), so the agent knows what a call yields. Combined with the data-handling caveat, determinism, compute modes and chaining parameters, an agent has enough to invoke it correctly; only error/refusal behavior is left unaddressed.

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 the schema already documents compute modes, parent_hashes/parent_tool_ids ordering, and the required policy_parameters keys, so the baseline is 3. The description mostly restates the compute-mode semantics already present in the schema rather than adding syntax or constraints the schema lacks. The listed 'Outputs' (subject_hash, subject_preimage, inputs_digest_source) are return values, not parameter guidance.

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 'Summary' paragraph states a specific verb and resource: computes the SPEC.md section 27.4 attested-artifact subject identifier for a sealed output from a pinned non-OCG producer. It implicitly separates itself from chain/kernel siblings ('no kernel, no node and no chain'), though it never names a concrete sibling tool. The problem is placement: the operative sentence sits behind several sentences of compute-infrastructure boilerplate and a URL, so an agent scanning the first line sees a generic 'compute node' framing rather than the purpose.

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?

Usage scope is concrete: 'a spreadsheet, a reconciliation export, a report builder's PDF, anything with a content-addressed manifest but no kernel, no node and no chain' gives clear inclusion criteria that an agent can match against a request. The compute-mode guidance (auto/server/browser, gpu:true always delegates) also tells the caller how execution is routed. There is no explicit 'when not to use this' or named alternative among the many bind_*/verify_* siblings, which keeps it below a 5.

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

build_226j_response_evidence_pack226J Response Evidence Pack BuilderA
Read-onlyIdempotent
Inspect

226J Response Evidence Pack Builder: OpenChainGraph compute node (compliance_mandate). 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-299-aca-esrp-exposure. Open at: https://ainumbers.co/chaingraph/art-300-aca-226j-response-evidence-pack.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: Terminal node of the aca-226j-response-composer chain: assembles a replayable evidence pack responding to an IRS Letter 226J proposed Employer Shared Responsibility Payment assessment. Outputs: attestation, disputed_employee_count, error, exposure_delta, irs_asserted_esrp_annual, letter_date, recomputed_exposure_annual, response_deadline, response_window_days, response_window_source. Output schema: call describe_tool("build_226j_response_evidence_pack").

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: affordability_result, attestation, disputed_employee_ids, esrp_result, irs_asserted_esrp_annual, letter_date. Unknown keys are refused.

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 the description adds genuinely new behavior: transient processing with no storage/logging, a synthetic-or-anonymised input constraint, AP2 artifact export with execution_hash for provenance, and the important fact that compute:"browser" or gpu:true returns a delegation URL instead of a result. What it omits is any hint about the failure surface (e.g., validation refusal behavior beyond 'unknown keys are refused') or latency/limits.

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?

The description opens with boilerplate ("OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node." — the phrase is literally repeated) and buries the actual purpose in a trailing 'Summary:' clause. A raw spec URL and a 64-character FV-status hash path consume significant space without helping an agent decide or invoke.

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?

For a nested, chain-dependent compute node with no output schema, the description usefully enumerates the returned fields (attestation, exposure_delta, response_window_days, etc.) and explains compute-mode delegation and upstream chaining. The gap is that the individual policy_parameters (attestation, esrp_result, affordability_result) are untyped objects in the schema and never described here, leaving their expected shapes unknown.

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, and the description earns a nudge above it by tying parent_hashes to a concrete upstream artifact id (art-299-aca-esrp-exposure), which the schema does not. Otherwise it largely restates the schema's compute-mode and required policy_parameters documentation rather than adding syntax or format detail.

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?

The Summary clause states a specific verb and resource: "assembles a replayable evidence pack responding to an IRS Letter 226J proposed Employer Shared Responsibility Payment assessment," and positions it as the terminal node of the aca-226j-response-composer chain. It also names the upstream artifact (art-299-aca-esrp-exposure) and enumerates the produced outputs, so it is distinguishable from nearby siblings like compute_esrp_exposure or compute_aca_affordability_safe_harbor.

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?

Use context is only implied through chain positioning ("Terminal node ... Consumes upstream artifacts from art-299-aca-esrp-exposure"), which tells an agent it runs last in that chain. There is no explicit when-to-use statement, no exclusions, and no routing to alternative evidence-pack builders (build_evidence_pack, assemble_ocg_evidence_bundle, assemble_aiuc1_evidence_pack) that appear in the sibling list.

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

build_adverse_action_noticeBuild Adverse Action NoticeA
Read-onlyIdempotent
Inspect

Build Adverse Action Notice: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-227-validate-adverse-action-notice. Open at: https://ainumbers.co/chaingraph/art-228-build-adverse-action-notice.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: Assembles an adverse action notice skeleton from SHAP-ranked principal-factor codes (FICO reason codes 01-40, VantageScore VS001-VS015). Outputs: compliance_flags_raised, notice_sections, pii_note, receipt_metadata, regulatory_basis, resolved_reasons, table_source, table_version. Output schema: call describe_tool("build_adverse_action_notice").

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: action_taken, applicant_name_placeholder, credit_bureau_address, credit_bureau_name, credit_bureau_phone, credit_score_source, credit_score_used, creditor_name, date_of_action, factor_codes, reason_code_source. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, but the description adds real behavioral context beyond them: deterministic kernel execution, transient processing with no storage, logging, or retention, AP2 artifact export with execution_hash for chain provenance, and the exact server/browser delegation rules. It stops short of describing failure modes or error behavior on kernel miss, which keeps it off 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.

Conciseness2/5

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

The compute-binding paragraph largely restates the compute parameter's own schema description, and the FV-status SHA-256 URL plus spec URL consume attention before the purpose is ever stated. The most load-bearing sentence ('Summary: Assembles an adverse action notice skeleton...') is buried last, so the definition is back-loaded rather than front-loaded.

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?

No output schema exists, yet the description enumerates the returned fields (compliance_flags_raised, notice_sections, regulatory_basis, resolved_reasons, etc.) and points to describe_tool for the full schema. Combined with the data-handling and provenance notes and the named downstream validator, an agent has enough to call it correctly; only error/edge behavior is absent.

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 compute, parent_hashes, parent_tool_ids, and the required policy_parameters keys. The description's only added semantic value is the reason-code universe (FICO 01-40, VantageScore VS001-VS015) relevant to factor_codes; it adds nothing about chaining order or the score/range fields. 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?

The final 'Summary' sentence gives a specific verb+resource: assembles an adverse action notice skeleton from SHAP-ranked principal-factor codes (FICO 01-40 / VantageScore VS001-VS015). It also names the downstream sibling ('Output feeds: art-227-validate-adverse-action-notice'), which lets an agent distinguish builder from validator. The flaw is placement: the purpose is the last thing stated, after a wall of compute-plumbing boilerplate.

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: the 'Output feeds' line positions this upstream of validate_adverse_action_notice, and the constraint 'Use synthetic or anonymised inputs only' limits inputs. There is no explicit when-to-use/when-not statement and no comparison to alternatives, so the agent must infer the workflow slot.

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

build_agent_incident_recordAgent Incident Record ComposerB
Read-onlyIdempotent
Inspect

Agent Incident Record Composer: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-379-agent-incident-record-composer.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: Composes a structured agent incident/failure record from caller-declared inputs: agent identity, an optional mandate hash, an incident description with an honest severity class, session evidence digests, remediation status, and an optional cross-link to an escalation record or a signed failure re... Outputs: agent_identity, cross_linked, escalation_cross_link, evidence_count, incident, invalid_evidence_count, mandate_hash, record_claim_strength, record_note, remediation, session_evidence. Output schema: call describe_tool("build_agent_incident_record").

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: agent_identity, escalation_cross_link, incident, mandate_hash, remediation, session_evidence. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare a safe, read-only, idempotent, closed-world operation, so safety is covered. The description adds meaningful behavioral context beyond that: server-side vs browser delegation, deterministic execution, transient processing with no storage or logging, and AP2 export with execution_hash for provenance. Some of this is verbose boilerplate, but it is genuinely useful context for an agent deciding how to invoke the tool.

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?

The description is poorly structured: it leads with compute-node and FV-status receipt boilerplate rather than the actual purpose. It is long, includes an external URL, contains a truncated clause ('signed failure re...'), and adds implementation detail that does not help tool selection. The useful summary and input enumeration are buried in the middle.

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

Completeness3/5

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

For a complex nested-parameter tool with no output schema, the description does list outputs and explain compute/export/provenance behavior, which is helpful. But it omits clear usage guidance, never reconciles the optional/required conflict on policy_parameters, and the output list is not enough to tell the agent exactly what shape to expect. It is adequate but incomplete.

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 baseline is 3. The description does add useful meaning for the otherwise empty nested policy_parameters fields: agent identity, mandate hash, incident description with severity, session evidence digests, remediation status, and escalation cross-link. However, it calls mandate_hash and escalation_cross_link optional while the schema's own description lists them as required, creating ambiguity rather than resolving parameter semantics.

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 real purpose appears in the Summary: 'Composes a structured agent incident/failure record from caller-declared inputs' with specific content like severity class, evidence digests, and remediation status. That is a clear verb and resource. However, the opening line is mostly a title/compute-node restatement, and the description never explicitly distinguishes this from related siblings such as build_idv_verification_incident_record or classify_dora_incident.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any when-not-to-use conditions. The only constraint is 'Use synthetic or anonymised inputs only', which is an input-safety rule rather than selection guidance. The compute-mode text explains execution behavior, not task suitability.

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

build_agent_test_evidenceQuarterly Agent Test Evidence ComposerA
Read-onlyIdempotent
Inspect

Quarterly Agent Test Evidence Composer: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-378-quarterly-test-evidence-composer.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: Composes a quarterly agent testing-evidence pack: test-suite identity and digest, per-test receipts with an honest deterministic/estimated determinism class, pass rate, and a regression comparison chained to the prior quarter's pack digest. Outputs: aiuc_version, certification_note, chain_intact, declared_prior_pack_digest, pack_claim_strength, pass_rate, passed, per_test, prior_quarter, quarter, regression, suite, tamper_detected, total. Output schema: call describe_tool("build_agent_test_evidence").

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: aiuc_version, declared_prior_pack_digest, prior_quarter, quarter, subject_hash, suite, tests. Unknown keys are refused.

TDQS

A3.6/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 the description adds substantial context beyond them: deterministic server-side computation on Cloudflare Workers, the gpu:true browser-delegation path, transient processing with no storage or logging, and emission of an AP2 artifact carrying execution_hash for chain provenance. What it does not explain is the strength/semantics of pack_claim_strength or what happens when the parent chain is broken.

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

Conciseness3/5

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

The informative 'Summary:' sentence — the actual purpose — sits deep in a paragraph dominated by boilerplate about OpenChainGraph compute nodes, Cloudflare Workers, FV-status snapshot URLs, and an output-field dump. Front-loading the summary and trimming the compute/FV boilerplate would markedly improve scanability.

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?

For a nested-object compute node with no output schema, the description is reasonably complete: it lists all returned fields, states the provenance/chaining mechanism, discloses the privacy posture and the compute-mode split, and points to describe_tool for the full schema. Minor gaps remain around regression semantics and what tamper_detected/chain_intact indicate.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters. The description restates the compute enum behavior but adds nothing for the chaining parameters or the required keys inside policy_parameters, 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?

The description names a concrete verb and resource — 'Composes a quarterly agent testing-evidence pack: test-suite identity and digest, per-test receipts... pass rate, and a regression comparison' — and enumerates the output fields, so an agent knows exactly what it produces. It does not, however, distinguish itself from near siblings such as compose_control_test_evidence, build_evidence_pack, assemble_aiuc1_evidence_pack, or run_model_test_battery.

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 context is only implicit: the compute-mode paragraph explains server vs browser execution, and the privacy line says to use synthetic/anonymised inputs, which is real operational guidance. But there is no statement of when this tool is the right choice versus the many evidence-pack siblings, nor any exclusion criteria.

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

build_agent_traffic_policyAgent-Traffic Acceptance Policy BuilderB
Read-onlyIdempotent
Inspect

Agent-Traffic Acceptance Policy Builder: OpenChainGraph compute node (agent_guardrail_mandate). 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-20-acp-ucp-product-feed-conformance-auditor. Output feeds: ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-21-agent-traffic-acceptance-policy-builder.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: Builds a policy mandate governing accepted AI agent types, identity verification level, velocity and value caps, payment rails, refund posture, retry policy, and blocking rules. Outputs: accepted_agent_types, accepted_payment_rails, block_rules, guardrail_findings, guardrail_passes, guardrail_warnings, max_daily_spend_usd, max_single_transaction_usd, max_tx_per_day, max_tx_per_min, overall_risk, refund_posture, retry_policy, verdict, verification_level. Output schema: call describe_tool("build_agent_traffic_policy").

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: agent_types, block_rules, rails. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description stays consistent with that while adding real context: inputs are processed transiently and not stored or logged, synthetic/anonymised inputs only, compute:'browser' returns a delegation URL instead of a result, gpu:true nodes always delegate, and the call exports an AP2 artifact with an execution_hash. Those are genuine behavioral facts an agent needs before calling; the only weakness is that most of it is generic node boilerplate rather than tool-specific.

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?

Badly front-loaded: the URL, the FV-status hash and the offline-receipt disclaimer consume most of the text before the reader reaches what the tool actually does. Several sentences (privacy statement, compute-mode restatement, FV-status receipt) do not earn their place in a tool-selection description.

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

Completeness3/5

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

There is no output schema, but the description compensates by enumerating the returned fields (verdict, overall_risk, guardrail_findings, max_daily_spend_usd, retry_policy, etc.) and by documenting data handling and chaining inputs. It is still incomplete on the two things that matter most for correct invocation: how this differs from the policy-simulation siblings, and what the optional policy_parameters default to when omitted.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and the policy_parameters object. The description's compute-mode paragraph is essentially a restatement of the schema's own wording, though the summary does add conceptual meaning by mapping the nested keys to policy concerns (agent types, verification level, caps, rails, refund posture, retry, block rules). That is marginally above baseline, not below it.

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 final 'Summary' sentence gives a specific verb and resource: builds a policy mandate governing accepted agent types, verification level, velocity/value caps, payment rails, refund posture, retry policy and blocking rules. That is enough to distinguish it from generic calculators, but it never names the near-identical siblings (simulate_agent_spend_policy, simulate_spend_policy, ap2_aml_mandate_builder), and the actual purpose is buried after roughly two-thirds of the text.

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 positioning: 'Consumes upstream artifacts from: art-20-acp-ucp-product-feed-conformance-auditor' and 'Output feeds: ptg-01-ap2-prompt-template-generator'. An agent can infer this sits between the product-feed audit and prompt-template steps, but there is no explicit when-to-use statement and no exclusion against the policy-simulation siblings.

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

build_ai_conformity_packAI Act Conformity Pack BuilderA
Read-onlyIdempotent
Inspect

AI Act Conformity Pack Builder: OpenChainGraph compute node (model_governance). 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-64-ai-act-highrisk-fit-diagnostic. Output feeds: 333-eu-ai-act-article9-risk-mgmt-builder, art-05-eu-ai-act-credit-scoring-conformity, cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-65-ai-conformity-pack-builder.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: Assembles an EU AI Act Annex IV technical documentation pack, validates the conformity-assessment route (internal control vs notified body), checks CE-marking and EU Declaration of Conformity readiness, and scores completeness per Arts 9/10/15/17. Outputs: annex_iv_gaps, annex_iv_grade, annex_iv_score, applicable_date_note, articles_status, ce_readiness_note, ce_ready, conformity_grade, conformity_route, conformity_route_note, declaration_of_conformity_skeleton, note, system. Output schema: call describe_tool("build_ai_conformity_pack").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behaviour, but the description adds real context beyond them: deterministic server-side compute on Workers vs browser delegation, gpu:true always delegating, transient processing with no storage/logging/retention, and an AP2 artifact export carrying execution_hash for chain provenance. It does not cover confidentiality/rate limits, and the 'Exports an AP2 artifact' phrasing sits in mild tension with 'read-only' but does not contradict 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.

Conciseness2/5

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

The actual purpose is buried after execution-mode boilerplate, privacy text, the upstream/downstream lists, a URL, and a long FV-status receipt paragraph, and only surfaces in a 'Summary:' near the end. The FV-status snapshot prose and the 'call describe_tool(...)' tail add length without helping selection; front-loading is violated.

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?

With no output schema, the description compensates by enumerating the returned fields (annex_iv_gaps, conformity_route, declaration_of_conformity_skeleton, etc.) and pointing to describe_tool for the full schema. Combined with data-handling, provenance, and pipeline context, it is nearly complete for a 4-param, 0-required tool; only the nested policy_parameters content is left unexplained.

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 compute/parent_hashes/parent_tool_ids/policy_parameters semantics are already documented in the schema. The description's compute:auto/browser discussion merely restates the schema enum text, and the nested policy_parameters object (system, data_governance, conformity_route, etc.) is not explained at all beyond the schema — 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?

The Summary states a specific verb and resource: assembling an EU AI Act Annex IV technical documentation pack, validating the conformity route (internal control vs notified body), checking CE-marking/DoC readiness, and scoring against Arts 9/10/15/17. The 'Consumes upstream artifacts from / Output feeds' lines place it in the pipeline and implicitly separate it from near-siblings like assess_ai_act_conformity or run_ai_act_highrisk_fit, but no explicit sibling contrast is stated.

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 implied through pipeline position (it consumes the output of art-64-ai-act-highrisk-fit-diagnostic and feeds several downstream builders) and a hard input constraint ('Use synthetic or anonymised inputs only'). It never says when an agent should pick this over assess_ai_act_conformity or what prerequisites the upstream artifact must satisfy, so usage remains inferential.

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

build_ai_decision_log_recordAI Decision Log Record Builder (EU AI Act Art 12)A
Read-onlyIdempotent
Inspect

AI Decision Log Record Builder (EU AI Act Art 12): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-237-validate-agent-audit-trail, art-238-classify-annex3-decisioning-obligations. Open at: https://ainumbers.co/chaingraph/art-236-build-ai-decision-log-record.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: Builds an EU AI Act Art 12(2)-conformant decision log record for high-risk AI systems in financial services. Outputs: anchor_surface, anchor_tools, art12_completeness_score, art12_fields_present, chain_position, confidence, decision_label, enforcement_dates, input_digest, missing_art12_fields, model_id, model_version, operator_id, output_digest, override_by, override_flag, pii_note, record_status, regulatory_basis, retention_months, sha256_prev_record, subject_ref, system_context, table_version. Output schema: call describe_tool("build_ai_decision_log_record").

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: decision_label, human_accountability_records, input_digest, model_id, model_version, operator_id, output_digest, override_by, override_flag, sha256_prev_record, subject_hash, subject_ref, system_context. Unknown keys are refused.

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, yet the description adds real context beyond them: the auto/server/browser compute dispatch rules, gpu:true always delegating to the browser, transient non-stored processing of inputs, and that the export carries an execution_hash in an AP2 artifact. It does not explain what the art12_completeness_score means or what happens on refused keys beyond the schema note.

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?

The purpose is front-loaded, but the body is heavily padded: 'OpenChainGraph compute node' is stated twice back-to-back, the compute-mode paragraph duplicates the schema's own explanation, and the 25-name output field dump plus a long FV-status hash receipt add bulk without decision value. A large share of the text does not earn 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?

There is no output schema, and the description compensates reasonably by listing the returned fields and by pointing to describe_tool for the full contract. For a nested-object compute node it covers execution mode, privacy stance, chaining inputs and downstream consumers. What it lacks is meaning for the scored/normalized outputs and guidance on handling missing_art12_fields.

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 the compute enum, parent_hashes/parent_tool_ids and the required policy_parameters keys are all documented in-schema, so the baseline of 3 applies. The description restates the compute behavior and the synthetic-input constraint but adds no format or ordering semantics for the nested policy_parameters beyond what the schema provides.

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 and resource with regulatory scope: 'Builds an EU AI Act Art 12(2)-conformant decision log record for high-risk AI systems in financial services.' The 'Output feeds: art-237-validate-agent-audit-trail, art-238-classify-annex3-decisioning-obligations' line places it in the pipeline. It does not explicitly distinguish itself from near siblings such as build_ai_workpaper_record or build_ai_training_data_lineage_record, so an agent must infer the boundary from the Art 12 framing.

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 implied by the regulatory framing and by naming the downstream tools the output feeds, which tells an agent where the artifact belongs in a chain. It also gives a constraint ('Use synthetic or anonymised inputs only'). But there is no explicit when-to-use / when-not or named alternative to pick instead.

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

build_ai_training_data_lineage_recordAI Training-Data Lineage RecordA
Read-onlyIdempotent
Inspect

AI Training-Data Lineage Record: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-452-build-ai-training-data-lineage-record.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: Composes a hash-chained ML training-data lineage record: dataset identity, dataset version, upstream source dataset references, a declared collection/governance method, and an OPTIONAL reference to an existing OCG receipt for the training-run compute (tool identity, execution hash, kernel digest... Outputs: chain_position, checks, collection_method, dataset_id, dataset_version, governance_notes, operator_id, record_status, referenced_receipt, regulatory_basis, retention_months, scope_note, sha256_prev_lineage_hash, source_dataset_ids, table_version, zero_pii_notice. Output schema: call describe_tool("build_ai_training_data_lineage_record").

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: collection_method, dataset_id, dataset_version, governance_notes, operator_id, referenced_receipt_execution_hash, referenced_receipt_kernel_digest, referenced_receipt_tool_id, referenced_receipt_tool_version, retention_months, sha256_prev_lineage_hash, source_dataset_ids. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), but the description adds real behavioral context beyond them: transient server-side vs browser execution, no storage/logging/retention, and that it exports an AP2 artifact with execution_hash for chain provenance. The compute-mode detail duplicates the schema slightly but the retention/data-handling disclosure is genuinely additive.

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?

The purpose is buried under infrastructure boilerplate: a long compute-mode paragraph, a retention disclaimer, a full FV-status URL with a 64-char hash, an 'Open at:' link, and a 'call describe_tool(...)' pointer. Several sentences do not earn their place in a routing decision, and the useful summary is last rather than front-loaded.

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?

For a 4-param tool with a nested policy object and no output schema, the description does supply the output field list (chain_position, checks, record_status, sha256_prev_lineage_hash, etc.) plus the security note that receipts verify offline. That is largely sufficient to call it correctly, though the parent_hashes/parent_tool_ids chaining relationship is left to the schema.

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 baseline is 3. The description restates the compute:'auto' semantics already in the schema and does not explain the nested policy_parameters keys (e.g. how sha256_prev_lineage_hash interacts with parent_hashes, or ordering of parent_tool_ids) beyond what the schema says.

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 Summary sentence gives a specific verb and resource: 'Composes a hash-chained ML training-data lineage record' with enumerated components (dataset identity/version, source dataset refs, collection method, optional referenced receipt). However, that clarity arrives only at the end of a long boilerplate block, and the description never distinguishes it from near-siblings like record_model_input_lineage, build_ai_decision_log_record, or lint_ab2013_training_data_disclosure.

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?

It states a hard operational constraint ('Use synthetic or anonymised inputs only') and explains compute mode selection (auto/server/browser). But there is no explicit when-to-use guidance relative to the many sibling lineage/record builders, so routing must be inferred from the summary alone.

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

build_ai_workpaper_recordAI-Tool-Usage Workpaper RecordB
Read-onlyIdempotent
Inspect

AI-Tool-Usage Workpaper Record: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-380-build-ai-workpaper-record.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: Composes a documentation-element workpaper record from an existing OCG receipt (tool identity, execution hash, kernel digest), a declared determinism class and conventions, engagement metadata, and a reviewer sign-off statement. Outputs: checks, disclaimer, documentation_standard_ref, engagement, evidence_binding, limitations, previous_workpaper_hash, sign_off, tool_identity, zero_pii_notice. Output schema: call describe_tool("build_ai_workpaper_record").

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: declared_conventions, determinism_class, documentation_standard_ref, engagement_id, previous_workpaper_hash, receipt_execution_hash, receipt_generated_at, receipt_kernel_digest, receipt_tool_id, receipt_tool_version, reporting_period, reviewer_ha_role, reviewer_identity_id, reviewer_role, reviewer_statement. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Beyond the annotations (readOnly/idempotent/non-destructive), the description discloses substantive behavior: default server-side computation on Cloudflare Workers, 'compute:browser' returning a delegation URL, gpu:true nodes always delegating, and that inputs are processed transiently and 'not stored, logged, or retained'. It also notes an AP2 artifact with execution_hash is exported and that the FV-status file is a snapshot, not a subscription.

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?

The paragraph opens with generic platform boilerplate ('OpenChainGraph compute node', 'Deterministic OpenChainGraph compute node') and buries a full 64-character FV-status URL and hash mid-text before reaching the actual purpose in the trailing 'Summary' sentence. The useful content is real, but it is neither front-loaded nor trimmed, and the hash URL is pure noise for tool selection.

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?

For a complex builder with no output schema, the description names the output components (checks, disclaimer, evidence_binding, sign_off, tool_identity, zero_pii_notice, etc.) and covers retention, determinism, and provenance, which is enough for an agent to call it correctly. The remaining gap is the absent routing guidance against sibling builders.

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 description coverage is 100% at the top level, so the baseline would be 3, but the description adds real meaning by enumerating the semantic groups packed into policy_parameters (tool identity, execution hash, kernel digest, determinism class, conventions, engagement metadata, reviewer sign-off) — the 15 nested keys themselves have empty {} schemas, so this enumeration is the only guidance on what belongs there.

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 Summary section states a specific verb and resource: 'Composes a documentation-element workpaper record from an existing OCG receipt... engagement metadata, and a reviewer sign-off statement.' That is far more precise than the tautological title. However, it never differentiates itself from close siblings such as compose_workpaper_bundle or build_ai_decision_log_record, leaving the agent to guess which builder to pick.

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

Usage Guidelines2/5

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

There is no statement of when to choose this tool over alternatives, no prerequisites beyond 'use synthetic or anonymised inputs only', and no mention of the sibling builders that also produce workpaper/evidence records. The compute-mode paragraph explains mechanics, not selection criteria.

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

build_allocation_decision_receiptBuild Allocation Decision ReceiptB
Read-onlyIdempotent
Inspect

Build Allocation Decision Receipt: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-515-build-allocation-decision-receipt.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: Re-derives whether an allocation produced by an optimizer is explained by the objective and inputs that were true when it was made: the eligibility schedule snapshot, the inventory snapshot offered, the haircut table version, and the declared objective. Outputs: as_of, binding_constraints, delta, eligibility_schedule_ref, exceptions, fence, haircut_table_version, inventory_ref, judgment_required, not_proven, objective, obligation, obligation_ref, rationale, reproducibility, rounding. Output schema: call describe_tool("build_allocation_decision_receipt").

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: allocation_chosen, eligibility_schedule, inventory_snapshot, obligation_amount, rounding. Unknown keys are refused.

TDQS

B3.2/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), and the description adds genuinely new behavioral context: server-vs-browser execution with delegation URL for gpu:true nodes, transient processing with no storage or logging, and export of an AP2 artifact carrying execution_hash for chain provenance. It does not explain failure/exception semantics (not_proven, judgment_required) or what happens with unregistered kernels, which keeps it from 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.

Conciseness2/5

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

The actual purpose is not front-loaded — it arrives after two boilerplate sentences — and the text is padded with a marketing URL, a full FV-status hash path, a bare enumeration of eighteen output fields, and a 'call describe_tool(...)' pointer. Several sentences duplicate structured data the agent already has.

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

Completeness3/5

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

Given a nested policy_parameters object and no output schema, the description does provide an inline output field list and privacy/provenance context, which is enough to call it. But it defers the real return contract to describe_tool(), and it omits what the tool does when inputs fail to reconcile (exceptions, not_proven, judgment_required), leaving a meaningful gap for a verification tool.

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 carries the compute enum semantics and the required keys for policy_parameters; the description adds essentially no parameter-level meaning beyond repeating the compute modes. The listed output fields describe returns, not inputs, so they do not compensate here.

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 description does give a specific verb and object: 'Re-derives whether an allocation produced by an optimizer is explained by the objective and inputs that were true when it was made', and names the concrete evidence it reconciles (eligibility schedule snapshot, inventory snapshot, haircut table version, objective). However this is buried after two sentences of OpenChainGraph compute boilerplate, and it never distinguishes itself from close siblings such as check_allocation_affirmation or compile_rebalance_evidence_pack.

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

Usage Guidelines2/5

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

There is no statement of when to choose this tool over the many sibling allocation/receipt builders, and no prerequisites or exclusion criteria. The only guidance given ('Use synthetic or anonymised inputs only') is an input-handling rule, and the compute-mode sentence merely restates what the schema enum already documents.

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

build_amortization_scheduleAmortization Schedule BuilderA
Read-onlyIdempotent
Inspect

Amortization Schedule Builder: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-215-reg-z-appendix-j-apr. Open at: https://ainumbers.co/chaingraph/art-332-build-amortization-schedule.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: Deterministic amortization schedule builder covering level-payment, ARM (index plus margin, periodic and lifetime caps, recast), interest-only, balloon, and temporary buydown (2-1 or 3-2-1) structures, per the unit-period and odd-days conventions in 12 CFR 1026 Appendix J. Outputs: advances, loan_amount, note, note_rate_pct, num_payments, odd_days, payment_amount, payments, periods_per_year, regulatory_basis, schedule, schedule_type, totals, unit_period_days. Output schema: call describe_tool("build_amortization_schedule").

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: buydown_schedule, buydown_type, nominal_amortization_periods, rate_changes, recast, schedule_type. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the annotations, the description discloses server-side versus browser execution, gpu:true delegation behavior, transient processing with no storage or logging, and AP2 artifact provenance via execution_hash. That is strong behavioral context, though the long FV-status receipt explanation and repeated 'deterministic compute node' phrasing add noise rather than decision-relevant clarity.

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?

The description is bloated and poorly front-loaded: it repeats 'Deterministic OpenChainGraph compute node' and buries the actual supported loan structures near the end after compute-binding boilerplate and a long FV-status receipt explanation. Several sentences, including the URL and hash snapshot commentary, do not help an agent decide or invoke the tool.

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

Completeness3/5

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

For a complex nested tool with no output schema, the description does list output fields and explains compute modes, data handling, and schedule structures. However, it leaves the key sibling-selection ambiguity unresolved and does not explain how parent-hash chaining should be used in practice beyond what the schema already states.

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; the description adds domain meaning by explaining that policy_parameters cover level-payment, ARM index plus margin and caps, interest-only, balloon, and 2-1 or 3-2-1 buydown structures under Appendix J conventions. It does not add much beyond the schema for parent_hashes and parent_tool_ids, but the schedule-structure context is genuinely useful.

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 description clearly names a specific verb and resource — building an amortization schedule — and enumerates supported structures such as level-payment, ARM, interest-only, balloon, and buydown. However, it never distinguishes this tool from the very similar sibling compute_deterministic_amortization_schedule, so an agent cannot tell from the description alone which one to select.

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 description gives useful operational guidance on compute:"auto" versus compute:"browser" and warns to use synthetic or anonymised inputs. It also implies usage through the compliance mandate and output feeding, but it does not explicitly say when to use this tool instead of the related amortization or Reg Z siblings.

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

build_ap2_cartmandate_hashchainAP2 CartMandate Hash-Chain BuilderB
Read-onlyIdempotent
Inspect

AP2 CartMandate Hash-Chain Builder: OpenChainGraph compute node (payment_policy). 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. Output feeds: art-596-ap2-x402-cart-correlation. Open at: https://ainumbers.co/chaingraph/art-595-ap2-cartmandate-hashchain-builder.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: Builds an illustrative Google AP2 CartMandate Verifiable Digital Credential (VDC) skeleton whose credentialSubject carries a deterministic hash-chain over an ordered list of cart line items: link_0 = keccak256(canon({index:0,item})), link_i = keccak256(canon({index:i,item,prev:link_(i-1)})), cart... Outputs: vdc, vdc_type, cart_root, chain_length, chain_links, cart_chain_intact, first_divergent_index, note, reasons. Output schema: call describe_tool("build_ap2_cartmandate_hashchain").

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". Unknown keys are refused.

TDQS

B3.4/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 the safety profile is covered. The description adds real value beyond that: determinism guarantees, transient processing ('not stored, logged, or retained'), the server-vs-browser delegation behavior, and the fact that the FV-status receipt verifies offline as a snapshot. The compute-mode discussion largely restates the schema's own `compute` description, which blunts full marks.

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?

The opening is wasteful: 'OpenChainGraph compute node (payment_policy). Deterministic OpenChainGraph compute node.' repeats itself, and a full artifact URL plus a 64-character FV-status hash and offline-verification commentary precede any statement of what the tool does. The hash-chain formula that actually matters is truncated mid-sentence ('cart...'), so length is spent on the wrong content and the purpose is not front-loaded.

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

Completeness3/5

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

For a 4-parameter tool with a nested object and no output schema, the description does enumerate the return fields (cart_root, chain_links, cart_chain_intact, first_divergent_index) and the chaining inputs concept, and it delegates the output schema to describe_tool. What is missing is any explanation of how upstream parent_hashes feed the exported chain and what the verification semantics of cart_chain_intact are, so an agent can call it but not fully reason about the result.

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 all four parameters including the nested policy_parameters object are already documented in structured data, making 3 the baseline. The description adds nothing about the chain-provenance parameters parent_hashes and parent_tool_ids or how claimed_links relates to cart_chain_intact, so it does not exceed the schema.

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 'Summary:' sentence gives a genuinely specific verb+resource: it builds an illustrative Google AP2 CartMandate VDC skeleton whose credentialSubject carries a deterministic hash-chain over ordered cart line items, complete with keccak256 link formulas. However, that purpose statement is buried at the very end after compute-infrastructure boilerplate, and the description never distinguishes this from close siblings such as build_google_ap2_mandate, draft_ap2_mandate_credential, or emit_chaingraph_artifact.

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 description gives a clear input-handling constraint ('Use synthetic or anonymised inputs only') and rules for compute mode selection, and hints at downstream routing via 'Output feeds: art-596-ap2-x402-cart-correlation'. But it never states when to choose this builder rather than the several other AP2 mandate-building siblings, leaving the agent to infer the selection rule from the tool name alone.

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

build_art5_diligence_evidenceArticle 5 Due Diligence Evidence RecordA
Read-onlyIdempotent
Inspect

Article 5 Due Diligence Evidence Record: OpenChainGraph compute node (compliance_mandate). 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-509-recompute-payment-waterfall. Open at: https://ainumbers.co/chaingraph/art-510-build-art5-diligence-evidence.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: Records, for one securitisation position over one stated period, which Article 5 verification and ongoing monitoring duties an institutional investor declares it performed, the evidence references behind each, what remains outstanding, and the accountability trail naming who signed each off. Outputs: agent_parity_findings, citations, deal_ref, distinctness_basis, duty_count, duty_results, duty_set, investor_ref, judgment_duties, no_adequacy_claim, no_ratio_published, not_a_filing, note, outstanding_duties, override_handling, override_record_count, performed_count, period, position_ref, rationale, rejected_citations. Output schema: call describe_tool("build_art5_diligence_evidence").

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: accountability_records, additional_duties, deal_ref, duty_declarations, investor_ref, period, period_label, position_ref. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses compute-mode behavior (auto/server/browser, gpu:true always delegates), transient non-stored input handling, AP2 artifact export with execution_hash for provenance, and that the FV-status receipt is a offline-verifiable snapshot rather than a subscription. This is substantial behavior an agent could not get 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.

Conciseness2/5

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

The description opens with templated boilerplate ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.') and buries the actual summary far down after compute-mode and FV-status text. The long enumerated output list and redundant phrasing dilute front-loading, though the content itself is relevant.

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?

For a four-parameter tool with a nested policy_parameters object and no embedded output schema, the description covers purpose, inputs, chaining provenance, and an explicit enumerated output list, plus how to obtain the full output schema via describe_tool. It is largely complete, with only the missing sibling routing as a gap.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids, and the policy_parameters object including required keys. The description adds little parameter-specific meaning beyond the schema's own compute descriptions, making the baseline 3 correct.

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 core purpose is stated specifically: recording which Article 5 verification and ongoing monitoring duties an institutional investor declares it performed for one securitisation position over a stated period, with evidence references, outstanding items, and an accountability trail. It is a clear verb-plus-resource statement, though it never draws an explicit boundary against siblings like build_evidence_pack or assemble_ocg_evidence_bundle.

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?

There is operational context (compute mode selection, chaining from art-509-recompute-payment-waterfall, 'Use synthetic or anonymised inputs only'), but nothing states when to pick this tool over the many adjacent evidence-pack builders. The agent must infer its slot from the purpose statement alone.

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

build_bond_ladderBond Ladder BuilderC
Read-onlyIdempotent
Inspect

Bond Ladder Builder: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-705-bond-ladder-builder.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: Builds a target-weight bond ladder from a total notional split across maturity rungs and reports rung-by-rung and portfolio risk analytics: each rung's price, Macaulay and modified duration, DV01 and convexity, plus the target_weight-weighted portfolio aggregates. Outputs: assumptions, detail, domain_errors, error, ladder, note, notional, num_rungs, periods_per_year, portfolio, regulatory_basis, reinvestment_assumption. Output schema: call describe_tool("build_bond_ladder").

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: notional, rungs. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false. Beyond those, the description adds real context: deterministic execution, server vs browser delegation semantics, transient processing with no storage/logging/retention, and an AP2 artifact with execution_hash for provenance. Much of this is generic infrastructure boilerplate rather than ladder-specific behaviour (e.g. rounding, day-count convention, or how rung weights are normalised).

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?

The useful content sits in one 'Summary' sentence at the end of a preamble dominated by compute-kernel plumbing and a raw FV-status URL plus hash. That file-reference sentence ('a snapshot, not a subscription; this receipt verifies offline regardless of whether that file is ever fetched') earns no place in a tool-selection description.

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

Completeness3/5

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

Listing output fields and pointing to describe_tool("build_bond_ladder") is helpful given there is no output schema. But the tool has a nested, required-by-convention policy_parameters object whose `rungs` array has no item schema, and the description never says what a rung must contain (maturity, coupon, weight) — a real gap for a 4-parameter, nested-input mutation of state.

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 baseline is 3 and the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters. The description repeats compute-mode behaviour but adds nothing about rung structure, notional semantics, or the reinvestment_assumption enum beyond what the schema states.

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 'Summary:' sentence states a specific verb+resource — 'Builds a target-weight bond ladder from a total notional split across maturity rungs' — and enumerates the per-rung analytics (price, Macaulay/modified duration, DV01, convexity) plus weighted portfolio aggregates. However, it does not distinguish itself from close siblings like compute_bond_duration, compute_dv01 or compute_convexity, and the actual purpose is buried after a long boilerplate preamble.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, and no named sibling (e.g. compute_bond_duration for a single bond). The only usage constraint given is 'Use synthetic or anonymised inputs only', which is a data-handling rule, not a routing rule.

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

build_cbcr_reportOECD Country-by-Country Report BuilderA
Read-onlyIdempotent
Inspect

OECD Country-by-Country Report Builder: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-473-interquartile-benchmark. Open at: https://ainumbers.co/chaingraph/art-472-cbcr-builder.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: Builds an OECD BEPS Action 13 Country-by-Country Report XML schema skeleton from a caller-declared Table 1 (jurisdiction revenue/profit/tax/employee/asset data) and Table 2 (constituent-entity list) against a caller-declared, version-pinned Action 13 XML schema version. Outputs: all_fatal_passed, anomaly_flags, checks, export_mode, fatal_failure_count, gate_status, jurisdictions, not_submittable, orphan_entities, schema_version, xml_schema_skeleton. Output schema: call describe_tool("build_cbcr_report").

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". Unknown keys are refused.

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, non-open-world, so the bar is lower. The description still adds non-obvious behavior: inputs are processed transiently and not stored/logged, server vs browser execution differs by kernel registration, and an AP2 artifact with execution_hash is emitted for chain provenance. It does not explain what gate_status or not_submittable mean operationally, which keeps it from 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.

Conciseness2/5

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

The actual purpose appears only in the final third ('Summary: ...'), after repeated boilerplate ('OpenChainGraph compute node' stated twice), an FV-status receipt hash URL, and provenance chatter. The single most decision-relevant sentence about what the tool produces should be first. Considerable text does not earn its place for tool selection.

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?

For a nested-policy tool with no output schema, the description compensates by enumerating the returned fields (gate_status, fatal_failure_count, orphan_entities, xml_schema_skeleton, etc.) and explaining chaining via the AP2 execution_hash. What remains thin is how gate_status/not_submittable should be interpreted and what a caller must supply for a passing gate. That gap is modest given the schema richness.

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 baseline is 3. The description does add some mapping value by tying Table 1 and Table 2 to the jurisdiction/entity inputs and mentioning 'unknown keys are refused', but it says nothing about export_mode enum semantics (private_filing vs eu_public vs au_public) or rounding_tolerance, which are the parameters most likely to be misused.

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 Summary states a specific verb and resource: builds an OECD BEPS Action 13 CbCR XML schema skeleton from caller-declared Table 1 and Table 2 data against a version-pinned Action 13 schema version. That is clearly distinct from analytical siblings like compute_globe_jurisdictional_etr or benchmark_tp_interquartile_range, though the tool never names an alternative directly. The clarity is real but buried at the end of a long boilerplate block.

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?

It gives one hard usage constraint ('Use synthetic or anonymised inputs only') and explains the compute-mode choice, which is genuinely useful. But it never says when to pick this tool over neighbouring tax/compliance builders, nor what prerequisites (valid TIN, matching entity lists) must hold. Usage is implied by the input description rather than stated.

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

build_chaingraphBuild an executable ChainGraph DAGA
Read-onlyIdempotent
Inspect

Hash-aware sibling of build_workflow_links (ChainGraph Standard v0.1 §8.1). Returns an ordered, executable DAG over the ChainGraph suite's verifiable tools, with explicit parent_hash wiring: which upstream execution_hash each step must cite in its chain block. Pass target_tool_id to build the chain that produces that node (walks consumes-edges back to roots), or tool_ids for an explicit ordered list, or neither to list available ChainGraph nodes. Agent loop: run a node, capture its execution_hash, pass it as the parent_hash for each downstream node, then verify with verify_execution_hash.

NameRequiredDescriptionDefault
tool_idsNoExplicit ordered list of ChainGraph node tool_ids to wire.
target_tool_idNoA ChainGraph node tool_id (e.g. "art-15-agent-commerce-conformance"). Builds the chain that produces it.

TDQS

A4.6/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; the description still adds substantive behavior beyond them – the parent_hash wiring contract, the deps-graph traversal, and the intended call/verify loop with verify_execution_hash. It stops short of describing what the DAG output looks like structurally, but the added context is meaningful.

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?

Front-loaded with the identity and return shape, then the parameter modes, then the operational loop – a sensible ordering. It is dense with ChainGraph jargon (parent_hash, execution_hash, §8.1) but every sentence carries information; only the spec citation is arguably expendable.

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?

Two optional parameters, no output schema, no nested objects – and the description covers return shape (ordered executable DAG), all input modes including the empty case, and the follow-up verification step. Nothing an agent needs in order to call it correctly 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?

Schema coverage is 100% and each parameter is documented, but the description adds semantics the schema does not: that target_tool_id triggers a reverse walk of consumes-edges to roots, and that passing neither yields a node listing. That 'neither' behavior lives only in the description and materially affects how the empty-args case is interpreted.

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 ('Returns an ordered, executable DAG over the ChainGraph suite's verifiable tools, with explicit parent_hash wiring') and explicitly positions itself as the 'hash-aware sibling of build_workflow_links', so an agent can distinguish it from that sibling without opening either 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?

Enumerates all three input modes and their semantics: target_tool_id builds the chain producing a node by walking consumes-edges back to roots, tool_ids wires an explicit ordered list, and neither lists available nodes. It also gives the downstream agent loop (run node, capture execution_hash, pass as parent_hash, verify), which is exactly the routing guidance the tool needs.

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

build_claim_dispute_bundleClaim Dispute Bundle BuilderB
Read-onlyIdempotent
Inspect

Claim Dispute Bundle Builder: OpenChainGraph compute node (compliance_mandate). 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-306-agent-insurability-evidence-scorer. Open at: https://ainumbers.co/chaingraph/art-307-claim-dispute-bundle-builder.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: Assembles a two-sided replay-challenge dossier for a disputed execution_claim: binds the claim digest and challenge to replay instructions and receipt digests, and, when a warranty_kpi_breach input is supplied (matching both Armilla Guaranteed and Munich Re aiSure settlement shapes), computes mea... Outputs: bundle_claim_strength, challenge_digest, claim_digest, insufficient_evidence, kpi_breach, receipts, replay_instructions. Output schema: call describe_tool("build_claim_dispute_bundle").

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: challenge, execution_claim, warranty_kpi_breach. Unknown keys are refused.

TDQS

B3.2/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), and the description adds meaningful context beyond them: inputs are processed transiently and not stored/logged/retained, synthetic or anonymised inputs only, and an AP2 artifact with execution_hash is exported for chain provenance. The compute-mode delegation rules (auto/server/browser, gpu:true always browser) are also useful behavioral detail, though shared boilerplate dilutes it.

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?

The description is not front-loaded: the specific purpose appears only in a 'Summary' at the end, after repeated compute-node boilerplate and an inline FV-status URL hash. It also truncates mid-word ('computes mea...'), so even the one differentiating sentence is incomplete.

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

Completeness3/5

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

For a nested, 4-parameter tool with no output schema, the description does list the outputs (bundle_claim_strength, challenge_digest, claim_digest, insufficient_evidence, kpi_breach, receipts, replay_instructions) and points to describe_tool for the schema. But the key behavior around warranty_kpi_breach settlement shapes is cut off, leaving an agent without the full picture of what the tool computes.

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 compute, parent_hashes, parent_tool_ids and policy_parameters, giving a baseline of 3. The description adds some meaning for the nested policy inputs by naming challenge, execution_claim and warranty_kpi_breach and noting the settlement shapes the breach input can match, but the sentence is cut off and parent-tool chaining is only implied.

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 'Summary' sentence states a specific verb and resource: it assembles a two-sided replay-challenge dossier for a disputed execution_claim, binding claim digest, challenge, replay instructions and receipt digests, and it names its upstream artifact (art-306). However, that specific purpose is preceded by a large block of generic compute-node boilerplate shared with every sibling, so an agent must read past noise to find the differentiator.

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

Usage Guidelines2/5

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

The only conditional guidance is about the warranty_kpi_breach input ('when a warranty_kpi_breach input is supplied ... computes mea...'), which is truncated mid-sentence. There is no statement of when to pick this over nearby siblings like assemble_ocg_evidence_bundle, build_evidence_pack, or score_agent_insurability_evidence, and no prerequisites or exclusions.

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

build_conditional_relief_collateral_receiptConditional-Relief Collateral ReceiptA
Read-onlyIdempotent
Inspect

Conditional-Relief Collateral Receipt: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-514-conditional-relief-collateral-receipt.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: Shows, per acceptance and per day, that every condition of a conditional regulatory relief -- no-action, exemptive, or comfort-letter -- held before a firm accepted an asset as collateral in reliance on it: a per-condition PASS/FAIL/UNDECIDABLE verdict against the caller's own versioned condition... Outputs: all_conditions_met, applicable_capital_charge, applicable_charge_pct, as_of, asset_class, asset_class_valid, condition_set_version, conditions, declared_haircut_pct, declared_reporting_cadence, declared_valuation, eligibility_lost_on_revocation, exceptions, issuer_permitted_status, issuer_permitted_status_declared, last_report_ref, position_size, relied_on_version, relief_regime, revocation_capital_charge, revocation_capital_delta, revocation_charge_pct, revocation_eligible_without_relief, revocation_eligible_without_relief_declared, revocation_exposure_material, version_stale. Output schema: call describe_tool("build_conditional_relief_collateral_receipt").

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: as_of, asset_class, capital_charge_table, condition_set, declared_haircut_pct, declared_reporting_cadence, declared_valuation, issuer_permitted_status, last_report_ref, position_size, relied_on_version, relief_regime, revocation_charge_pct, revocation_eligible_without_relief. Unknown keys are refused.

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/closed-world, yet the description adds genuine context: inputs are processed transiently and not stored or logged, execution is deterministic, browser mode returns a delegation URL instead of a result, and an AP2 artifact with execution_hash is exported for chain provenance. The FV-status snapshot is explicitly framed as offline-verifiable rather than a subscription. Remaining gap is the absence of any note on latency, cost, or failure behavior for the browser-delegation path.

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?

Structure is poor: the substantive summary appears halfway through, behind generic compute-mode and retention boilerplate, and is then followed by an enumeration of roughly 29 output field names that the same text says must be retrieved via describe_tool. That enumeration is waste, and the ordering forces an agent to read past two paragraphs before learning what the tool actually decides.

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?

For a nested-object compute node with 14 required sub-keys and no declared output schema, the description supplies a lot: the decision semantics, compute-mode behavior, chaining via parent_hashes/parent_tool_ids, artifact export, and an output field list. The one real gap is that individual policy_parameters keys are never explained, leaving an agent to infer the meaning of condition_set versus relied_on_version and similar fields.

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%, so the four top-level parameters are already fully documented in the schema, which sets the baseline at 3. The description does not elaborate on any of the 14 required policy_parameters keys (as_of, asset_class, condition_set, capital_charge_table, etc.) beyond what the schema's nested description already says. It lists output field names, which helps interpret inputs indirectly but is not parameter semantics.

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 description eventually states a very specific purpose: showing per acceptance and per day that every condition of a conditional regulatory relief (no-action, exemptive, comfort letter) held before an asset was accepted as collateral, with per-condition PASS/FAIL/UNDECIDABLE verdicts. That is a precise verb+resource+scope that no sibling covers. However, the first line is only a title restatement plus generic 'OpenChainGraph compute node (compliance_control)' framing, so the real purpose is buried mid-description rather than front-loaded.

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?

It gives explicit routing guidance for the 'compute' parameter (auto vs server vs browser, and gpu:true always delegates) and an input-hygiene rule ('Use synthetic or anonymised inputs only'). It never says when to pick this tool over related siblings such as check_tokenized_collateral_eligibility, validate_fund_collateral or check_capital_adequacy_private, and offers no exclusions or prerequisites.

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

build_conversion_receiptConversion Receipt BuilderA
Read-onlyIdempotent
Inspect

Conversion Receipt Builder: OpenChainGraph compute node (cryptographic_mandate). 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. Output feeds: art-192-conversion-receipt-verifier. Open at: https://ainumbers.co/chaingraph/art-191-conversion-receipt-builder.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: Binds one file-conversion event into a canonical receipt tying the input digest to the converter identity, the parameters, and the output digest. Outputs: all_checks_pass, checks, receipt. Output schema: call describe_tool("build_conversion_receipt").

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: converter, parameters. Unknown keys are refused.

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/non-open-world, so the safety profile is covered. The description adds genuinely new behavioural facts: inputs are processed transiently and not stored or logged, execution is deterministic, and gpu:true nodes always delegate to the browser returning a delegation URL rather than computing. The long FV-status hash URL is a nice-to-have but adds little for an invoking agent.

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?

The opening sentences are redundant ('OpenChainGraph compute node (cryptographic_mandate). Deterministic OpenChainGraph compute node.') and the actual purpose statement — the most important line — is placed last under 'Summary:'. A 90-character FV-status hash URL and web page link consume substantial space without helping selection or invocation.

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?

For a compute node with nested policy_parameters and no output schema, the description covers execution model, privacy handling, determinism, provenance chaining, and names the returned fields (all_checks_pass, checks, receipt) plus a pointer to describe_tool for full schemas. That is enough for an agent to call it correctly, with only minor gaps around policy_parameters shape.

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 the description largely restates the schema's compute-mode enum semantics rather than adding to them. It does confirm chain-provenance behaviour for parent_hashes, but that too is in the schema. Baseline 3 applies since the schema carries the parameter burden.

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 gives a precise verb and resource: 'Binds one file-conversion event into a canonical receipt tying the input digest to the converter identity, the parameters, and the output digest.' That is specific enough to distinguish it from the many sibling receipt builders. However, the purpose is buried at the end behind node/registry metadata, and no sibling tool name (e.g. verify_conversion_receipt) is called out as the counterpart.

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?

There is real guidance on the compute dimension (auto/server/browser, gpu:true always delegates) and a hard constraint to use only synthetic or anonymised inputs. What is missing is when to choose this builder versus verify_conversion_receipt or the other receipt builders — the routing to the verifier is given only as an artifact/interop note ('Output feeds: art-192-conversion-receipt-verifier'), not as a use-this-not-that rule.

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

build_digest_manifestDigest Manifest BuilderC
Read-onlyIdempotent
Inspect

Digest Manifest Builder: OpenChainGraph compute node (cryptographic_mandate). 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. Output feeds: art-191-conversion-receipt-builder. Open at: https://ainumbers.co/chaingraph/art-194-digest-manifest-builder.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: Binds N file digests into one canonical, hash-anchored manifest. Outputs: all_checks_pass, checks, manifest. Output schema: call describe_tool("build_digest_manifest").

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". Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description does add real context beyond that: determinism, server-side vs browser delegation behaviour for gpu:true nodes, transient processing with no storage/logging, and the AP2 execution_hash export. Return values are not described, which keeps this at a solid but not exceptional 3.

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?

The text opens with identity boilerplate ('OpenChainGraph compute node (cryptographic_mandate). Deterministic OpenChainGraph compute node.'), embeds a URL and a 64-character hash path, and only reaches the actual purpose in the final sentence. Sizeable portions do not help an agent decide or invoke, and the useful content is back-loaded rather than front-loaded.

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

Completeness3/5

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

The description names the outputs (all_checks_pass, checks, manifest) and covers privacy and provenance, which matters for a compute node with no output schema. However, it never explains what 'policy_parameters' entries (sort/entries/purpose) mean for this specific decision function, leaving the core input semantically thin.

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 all four parameters, including the enum on 'compute' and the parent_hashes/parent_tool_ids pairing rule, are already documented in the schema. The description's compute-mode paragraph largely restates that schema text rather than adding new meaning, so the baseline 3 applies.

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

Purpose3/5

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

The genuine purpose only appears in the closing line: "Binds N file digests into one canonical, hash-anchored manifest." That is a specific verb+resource, but it is buried under ChainGraph compute-node boilerplate, and nothing distinguishes it from adjacent builders such as build_disclosure_manifest or build_conversion_receipt beyond the downstream 'feeds' pointer.

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: the compute-mode paragraph tells the agent how to choose 'auto'/'server'/'browser', and 'Output feeds: art-191-conversion-receipt-builder' hints at pipeline ordering. There is no explicit statement of when to pick this tool over a sibling manifest builder or what preconditions the inputs must satisfy.

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

build_disclosure_manifestBuild a signed data-room disclosure manifestA
Read-onlyIdempotent
Inspect

Builds a Merkle-rooted disclosure manifest from a caller-supplied digest list (DATAROOM-1-BUILD-SPEC.md §DR-4) -- the agent hashes files itself and passes {path,size,digest,content_type} entries; the worker never sees file contents. Same leaf scheme as tools/546-disclosure-manifest-builder.html: sha256(path|digest|size), duplicate-last-leaf on an odd level. Entries are sorted by path before hashing so the root is order-independent. Returns the manifest object + merkle_root; sign and anchor it client-side (or via a separate §16 signing step) if a signed artifact is required.

NameRequiredDescriptionDefault
entriesYesList of {path,size,digest,content_type} -- the caller has already hashed each file.
room_labelNoLabel for the disclosure room.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/closed-world, and the description adds genuine value beyond them: the worker never sees file contents (privacy), entries are sorted so the root is order-independent, and the return is an unsigned manifest plus merkle_root. The 'signed' in the title is corrected by the description's signing caveat, but that is a title issue, not an annotation contradiction.

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?

Front-loads the core action and keeps to one dense paragraph with no filler. Some external references (DATAROOM-1-BUILD-SPEC.md, tools/546-...) are less actionable for an agent but do not bloat it materially.

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?

With no output schema, the description supplies the return shape (manifest object + merkle_root) and the signing caveat, which is what an agent needs to call and correctly interpret the result. Remaining gaps (error cases, root format) are minor.

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%, giving baseline 3, and the description adds real meaning: it states which entry fields exist and that the leaf hash is sha256(path|digest|size) with duplicate-last-leaf on odd levels, which clarifies how 'digest' and 'path' are consumed. That is meaningful hashing semantics beyond the schema text.

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 ('Builds') and resource ('Merkle-rooted disclosure manifest') with the exact construction scheme, so an agent knows what it produces. It does not explicitly distinguish itself from the similarly-named sibling 'build_digest_manifest', leaving that differentiation to inference.

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?

Clarifies the workflow: the agent hashes files itself and passes digest entries, and if a signed artifact is needed the agent must sign/anchor client-side or via §16. This gives clear when-to-use context, though it never names or excludes a specific sibling.

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

build_dora_roi_registerDORA Register of Information (RoI) Builder & Cross-ValidatorB
Read-onlyIdempotent
Inspect

DORA Register of Information (RoI) Builder & Cross-Validator: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2027-01-31 (DORA RoI annual submission cycle, Q1 (2nd cycle completed Q1 2026; next cycle Q1 2027).). 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. Open at: https://ainumbers.co/chaingraph/art-466-dora-roi-builder.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: Constructs and cross-validates the core Register of Information (RoI) template relationships required under DORA (EU 2022/2554) Art. Outputs: contracts, entity, functions, note, providers, validation_report. Output schema: call describe_tool("build_dora_roi_register").

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: contracts, entity, functions, providers. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Beyond the annotations (readOnly, idempotent, non-destructive, closed-world), it discloses real behavioral facts: compute:"auto" runs server-side on Cloudflare Workers, "browser" returns a delegation URL, gpu:true nodes always delegate, inputs are transient and not retained, and an AP2 artifact with execution_hash is exported. The only omission is what the validation_report actually contains, which it defers to describe_tool.

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?

The payload is padded with compute-binding boilerplate, a full FV-status JSON URL, and a malformed deadline clause with doubled parentheses ("Q1 (2nd cycle completed Q1 2026; next cycle Q1 2027).)"). The actual purpose is buried under the title restatement and infra detail rather than front-loaded.

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?

For a 4-parameter compute node with a nested policy_parameters object and no output schema, the description supplies the missing return shape (contracts, entity, functions, note, providers, validation_report) and a pointer to describe_tool. Combined with 100% schema coverage, an agent has enough to invoke it 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 description coverage is 100%, so the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters including the required keys and the 'unknown keys are refused' rule. The description adds nothing beyond that, 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?

The Summary sentence states a specific verb and resource: it "constructs and cross-validates the core Register of Information (RoI) template relationships required under DORA (EU 2022/2554)." That is clearly distinguishable from generic siblings. However it never names a neighboring tool (e.g. compute_dora_roi_gleif_preflight_pack or run_dora_readiness_diagnostic), so the agent must infer boundaries from this text alone.

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

Usage Guidelines2/5

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

The description gives a regulatory deadline (2027-01-31) but no guidance on when to reach for this tool versus the several other DORA tools in the list. There are no exclusions, prerequisites, or alternative-routing hints, so usage must be inferred from the name.

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

build_dual_control_certificationDual Control Certification EvidenceA
Read-onlyIdempotent
Inspect

Dual Control Certification Evidence: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-503-build-dual-control-certification.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: Decides whether a required number of distinct named identities have each filed a signed section 27 approval record over one sealed subject in one required role, and reports every record it could not count and why. Outputs: agent_parity_findings, as_of_date, boundary, counted_identities, counted_records, distinct_identities_counted, distinctness_basis, duplicate_identities_collapsed, foreign_subject_records_rejected, no_arithmetic_claim, note, off_role_records_ignored, override_handling, override_records, prepared_by, rationale, records_summary, regime, rejection_records, role_policy, subject, threshold_policy, threshold_satisfied, threshold_shortfall, unsigned_records_rejected, verdict_reason. Output schema: call describe_tool("build_dual_control_certification").

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: as_of_date, certification_ref, prepared_by, regime_label, required_role, signatory_records, subject_class, subject_hash, threshold_n. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive behavior, and closed-world operation, and the description adds substantial behavioral context: deterministic server/browser execution, transient processing with no storage or logging, AP2 artifact export with execution_hash, and an offline-verifiable FV snapshot. No annotation contradiction is present.

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

Conciseness3/5

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

The actual decision purpose is buried after compute-mode, privacy, artifact, and long FV-status boilerplate. The output-field list is useful because there is no output schema, but several sentences repeat schema or annotation content and could be trimmed.

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?

For a complex nested-policy tool with no output schema, the description supplies the output field list and decision mechanics, which is substantial. It still leaves the signatory_records structure and sibling-selection guidance underdescribed, so it is not fully complete.

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 description coverage is 100%, so the schema already documents top-level parameters; the description adds the required keys inside policy_parameters and states that unknown keys are refused. It does not explain the internal shape of signatory_records, but it meaningfully supplements the schema.

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 summary states a specific decision: whether a required number of distinct named identities have each filed a signed section 27 approval record over one sealed subject in one required role, and reports every record it could not count and why. That is a clear verb+resource for an agent, but the description does not explicitly distinguish this tool from related compliance-control siblings.

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 description gives compute-mode and privacy constraints, including 'Use synthetic or anonymised inputs only', but it never states when to use this tool instead of alternatives such as check_sod_matrix or compose_control_test_evidence. Usage is implied by the decision summary rather than explicitly guided.

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

build_einvoice_transmission_receiptE-Invoice Transmission Receipt BuilderA
Read-onlyIdempotent
Inspect

E-Invoice Transmission Receipt Builder: OpenChainGraph compute node (compliance_mandate). 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-295-einvoice-jurisdiction-mandate-router. Open at: https://ainumbers.co/chaingraph/art-296-einvoice-transmission-receipt-builder.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: Build a hash-anchored receipt proving a specific e-invoice's transmitted bytes were format-validated and VAT-arithmetic-checked, with the routed mandate attached. Outputs: claim_strength, document_sha256, embedded_xml_sha256, format, format_gate_passed, ha_wiring, not_legal_advice, routed_mandate, steps, validated, vat_gate_passed. Output schema: call describe_tool("build_einvoice_transmission_receipt").

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: document, format_validation, routed_mandate, vat_verification. Unknown keys are refused.

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, yet the description adds real substance: the compute:auto/server/browser execution model, gpu:true always delegating to browser, transient processing with no storage or logging, and export of an AP2 artifact carrying execution_hash for chain provenance. The note that the FV-status file is a snapshot that verifies offline is a meaningful behavioral claim. It stops short of saying what happens when format_gate or vat_gate fail.

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?

Clear, front-loaded, with zero wasted sentences: purpose, compute behavior, privacy, provenance, and routing context are all stated in a tight sequence.

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 complex compute-node tool with no output schema, the description supplies the execution model, data-handling policy, upstream dependency, the offline-verifiable FV snapshot, and an explicit list of output fields (claim_strength, document_sha256, format_gate_passed, etc.). An agent has enough to call it correctly and interpret the result.

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%, so all four parameters are already documented in the schema, including the compute enum and the required policy_parameters keys. The description confirms the upstream chaining intent (parent_hashes/parent_tool_ids) only indirectly via 'Consumes upstream artifacts from', adding no new meaning about the policy_parameters sub-objects. Baseline 3 is appropriate given the schema does the heavy lifting.

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 Summary sentence gives a specific verb and artifact: "Build a hash-anchored receipt proving a specific e-invoice's transmitted bytes were format-validated and VAT-arithmetic-checked, with the routed mandate attached." That distinguishes it from siblings like verify_einvoice_vat_calc or validate_einvoice_format, which produce checks rather than a provenance receipt. However, the purpose is buried mid-description under a boilerplate header, and no sibling is named as an explicit alternative.

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 implied rather than stated: it names the upstream artifact it consumes (art-295-einvoice-jurisdiction-mandate-router) and requires synthetic or anonymised inputs, which hints at when it fits in a chain. But there is no explicit 'use this when...' versus verify_einvoice_vat_calc, validate_einvoice_batch, or route_einvoice_jurisdiction_mandate, and no stated preconditions for obtaining the routed_mandate input.

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

build_etr_possession_chainETR Possession-Chain Receipt BuilderB
Read-onlyIdempotent
Inspect

ETR Possession-Chain Receipt Builder: OpenChainGraph compute node (cryptographic_mandate). 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-352-etr-control-evidence-checker. Open at: https://ainumbers.co/chaingraph/art-353-etr-possession-chain-builder.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: Builds a hash-chained possession-receipt evidence pack for an electronic transferable record (ETR) under UNCITRAL MLETR Art. Outputs: chain_continuous, continuity_breaks, document_digest, event_count, final_holder, merkle_root, note, possession_receipts, timestamp_order_valid. Output schema: call describe_tool("build_etr_possession_chain").

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: control_transfer_events, document_digest, initial_holder. Unknown keys are refused.

TDQS

B3.2/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), so the bar is lower, and the description still adds substantive context: transient processing with no storage, logging, or retention, an insistence on synthetic inputs, and the fact that it exports an AP2 artifact carrying execution_hash for chain provenance. The note that the FV-status file is a snapshot and that the receipt verifies offline is likewise useful context that the annotations cannot convey.

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?

Badly ordered and padded: the title is restated, the compute-mode semantics are duplicated verbatim from the schema, and an internal URL plus a 64-character FV-status file path sit ahead of the one-sentence summary that explains what the tool does. The genuinely valuable content (purpose, outputs, privacy) is back-loaded behind boilerplate.

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?

Because there is no output schema, the description usefully enumerates the returned fields (chain_continuous, continuity_breaks, document_digest, event_count, final_holder, merkle_root, possession_receipts, timestamp_order_valid). It also documents the required policy_parameters keys and the privacy posture, so an agent has enough to call it correctly; deferring the formal output schema to describe_tool is the only real gap.

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 baseline is 3. The description essentially mirrors the schema's own wording for compute (auto/server/browser) and parent_hashes rather than adding syntax or ordering constraints, though the mention of an upstream artifact producer does add some context about what parent_hashes should contain.

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

Purpose3/5

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

The actual purpose is stated but buried near the end: "Builds a hash-chained possession-receipt evidence pack for an electronic transferable record (ETR) under UNCITRAL MLETR Art." That is a specific verb and resource, but it arrives after three sentences of compute-mode boilerplate and a restatement of the title, and it does not distinguish this tool from siblings such as build_chaingraph, build_ap2_cartmandate_hashchain, or check_etr_control_evidence.

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?

It gives real constraints: "Use synthetic or anonymised inputs only," and it names the upstream artifact source (art-352-etr-control-evidence-checker) that parent_hashes should chain from. However, it never says when to choose this tool over a sibling, and it offers no when-not-to-use conditions; the compute-mode discussion is a schema restatement rather than routing guidance.

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

build_evidence_packAssemble a complete evidence pack in one callAInspect

Composes a session receipt (build_session_receipt logic), an optional §27.6 HA evidence bundle (ha_bundle_export logic, included only when ha_records is supplied and non-empty), and a disclosure manifest (build_disclosure_manifest logic) from one array of already-produced artifacts, all keyed to the same input hashes -- replacing what today takes 4-6 separate tool calls with hand-carried hashes. Calls the same in-process functions those standalone tools use; if any one section fails to build, the whole call fails isError:true with that section's own message -- no partial pack. Optionally carries a run_chain decision_trail (per-step reason codes: gate rule id, escalation rule id, input_required cause) as pack-level metadata so an auditor-facing pack answers "why did each step happen" without a second round-trip.

NameRequiredDescriptionDefault
sd_jwtNoWhen true, also return an SD-JWT export of the HA bundle (mirrors ha_bundle_export, default false; no-op when ha_records is absent).
framingNoOptional framing context for the session receipt's PTG-01 regulator prompt.
artifactsYesAlready-produced artifacts this pack documents, in call order.
ha_recordsNo§27 human_accountability_records -- omit entirely for no HA section.
room_labelNoLabel for the disclosure-manifest room.
session_idNoSession identifier to embed in the receipt, if the caller tracks one.
subject_hashNoThe sha256: subject hash the pack documents (defaults to artifacts[0].execution_hash if omitted).
decision_trailNoPer-step decision reason trail from the run_chain result (pass its decision_trail — response field or composite_output.decision_trail). Carried verbatim into the pack as pack-level metadata, outside every section hash; omitted entirely when not supplied. See DECISIONTRAIL-1.
kernel_versionNoVersion tag of the kernel that produced verification_result.
policy_versionNoVersion tag of the policy the kernel was evaluated against.
submission_receiptNoPopulate ONLY after a real transmission -- never fabricate (same rule as ha_bundle_export).
verification_resultNoThe §16/§18/§20 verdict.

TDQS

A4.5/5.0
Behavior5/5

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

Discloses behavior well beyond the annotations: all-or-nothing semantics ("if any one section fails to build, the whole call fails isError:true with that section's own message -- no partial pack"), that it calls the same in-process functions as the standalone tools, and that decision_trail is carried outside every section hash. Annotations cover only safety flags (readOnly=false, destructive=false, idempotent=false), so this atomicity and error-shape disclosure is genuinely additive.

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?

The composition and its inputs are front-loaded in the first sentence, with the failure contract second and the rationale for decision_trail third. It is dense and parenthetical-heavy in places, but nearly every clause carries information an agent needs, so the size is justified.

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?

For a 12-parameter composition tool with no output schema, it covers inputs, section optionality, failure mode, and metadata placement. The main residual gap is the shape of a successful return (what the pack object looks like), which the absence of an output schema leaves unaddressed.

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 schema already documents all 12 parameters; the description still adds meaning the schema does not, notably that artifacts are "already-produced" and "all keyed to the same input hashes," and that decision_trail exists to answer "why did each step happen" for auditors. That is more than restating field docs.

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 (composes) and enumerates exactly the three sections produced: session receipt, optional §27.6 HA bundle, and disclosure manifest, all from one artifacts array. It explicitly frames itself against the standalone tools it replaces (build_session_receipt, ha_bundle_export, build_disclosure_manifest), so an agent can distinguish it from those siblings without opening any 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 selection rule for the optional HA section ("included only when ha_records is supplied and non-empty") and positions the tool against the 4-6 separate calls it replaces. It does not explicitly say when to prefer the standalone tools instead, but the composition premise makes the boundary clear in practice.

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

build_fria_monitoring_planFRIA & Post-Market Monitoring Plan BuilderB
Read-onlyIdempotent
Inspect

FRIA & Post-Market Monitoring Plan Builder: OpenChainGraph compute node (compliance_mandate). 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-64-ai-act-highrisk-fit-diagnostic. Output feeds: 451-sr11-7-model-risk-management-gap-assessor, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-66-fria-postmarket-monitoring-builder.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: Builds an Art 27 Fundamental Rights Impact Assessment (FRIA) + Art 72 post-market monitoring plan + Art 12 logging + Art 14 human-oversight design + Art 73 serious-incident reporting path for a bank or insurer deploying a high-risk AI system. Outputs: affected_rights, applicable_date_note, deployment, fria_gaps, fria_grade, fria_score, incident_path, logging_verdict, monitoring_plan_skeleton, note, overall_score, oversight_verdict. Output schema: call describe_tool("build_fria_monitoring_plan").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavior beyond that: compute:"auto" vs "browser" delegation semantics, gpu:true browser delegation, transient non-stored inputs, a synthetic/anonymised input restriction, and an AP2 artifact with execution_hash. It is verbose and partly repeats the schema's compute parameter, but it does disclose substantive runtime and provenance 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?

The definition is heavily bloated with OpenChainGraph compute-node boilerplate, a URL, an offline FV-status hash, and repeated compute-mode details before reaching the actual tool purpose. The real purpose and output summary appear late, so the description is not front-loaded and many sentences do not earn their place for an agent trying to select or invoke the tool.

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

Completeness3/5

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

The description enumerates a useful set of outputs and names upstream/downstream chaining, which helps in the absence of an output schema. But the input schema's nested policy_parameters objects have no property descriptions, and the tool description does not compensate by explaining what those nested inputs should contain. For a complex compliance builder with no output schema, this leaves an important invocation gap.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds little parameter-level meaning beyond restating the compute modes; it does not explain what each nested policy_parameters key (fria, logging, deployment, human_oversight, monitoring_plan, incident_reporting) expects. With full schema coverage, a baseline 3 is appropriate.

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 description eventually states a specific verb and resource set: it builds an Art 27 FRIA, Art 72 post-market monitoring plan, Art 12 logging, Art 14 oversight design, and Art 73 incident path for banks/insurers deploying high-risk AI. It also names an upstream artifact and downstream tools, which helps differentiate it, but the actual purpose is buried under generic OpenChainGraph boilerplate and it does not contrast itself directly with the many sibling AI Act tools.

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?

It gives some implied usage context by naming the banking/insurance high-risk AI deployment scenario and saying it consumes the art-64 high-risk fit diagnostic and feeds two downstream tools. However, it does not explicitly say when to use this instead of sibling tools such as assess_ai_act_conformity, run_ai_act_highrisk_fit, or validate_ai_impact_assessment, nor does it state exclusions or prerequisites.

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

build_google_ap2_mandateGoogle AP2 Checkout/Payment Mandate (VDC) Builder & ValidatorA
Read-onlyIdempotent
Inspect

Build or validate a Google AP2 Checkout/Payment Mandate VDC (Open/Closed). Targets the external AP2 spec, not the AINumbers Policy Mandate. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("build_google_ap2_mandate").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A3.5/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, closed-world, non-destructive), so the description's job is to add mechanism — and it does: it renders an interactive widget, inputs are applied through AIN Bridge prefill, and execution is client-side with zero PII and zero network. That is meaningful context an agent cannot get from the annotations. It stops short of describing what the validation verdict or failure modes look like, deferring that to describe_tool.

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 front-loaded sentences with almost no filler: scope, exclusion, execution model, and output-schema pointer. The final sentence is a useful redirect rather than padding. Slightly dense with jargon (VDC, AIN Bridge) but every sentence carries information.

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 compensates well for the absent output schema by pointing at describe_tool, and it covers execution environment and data-handling expectations. Given a single optional parameter, that is close to sufficient. The remaining gap is the build-vs-validate ambiguity against sibling AP2 tools and the unexplained Open/Closed distinction.

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?

Only one parameter, and the schema already documents it at 100% coverage, so the baseline is 3. The description adds a little by saying inputs are applied via AIN Bridge prefill, which explains the mechanism but not the key naming or value shapes inside the nested map. Neither the description nor the schema explains what element IDs are valid.

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?

Specific verb pair (build or validate) plus a named resource (Google AP2 Checkout/Payment Mandate VDC, Open/Closed), and it explicitly scopes itself against a near-neighbor concept by saying it targets the external AP2 spec rather than the AINumbers Policy Mandate. What it does not do is distinguish itself from the several sibling tools that also build or validate AP2 mandate artifacts (draft_ap2_mandate_credential, validate_ap2_mandate_credential, validate_ap2_mandate_chain), so an agent still has to guess on that axis.

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

Usage Guidelines2/5

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

There is a single carve-out ('not the AINumbers Policy Mandate'), which is scope clarification rather than a when-to-use rule. Nothing says when to choose this over draft_ap2_mandate_credential or validate_ap2_mandate_credential, or under what conditions the build vs validate mode is appropriate. The agent is left to infer selection from the name alone.

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

build_idv_session_receiptIDV/KYC Session Evidence Receipt BuilderC
Read-onlyIdempotent
Inspect

IDV/KYC Session Evidence Receipt Builder: OpenChainGraph compute node (compliance_control). 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. Output feeds: art-418-idv-verification-failure-incident-composer. Open at: https://ainumbers.co/chaingraph/art-359-idv-session-receipt-builder.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.

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". See the tool's manifest for field names.

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, but the description adds real value: transient processing with no storage/logging/retention, synthetic-inputs-only guidance, deterministic execution, browser delegation semantics for compute modes, and the emitted AP2 artifact with execution_hash. It stops short of describing failure modes or what the receipt contains.

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?

Roughly half the text is boilerplate (title restated, 'compute node (compliance_control)', a documentation URL, an FV-status file hash and a disclaimer about offline verification). The genuinely useful statements about transient processing and AP2 export are buried mid-paragraph.

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

Completeness3/5

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

For a 4-param nested-object tool with no output schema, the description covers execution model and provenance export but never explains what policy_parameters must contain or what the receipt proves. An agent can call it, but cannot predict what a valid call will produce.

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 explains compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds nothing parameter-specific beyond the compute-mode summary that is already in the schema, and defers policy_parameters field names to 'the tool's manifest'.

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

Purpose3/5

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

The description names the resource (an IDV/KYC session evidence receipt) and classifies it as a compliance_control compute node, but never says what the receipt actually attests to or how it differs from close siblings like build_session_receipt, build_vop_session_receipt, or build_idv_verification_incident_record. 'Deterministic OpenChainGraph compute node' restates the platform rather than the purpose.

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

Usage Guidelines2/5

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

No sentence states when to choose this tool over the many other receipt builders in the sibling list. The only routing-like signal is 'Output feeds: art-418-idv-verification-failure-incident-composer', which describes downstream consumption rather than when an agent should invoke this tool.

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

build_idv_verification_incident_recordIDV/KYC Verification-Failure Incident ComposerC
Read-onlyIdempotent
Inspect

IDV/KYC Verification-Failure Incident Composer: OpenChainGraph compute node (compliance_mandate). 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-359-idv-session-receipt-builder. Open at: https://ainumbers.co/chaingraph/art-418-idv-verification-failure-incident-composer.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: Composes a structured verification-failure/fraud-attempt incident record from an IDV/KYC session for fraud teams, regulators, and insurers: a cross-link to the session's hash-chained receipt (art-359), an honest failure classification (type + AR4SI severity tier), session evidence digests, remedi... Outputs: cross_linked, escalation_cross_link, evidence_count, failure_classification, invalid_evidence_count, record_claim_strength, record_note, remediation, session_evidence, session_receipt. Output schema: call describe_tool("build_idv_verification_incident_record").

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: escalation_cross_link, failure_classification, remediation, session_evidence, session_receipt. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, closed-world behavior, so the safety bar is low. The description still adds real substance: deterministic execution, transient processing with no storage or logging, server vs. browser delegation, and emission of an AP2 artifact carrying execution_hash for chain provenance. This is genuine behavioral context, though it is padded with repeated compute-mode explanation that also lives in the schema.

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?

The core purpose is buried behind a compute-node preamble, an artifact URL, an FV-status hash path, and a truncated sentence fragment. Much of that preamble duplicates annotation and schema content, and the truncation actively harms readability. The useful content is present but poorly front-loaded.

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

Completeness3/5

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

With no output schema, the description does list the return fields (cross_linked, failure_classification, record_claim_strength, etc.), which is helpful. It also covers chaining requirements and data handling. It stops short of explaining the required policy_parameters contract or the meaning of AR4SI severity tiers, leaving some gaps for a composite-record tool.

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 baseline is 3. The description restates compute modes in nearly the same words as the schema's enum description rather than adding syntax or examples, and parent_hashes/parent_tool_ids are only alluded to via the upstream-consumption mention. Little meaning is added beyond the structured fields.

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

Purpose3/5

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

The actual purpose appears mid-paragraph: "Composes a structured verification-failure/fraud-attempt incident record from an IDV/KYC session for fraud teams, regulators, and insurers." That is specific, and naming upstream artifact art-359-idv-session-receipt-builder distinguishes it from sibling build_idv_session_receipt. But the definition leads with compute-node boilerplate and the summary sentence is truncated mid-word ("remedi..."), so an agent must dig for the verb+resource.

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

Usage Guidelines2/5

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

There is no statement of when to choose this tool over build_idv_session_receipt, build_agent_incident_record, or the other build_* record composers. The only usage guidance is the input constraint "Use synthetic or anonymised inputs only," which is a hygiene rule, not routing guidance. Prerequisites are only implied by the 'Consumes upstream artifacts from' line.

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

build_mastercard_agentic_tokenMastercard Agentic Token Scope BuilderC
Read-onlyIdempotent
Inspect

Mastercard Agentic Token Scope Builder: OpenChainGraph compute node (compliance_control). 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-22-agentic-payments-protocol-comparator, art-23-visa-trusted-agent-protocol-inspector. Output feeds: art-18-mcp-developer-readiness-scorecard, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-24-mastercard-agentic-token-builder.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.

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". See the tool's manifest for field names.

TDQS

C2.6/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, but the description adds valuable compute-mode behavior (auto/server/browser, gpu delegation), transient processing with no storage/logging, synthetic input requirement, and artifact export with execution_hash. These details go well beyond annotations and help an agent understand runtime side effects without contradicting them.

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?

The description is bloated with redundant phrases ('OpenChainGraph compute node (compliance_control). Deterministic OpenChainGraph compute node.') and includes an external URL and FV-status JSON path that are irrelevant to invocation. The core purpose is buried rather than front-loaded.

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

Completeness2/5

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

No output schema exists, yet the description only vaguely says it 'Exports an AP2 artifact with execution_hash' without explaining the artifact's contents or the decision function. It defers policy_parameters field names to the manifest rather than describing the core computation, leaving a significant gap for a complex builder tool.

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 the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description reinforces compute modes but adds no syntax or format detail beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose2/5

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

The description calls it an 'OpenChainGraph compute node (compliance_control)' and repeats the title, but never states what a 'Mastercard Agentic Token Scope' is or what building one entails. No concrete verb+resource explanation distinguishes it from sibling builders like build_ap2_cartmandate_hashchain.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no alternatives named, and no prerequisites. The description never says when an agent should call this vs. other AP2/token builders in the sibling list.

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

build_model_inventory_entryModel Inventory Entry BuilderB
Read-onlyIdempotent
Inspect

Model Inventory Entry Builder: OpenChainGraph compute node (compliance_control). 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. Output feeds: art-451-model-outcome-analysis. Open at: https://ainumbers.co/chaingraph/art-450-model-inventory-entry.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: Builds a single model-inventory record for a bank's SR 26-2 model-risk-management inventory: checks the caller-declared attributes (model name, owner, purpose, tier, development/deployment dates, last validation date) against the SR 26-2 required-field set, assigns a proportionality tier (limited... Outputs: ai_ml_model, completeness_score, complexity_score, inventory_record, materiality_score, missing_required_fields, model_name, third_party_vendor, tier, tier_sum, usage_scope. Output schema: call describe_tool("build_model_inventory_entry").

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: ai_ml_model, business_purpose, complexity_score, deployment_date, development_date, last_validation_date, materiality_score, model_name, model_owner, third_party_vendor, usage_scope. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial context beyond them: server-vs-browser execution binding, GPU delegation, transient processing with no storage or logging, and the synthetic-input constraint. There is a mild tension between 'Exports an AP2 artifact' and readOnlyHint=true, but this reads as returning an artifact from a deterministic compute rather than persisting state, so it does not rise to a contradiction.

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?

The definition is bloated and badly ordered: 'compute node (compliance_control)' is restated as 'Deterministic OpenChainGraph compute node', a full FV-status file path and hash are inlined, the summary is truncated mid-sentence, and the actual purpose appears last. Useful content is present but buried under infrastructure boilerplate.

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?

For a nested, four-parameter compute tool with no output schema, the description is broadly complete: it enumerates return fields (completeness_score, materiality_score, tier, missing_required_fields, etc.), explains compute modes and data handling, and points to describe_tool for the full schema. The main gap is the absent guidance on where this sits relative to sibling model-risk tools.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters bag. The description adds modest semantic value by naming the model attributes that will be checked against SR 26-2 (name, owner, purpose, tier, dates, last validation) and noting tier assignment, which is not obvious from the schema's untyped keys.

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 summary states a specific verb and resource: builds a single model-inventory record for a bank's SR 26-2 model-risk-management inventory, checking caller-declared attributes against the required-field set and assigning a proportionality tier. That is enough to distinguish it from neighbours like assess_model_validation_status or compile_model_risk_lineage_pack. However the purpose only surfaces after several paragraphs of compute-node boilerplate, and it is cut off mid-sentence ('limited...').

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

Usage Guidelines2/5

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

The description never says when to choose this tool over the many sibling inventory/lineage/model-risk tools; it only names a downstream consumer ('Output feeds: art-451-model-outcome-analysis'). The only real guidance is about compute mode ('auto' vs 'browser') and the instruction to use synthetic or anonymised inputs, neither of which addresses tool selection.

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

build_no_russia_clause_packNo-Russia-Clause Pack BuilderB
Read-onlyIdempotent
Inspect

No-Russia-Clause Pack Builder: OpenChainGraph compute node (disclosure_template). 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-95-circumvention-diligence-assessor. Output feeds: cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-96-no-russia-clause-pack-builder.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: Generates the contractual no-Russia clause + DD-evidence checklist conformance artifact for the EU 20th-package seller-liability-shift safe harbour (Art. Outputs: clause_text, completeness_grade, eu_20th_note, evidence_checklist, missing_required_items, note, reference_version, required_items_met, required_items_total, template_used. Output schema: call describe_tool("build_no_russia_clause_pack").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotent, non-destructive, closed-world), and the description adds real context on top: the compute-mode split between Cloudflare Workers server-side execution and browser delegation for gpu:true nodes, plus transient processing with no storage or logging, and the execution_hash on the exported AP2 artifact. Some of this restates the compute enum's own schema text, but the privacy and provenance disclosures go beyond 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.

Conciseness2/5

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

The purpose statement does not arrive until well past the halfway point, preceded by generic OpenChainGraph boilerplate that is identical across the tool family, an inline FV-status URL containing a 64-character hash, and an output-field dump. The core sentence is additionally truncated ('(Art.'), so the definition is both bloated and incomplete at the point of most value.

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

Completeness3/5

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

With no output schema, the description does list the ten output fields and points to describe_tool for detail, and the compute/privacy/chaining behaviour is covered. But the truncated regulatory citation, the unexplained opaque policy_parameters.contract, and the missing statement of what completeness_grade or missing_required_items mean leave real gaps for a tool whose whole value is a conformance grade.

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 defines compute, parent_hashes, parent_tool_ids and policy_parameters; the description's compute-mode paragraph largely duplicates the enum documentation. It adds a thin amount of meaning by tying parent inputs to the named upstream artifact, but says nothing about how policy_parameters.contract (an opaque object) should be shaped.

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 summary line states a specific verb and resource: it generates a contractual no-Russia clause plus a DD-evidence checklist conformance artifact for the EU 20th-package safe-harbour regime, and names the upstream/downstream artifacts it chains with. However, that sentence is buried after a long infrastructure preamble and is truncated mid-citation ('safe harbour (Art.'), and no sibling (e.g. build_traiga_safe_harbor_pack, score_clause_coverage) is named for contrast.

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?

There is no explicit statement of when to choose this pack builder over adjacent pack builders, and no exclusions. Usage is only implied via the provenance chain ('Consumes upstream artifacts from art-95-circumvention-diligence-assessor', 'Output feeds: cry-04-merkle-batch-verifier') and the 'Use synthetic or anonymised inputs only' constraint, which the agent must infer into a workflow position.

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

build_pld_disclosure_packPLD Disclosure Pack BuilderA
Read-onlyIdempotent
Inspect

PLD Disclosure Pack Builder: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-308-pld-disclosure-pack-builder.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: Assembles a disclosure/rebuttal pack for a disputed window under EU Product Liability Directive 2024/2853 (transposes 2026-12-09; AI is a "product"; non-disclosure or an AI Act breach triggers a rebuttable presumption of defectiveness). Outputs: alleged_defect, anchor, disputed_window, gap_in_window, insufficient_evidence, product_ref, rebuttal_mapping, replay_instructions, trace_digest. Output schema: call describe_tool("build_pld_disclosure_pack").

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: anchor_document_integrity, disputed_window, receipts. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the annotations (readOnly/idempotent/non-destructive/closed-world), the description discloses genuinely non-obvious behavior: server-side vs browser-delegated execution, that gpu:true nodes always delegate, that inputs are processed transiently and not stored or logged, and that the output is an AP2 artifact carrying an execution_hash for chain provenance. The FV-status receipt also flags that provenance verification is a snapshot, not a subscription. Some of this duplicates the compute parameter's schema text rather than adding new information.

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?

The text is bloated with repeated boilerplate ("OpenChainGraph compute node" twice), a raw URL and a 64-character FV-status hash, and a bare field-name dump. Critically, it is not front-loaded: the one sentence that explains what the tool does appears after the infrastructure preamble, so an agent skimming pays a real cost.

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?

For a compute node with no output schema, the description does the necessary work: it lists the returned fields (alleged_defect, disputed_window, rebuttal_mapping, trace_digest, etc.), names the required policy inputs, and points to describe_tool for the full output schema. What is missing is any explanation of what those fields mean or how large/structured the pack is, so an agent knows the shape but not the semantics of the response.

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 compute, parent_hashes, parent_tool_ids and policy_parameters are already documented in structured fields, and the description's compute-mode prose largely restates the enum description. It adds only marginal semantic value, notably naming the required policy keys and the "unknown keys are refused" strictness, which is also present in the schema.

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 Summary sentence states a specific verb and artifact ("Assembles a disclosure/rebuttal pack for a disputed window") scoped to a named legal regime (EU PLD 2024/2853), which distinguishes it from generic pack builders like build_evidence_pack or assemble_ocg_evidence_bundle. However, the opening line is a tautology that restates the title ("PLD Disclosure Pack Builder: OpenChainGraph compute node"), so the real purpose is buried near the end rather than stated up front.

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 scenario is implied (a disputed window under PLD where non-disclosure triggers a rebuttable presumption), so an agent can infer when the tool applies, and "Use synthetic or anonymised inputs only" is a real constraint. But there is no explicit when-to-use/when-not statement and no routing to an alternative sibling when the dispute is not PLD-related or when only a raw evidence bundle is needed.

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

build_product_lineageDigital Product Passport Cradle-to-Gate Lineage BuilderB
Read-onlyIdempotent
Inspect

Digital Product Passport Cradle-to-Gate Lineage Builder: OpenChainGraph compute node (compliance_mandate). 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-115-dpp-data-carrier-validator. Output feeds: art-117-product-authenticity-verifier. Open at: https://ainumbers.co/chaingraph/art-116-product-lineage-builder.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: Build a cradle-to-gate supplier lineage with hash-only claims per stage (no trade secrets). Outputs: depth, lineage, product_id, total_carbon. Output schema: call describe_tool("build_product_lineage").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely non-redundant behavior: compute mode resolution (auto/server/browser, gpu:true always delegating to browser), transient processing with no retention or logging, deterministic execution, and an AP2 export carrying execution_hash for provenance. The 'exports an AP2 artifact' line sits in mild tension with readOnlyHint but is best read as producing an output artifact rather than mutating external state, and the explicit no-retention statement resolves it; no true contradiction. It stops short of describing server-side failure or delegation-URL response shape.

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?

The payload is dominated by non-decision-relevant boilerplate: the full FV-status URL plus its 64-hex filename, a page URL, a describe_tool pointer, and repeated 'OpenChainGraph compute node' phrasing. The single most useful sentence — what the tool actually builds and its outputs — is demoted to a trailing 'Summary:', so the definition is back-loaded rather than front-loaded. Several sentences could be dropped without any loss to tool selection.

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

Completeness3/5

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

There is no output schema, and the description does compensate by naming returned fields (depth, lineage, product_id, total_carbon), so return values are covered. However, the nested policy_parameters object accepts 'stages' and 'product_id' with no declared types or structure, and the description never explains what a stage entry looks like or what inputs are expected — a real gap for a tool whose core input is that nested object. Adequate overall, but incomplete at the point where the agent must construct the call.

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 all four parameters are already documented, including the compute enum and the parent_hashes/parent_tool_ids pairing. The description adds essentially nothing parameter-level and mostly restates compute semantics already in the schema; the schemaless policy_parameters sub-keys (stages, product_id) are left unexplained in both places, but with full schema coverage the baseline of 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?

The description names a specific verb and resource: 'Build a cradle-to-gate supplier lineage with hash-only claims per stage', and names the upstream/downstream artifacts (art-115 DPP data carrier validator in, art-117 authenticity verifier out), which separates it from siblings like validate_dpp_data_carrier and verify_product_authenticity. The problem is placement: the actual purpose statement is the last sentence in a long preamble of graph-node boilerplate, so an agent skimming the opening sees a title restatement rather than what the tool does.

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 description supplies pipeline position — it consumes artifacts from art-115-dpp-data-carrier-validator and feeds art-117-product-authenticity-verifier — which implies when it belongs in a workflow. But it never states when to choose this over a sibling, what preconditions must hold (e.g., that upstream validation must have run first), or when not to use it. Usage must be inferred from artifact chaining rather than read.

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

build_public_money_settlement_receiptPublic-Money Settlement ReceiptA
Read-onlyIdempotent
Inspect

Public-Money Settlement Receipt: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-513-public-money-settlement-receipt.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: Turns one caller-transcribed payment of public money into settlement evidence an audit authority can check with no access to the operator's database: a single-settlement verdict confirming the obligation was discharged exactly once across all declared rail legs, a ministry/agency attribution verd... Outputs: amount_collected, amount_credited, as_of, at_par, at_par_discrepancy, attributed_ministry, attribution_matched, currency, declared_revenue_code, exceptions, expected_credit, fees, payer_class, payer_class_valid, payment_ref, rails, reconciled, reconciliation_window, single_settlement_status, total_fees_itemised, treasury_account_credited. Output schema: call describe_tool("build_public_money_settlement_receipt").

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: amount_collected, amount_credited, as_of, currency, declared_revenue_code, fees, payer_class, payment_ref, rails, reconciliation_window, revenue_code_table, treasury_account_credited. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it declares deterministic execution, explains that inputs are processed transiently and not stored or logged, requires synthetic or anonymised inputs, and states the export carries an execution_hash for chain provenance that verifies offline without fetching the status file. These are exactly the operational facts an agent cannot infer from 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.

Conciseness2/5

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

Purpose is not front-loaded: the opening two sentences repeat "OpenChainGraph compute node" and the real value statement appears mid-paragraph. Space is spent on a 64-character FV-status path and a raw 20-field output dump, and the summary is cut off mid-word with an ellipsis, so the reader gets noise before signal.

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?

With no output schema, the description usefully enumerates the returned fields (single_settlement_status, reconciled, attributed_ministry, exceptions, etc.) and points to describe_tool for detail. Compute modes, data handling, and provenance are covered; only the truncated summary leaves a small gap in explaining what the verdict actually decides.

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%, so the baseline is 3. The description restates the compute-mode semantics already present in the schema and gestures at chaining via execution_hash/parent_hashes, but adds no syntax or format detail for policy_parameters beyond what the schema lists.

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 buried summary sentence gives a specific verb and resource: it turns one caller-transcribed public-money payment into settlement evidence with a single-settlement verdict and attribution checks. That is far more concrete than the tautological opening line ("OpenChainGraph compute node"). It never distinguishes itself from sibling receipt builders such as build_einvoice_transmission_receipt or build_session_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?

There is solid guidance for the compute parameter (auto/server/browser and when gpu:true forces delegation), but nothing on when to choose this tool over the many sibling build_*_receipt tools, nor any stated prerequisite for supplying policy_parameters. Usage is implied by the settlement-evidence summary rather than declared.

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

build_rights_recordRights Record BuilderB
Read-onlyIdempotent
Inspect

Rights Record Builder: OpenChainGraph compute node (compliance_mandate). 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-205-license-terms-assembler. Open at: https://ainumbers.co/chaingraph/art-206-rights-record-builder.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: Builds a normalized IP3-style rights-portfolio row from licensor, licensee, territory, term, rights vector, and renewal fields. Outputs: all_checks_pass, checks, disclaimer, record_hash, rights_row. Output schema: call describe_tool("build_rights_record").

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: asset_ref, license_id, licensee, licensor, renewal, rights_vector, term_years, territory. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/closed-world, but the description adds real value beyond them: the compute-mode split (server kernel vs. browser delegation URL, gpu:true always delegates), transient processing with no storage/logging, synthetic-inputs-only constraint, and the exported AP2 artifact with execution_hash for chain provenance. That is exactly the kind of operational context the annotations cannot express.

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?

The text is a dense block that front-loads compute-node boilerplate, repeats itself ("OpenChainGraph compute node" appears twice), and only reaches the tool's purpose at the very end under "Summary:". The FV-status hash URL and offline-receipt explanation consume significant space with little selection value.

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?

Even without an output schema, the description names the output fields (all_checks_pass, checks, disclaimer, record_hash, rights_row) and points to describe_tool for the schema, and it covers chaining, compute behavior, and data handling. An agent has enough to invoke it correctly, though the parent_hash/parent_tool_id pairing relationship is only implied.

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 the schema already documents the compute enum modes, parent_hashes/parent_tool_ids chaining, and the required policy_parameters keys plus 'unknown keys are refused'. The description largely repeats that (compute modes, required field list), so it adds little marginal meaning — baseline 3 applies.

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

Purpose3/5

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

The actual purpose is buried in a trailing 'Summary:' sentence — "Builds a normalized IP3-style rights-portfolio row from licensor, licensee, territory, term, rights vector, and renewal fields" — which is specific and clear. But the opening lines ("OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.") restate the title and describe execution infrastructure rather than what the tool produces. No differentiation from near-siblings like assemble_license_terms, compare_rights_matrix, or build_tdm_reservation.

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?

"Consumes upstream artifacts from: art-205-license-terms-assembler" implies a sequencing requirement, which is genuine usage context. However nothing states when to pick this over the many rights/licence siblings, and no exclusions or preconditions are given beyond the upstream artifact reference.

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

build_safeguarding_audit_evidenceCASS 15 Safeguarding Audit Evidence PackB
Read-onlyIdempotent
Inspect

CASS 15 Safeguarding Audit Evidence Pack: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-501-build-safeguarding-audit-evidence.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: Assembles the evidence set a qualified auditor asks a UK payment or e-money firm for at the start of a CASS 15 safeguarding audit: the reconciliation results across the declared audit period, the safeguarding method classification, a schedule of the matters those raise keyed by the individual rul... Outputs: accountability_trail, audit_period, auditor_opinions, citations, evidence_items, exception_count, exception_schedule, firm_ref, method_summary, minor_unit_exponent, missing_items, no_arithmetic_claim, not_a_filing, note, pack_complete, rationale, reconciliation_summary, report_vocabulary, ruleset, subject. Output schema: call describe_tool("build_safeguarding_audit_evidence").

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: accountability_records, attested_subject, audit_period, firm_ref, management_responses, method_classification, reconciliation_results. Unknown keys are refused.

TDQS

B3.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), yet the description adds real value beyond them: compute-mode semantics (auto/server/browser, gpu:true always delegates), transient processing with no logging or retention, a 'use synthetic or anonymised inputs only' warning, and the AP2 execution_hash export. Only the artifact-export side effect sits slightly at odds with readOnlyHint, but as a deterministic compute output this is not a genuine contradiction.

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?

Two full sentences of OpenChainGraph compute-node and FV-status boilerplate precede the actual purpose, so the definition is badly back-loaded. A 20-item flat list of output field names and a mid-sentence truncation add noise without structure; a third of the text could be removed with no loss to tool selection.

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

Completeness3/5

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

With no output schema, the description does list the returned fields (accountability_trail, exception_schedule, reconciliation_summary, etc.), which is genuinely useful for an aggregate evidence-pack tool. But the enumeration is unstructured and truncated, and the description never explains how the supplied accountability_records and reconciliation_results feed the produced exceptions — a gap for a tool this complex.

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% — all four parameters including the nested policy_parameters object and its required keys are documented, plus the enum semantics for compute. The description adds essentially nothing beyond this (its compute-mode sentence merely restates the schema). Baseline 3 applies when the schema does the heavy lifting.

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 description states a specific verb and artifact — assembling the CASS 15 safeguarding audit evidence set (reconciliation results, method classification, exception schedule) for a UK payment/e-money firm. That is far more specific than the title alone. It loses a point because the explanatory sentence is truncated mid-word ('keyed by the individual rul...') and the tool's differentiation from siblings such as check_safeguarding_reconciliation and classify_safeguarding_method is only implicit.

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 implied by 'at the start of a CASS 15 safeguarding audit', which gives the agent a situational trigger. However, there is no explicit when-not-to-use guidance and no routing to the closely related sibling tools (check_safeguarding_reconciliation, classify_safeguarding_method) that supply the inputs this pack aggregates.

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

build_sanctions_screening_evidence_packSanctions Screening Evidence PackB
Read-onlyIdempotent
Inspect

Sanctions Screening Evidence Pack: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-585-sanctions-screening-evidence-pack.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: Binds a caller-declared sanctions-screening decision (query, match count, decision) to the EXACT versioned dataset it was screened against, by comparing a caller-computed digest of the artifact they actually screened against a caller-declared published digest for that dataset version. Outputs: evidence_pack, reason, verdict. Output schema: call describe_tool("build_sanctions_screening_evidence_pack").

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: caller_computed_digest, dataset_ref, screening. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/closed-world, so the bar is lower, yet the description still adds real context: inputs are processed transiently and not stored, logged, or retained; unknown keys are refused; an AP2 artifact with execution_hash is exported; gpu:true nodes always delegate to the browser. That is meaningful behavior beyond what the annotations declare. It does not explain verdict values or failure modes.

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?

The definition is dominated by reusable infrastructure boilerplate (compute-binding modes, Cloudflare Worker privacy language, an FV-status URL, an 'Open at' link) that is not specific to this tool. The one sentence that actually defines the tool sits in a 'Summary' clause near the end rather than being front-loaded, so an agent must read past several unrelated paragraphs.

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

Completeness3/5

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

There is no output schema, and the description does name outputs (evidence_pack, reason, verdict) and the decision inputs, which is adequate for a first call. But the semantics of reason/verdict are unexplained, and the description's statement that caller_computed_digest, dataset_ref and screening are required conflicts with the schema's empty required list.

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 baseline is 3. The description does add conceptual meaning for policy_parameters (comparing a caller-computed artifact digest against a caller-declared published digest for a dataset version) and states the three required keys, but that required-key list also appears in the schema and the top-level schema declares no required parameters, leaving the actual calling contract ambiguous.

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 'Summary' sentence gives a concrete verb and resource: it binds a caller-declared sanctions-screening decision (query, match count, decision) to the exact versioned dataset it was screened against by comparing a caller-computed digest against a caller-declared published digest. That distinguishes it in kind from siblings like score_sanctions_screening_quality or screen_sanctions_private. However the purpose is buried after a large block of generic compute-node boilerplate, and no sibling is named explicitly.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus score_sanctions_screening_quality, screen_sanctions_private, run_sanctions_screening_fit, or any other sanctions tool. 'Use synthetic or anonymised inputs only' is an input constraint, not usage guidance. The agent must infer the use case from the summary alone.

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

build_session_receiptBuild a session audit receipt (Merkle root)A
Read-onlyIdempotent
Inspect

Aggregates execution_hashes from N ChainGraph tool calls in one agent session into a single SHA-256 Merkle root (session_receipt_root). Returns a tamper-evident session receipt and a regulator-framed PTG-01 audit prompt. One receipt covers an entire agent session: supply all execution_hashes in call order. The Merkle root is deterministic — the same hashes in the same order always produce the same root. Compliant with EU AI Act Art. 12 (transparency) and DORA ICT audit-trail requirements.

NameRequiredDescriptionDefault
framingNoOptional framing context for the PTG-01 regulator prompt (e.g. "DORA incident review" or "EU AI Act Art.12 transparency log").
tool_idsNotool_id values corresponding to execution_hashes, in the same order. Used for the audit narrative.
session_idNoOptional agent session identifier for the audit narrative (e.g. a UUID or timestamp).
prior_receiptNoAn earlier receipt from this SAME session (its mmr_peaks/mmr_size/mmr_bagged_root). When supplied, execution_hashes MUST start with that earlier receipt's full leaf set — the response's consistency_proof then proves this receipt provably APPENDS to the prior one (CT-style append-only guarantee) without operating a log.
execution_hashesYesOrdered list of execution_hash values from ChainGraph tool calls in this session (each produced by emit_chaingraph_artifact or a kernel tool). Minimum 1.

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, closed-world behavior, so the safety profile is covered. The description adds real value beyond them: output is deterministic for identical ordered inputs, the return includes a human-facing PTG-01 regulator prompt, and the call-order requirement is a genuine behavioral constraint; it does not describe output shape or failure handling for malformed hashes.

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?

Front-loaded with the core operation and result, then the session-scoping rule, then determinism. Sentences are dense but each carries information; the compliance citation (EU AI Act Art. 12, DORA) is arguably padding for tool selection purposes but is short.

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?

With no output schema, the description covers the return value (tamper-evident receipt plus PTG-01 prompt) and the key input constraint (all hashes, in order). For a read-only, deterministic computation with a fully described 5-parameter schema, this is sufficient, though it omits what the receipt actually contains and error conditions.

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 framing, tool_ids, session_id, prior_receipt, and execution_hashes. The description reinforces the call-order requirement for execution_hashes but adds no syntax, format, or validation detail beyond the schema (e.g., hash encoding or what happens with a single hash), so the baseline of 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 and resource with concrete mechanics: aggregates execution_hashes from N ChainGraph calls into a single SHA-256 Merkle root and returns a tamper-evident session receipt plus a PTG-01 audit prompt. It is highly specific about what it does, but it never names or distinguishes itself from close siblings like aggregate_execution_receipts or build_vop_session_receipt, so an agent must infer the boundary.

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?

"One receipt covers an entire agent session: supply all execution_hashes in call order" gives clear scope and ordering guidance for correct invocation, and the determinism note warns that ordering matters. It does not state when to prefer this over a sibling receipt-builder or when a receipt is unnecessary, so usage context is clear but exclusions are absent.

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

build_tdm_reservationTDMRep AI Training Reservation BuilderB
Read-onlyIdempotent
Inspect

TDMRep AI Training Reservation Builder: OpenChainGraph compute node (compliance_mandate). 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-201-iscc-content-code-generator. Open at: https://ainumbers.co/chaingraph/art-202-tdmrep-reservation-builder.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.

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". See the tool's manifest for field names.

TDQS

B3/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, yet the description adds genuine behavior: transient processing with no storage/logging/retention, the AP2 export with execution_hash, the upstream artifact dependency (art-201), and the server-vs-browser delegation rule. That is more than the annotations convey, though it repeats the compute-mode logic already in the schema.

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

Conciseness3/5

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

The title and compute-mode statement are front-loaded and useful, but a large fraction of the text is boilerplate about the hosting platform, and the trailing FV-status sentence ('a snapshot, not a subscription; this receipt verifies offline...') does not help an agent decide or invoke the tool. Several sentences could be cut without losing actionable information.

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

Completeness3/5

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

For a complex, chained compute node with no output schema, the description does cover the return (AP2 artifact + execution_hash), upstream provenance, and data-handling posture. It still leaves the core question — what a TDM reservation asserts and what policy_parameters should contain — for the agent to infer or fetch externally.

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 baseline is 3. The description restates the compute default (auto → server for gpu:false) and the chaining intent of parent_hashes, but for the one genuinely opaque parameter it defers entirely: policy_parameters field names are only 'in the tool's manifest', leaving the highest-complexity input undocumented in both places.

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

Purpose3/5

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

The name and title identify a specific artifact (a TDMRep AI-Training Reservation) and an action (build/export), so the resource is identifiable. But the description itself never says what a reservation contains or what decision the tool computes — 'Deterministic OpenChainGraph compute node (compliance_mandate)' is infrastructure meta-language, not purpose. Nothing in the text distinguishes it from the many other build_* / assemble_* siblings beyond the title string.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no named alternative. The compute-mode discussion describes mechanics (which is already in the schema) rather than selecting this tool. The only real guidance is a data-safety caveat ('Use synthetic or anonymised inputs only'), which is a constraint, not usage routing.

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

build_traiga_safe_harbor_packTRAIGA Safe Harbor Pack BuilderA
Read-onlyIdempotent
Inspect

TRAIGA Safe Harbor Pack Builder: OpenChainGraph compute node (compliance_mandate). 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-313-traiga-exposure-assessor, art-174-nist-ai-rmf-function-mapper. Open at: https://ainumbers.co/chaingraph/art-314-traiga-safe-harbor-pack-builder.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: Assembles a supplied NIST AI RMF function-mapping result (map_nist_ai_rmf_functions) and TRAIGA exposure-assessment result into an affirmative-defense evidence bundle under Tex. Outputs: coverage_band, eligible_for_affirmative_defense_evidence, framing, insufficient_evidence, meets_substantial_compliance_bar, overall_coverage, prohibited_use_detected, statute_citation. Output schema: call describe_tool("build_traiga_safe_harbor_pack").

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: exposure_result, rmf_mapping. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent safety profile, and the description adds real value on top: compute-mode routing (auto vs browser delegation for gpu:true nodes) and a data-handling statement (transient processing, no storage/logging). The FV-status receipt sentence is extra, but the core behavioral disclosure is above the annotation baseline with no contradiction.

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?

The purpose and summary are front-loaded, but the text is padded with a raw URL, a long /fv-status/ hash, and a meta-explanation of the receipt's offline verification, none of which help an agent decide or invoke the tool. The high-value sentences are buried among operational noise.

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?

For a complex chained-compute node with no output schema, the description names upstream inputs, enumerates the output fields, and explains compute routing and privacy handling. The only real gap is a description of the structure of the returned AP2 artifact, which is a minor omission.

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%, so all four parameters are already documented, and the description largely restates compute modes and the required keys (exposure_result, rmf_mapping) that the schema already explains. It adds marginal linkage between upstream artifacts and parent_hashes/parent_tool_ids, which justifies the baseline 3 but not more.

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 artifact ('Assembles a supplied NIST AI RMF function-mapping result ... and TRAIGA exposure-assessment result into an affirmative-defense evidence bundle under Tex.') plus a named output (AP2 artifact with execution_hash). This clearly distinguishes it from upstream siblings assess_traiga_exposure and map_nist_ai_rmf_functions, which it explicitly names as inputs.

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 prerequisite context by naming the two upstream artifacts/tools it consumes and warns 'Use synthetic or anonymised inputs only', which tells the agent what input is acceptable. It stops short of explicitly saying when to prefer this over alternatives like assemble_ocg_evidence_bundle or build_ai_conformity_pack.

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

build_validator_change_control_receiptValidator Change-Control ReceiptB
Read-onlyIdempotent
Inspect

Validator Change-Control Receipt: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-497-validator-change-control-receipt.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: Turns one permissioned-validator event on an Avalanche Evergreen L1 -- a validator add, remove, or weight change -- into change-control evidence in the shape the SOX/ICFR control family already uses: the authorization chain of named identities, the weight delta and its share-of-total effect again... Outputs: as_of, authorization_chain, authorized, change_type, change_type_valid, effective_epoch, exceptions, posterior_weight, prior_weight, quorum_achieved, quorum_required, quorum_status, share_of_total_pct, total_stake_weight, validator_ref, weight_delta. Output schema: call describe_tool("build_validator_change_control_receipt").

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: as_of, authorizing_identities, change_type, effective_epoch, posterior_weight, prior_weight, quorum_achieved, quorum_required, total_stake_weight, validator_ref. Unknown keys are refused.

TDQS

B3.2/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, yet the description adds real context: inputs are processed transiently and not stored or logged, the output is an AP2 artifact carrying an execution_hash for chain provenance, and the FV-status file is a snapshot that verifies offline. That is material behavior an agent could not infer from annotations. It stops short of 5 because much of the compute-mode text merely restates the `compute` schema description and no failure/error behavior is described.

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?

Badly front-loaded: the first two-thirds is generic chain-node boilerplate, URLs, and a hash-file disclaimer, while the sentence that actually explains the tool comes last and is cut off ('effect again...'). Sentences are not earning their place — the compute-mode paragraph repeats the schema, and the FV-status snapshot note is far longer than its decision value warrants.

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

Completeness3/5

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

With no output schema, listing the 15 output fields (authorization_chain, weight_delta, quorum_status, share_of_total_pct, etc.) is valuable and appropriate. Inputs are fully covered by the 100%-coverage schema, including the required policy_parameters keys. However the core explanatory sentence is truncated and there is no stated behavior on invalid or non-quorum inputs, leaving a clear gap for a compliance-evidence builder.

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 baseline is 3. The description's compute-mode explanation duplicates what the `compute` property already says verbatim rather than extending it, and it says nothing about parent_hashes/parent_tool_ids chaining semantics or the individual policy_parameters keys beyond the required list. It neither compensates nor detracts.

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 Summary paragraph states a specific verb and resource: it turns one permissioned-validator event on an Avalanche Evergreen L1 (add/remove/weight change) into SOX/ICFR-shaped change-control evidence. That is genuinely distinguishable from generic receipt builders. It loses a point because the statement is buried after several paragraphs of compute-node boilerplate and is truncated mid-sentence ('...its share-of-total effect again...'), so an agent skimming the lead text sees only 'OpenChainGraph compute node (compliance_control)' and gets no purpose signal.

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

Usage Guidelines2/5

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

There is no when-to-use guidance relative to sibling tools such as classify_avax_permissioning_controls or the many other build_*_receipt tools. The only constraint given is 'Use synthetic or anonymised inputs only', which is an input-handling rule, not tool selection guidance. The compute-mode discussion describes how to execute, not when this tool is the right choice.

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

build_vop_session_receiptVoP Session Receipt BuilderB
Read-onlyIdempotent
Inspect

VoP Session Receipt Builder: OpenChainGraph compute node (compliance_mandate). 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-376-score-payee-name-match. Open at: https://ainumbers.co/chaingraph/art-377-build-vop-session-receipt.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: Builds a signed, hash-chained Verification-of-Payee / Confirmation-of-Payee session receipt: binds the declared match result (score, band, algorithm_version or an external source), the warning text and severity shown, and the consumer's action (proceeded, abandoned, retried) across a session's at... Outputs: attempt_count, chain_genesis_hash, final_match_band, final_receipt_hash, note, session_id, session_outcome, session_receipts, warning_overridden. Output schema: call describe_tool("build_vop_session_receipt").

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: attempts, session_id. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds real behavioral context beyond them: deterministic compute, server-vs-browser delegation semantics for gpu:false vs gpu:true nodes, transient processing with no storage/logging/retention, and an exported AP2 artifact carrying execution_hash for provenance. The only weakness is that it never states the exact payload/validation failure behavior; the 'not stored or retained' claim also keeps the 'builds a receipt' wording consistent with readOnlyHint=true.

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?

Structure is weak: the title is restated twice ('VoP Session Receipt Builder: OpenChainGraph compute node' then 'Deterministic OpenChainGraph compute node'), a long FV-status URL is inlined, and the single most informative sentence is truncated ('across a session's at...'). The actual purpose is buried behind compute-plumbing boilerplate that leads the description.

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

Completeness3/5

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

With no output schema, enumerating the returned fields (attempt_count, chain_genesis_hash, final_receipt_hash, session_outcome, etc.) is genuinely useful compensation. But the truncation of the core summary and the total absence of when-to-use guidance against closely related receipt builders leaves the definition only adequate for a 4-parameter, nested-object tool.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds marginal value by tying chaining to upstream artifact art-376-score-payee-name-match and by restating server/browser compute behavior, but it does not clarify the required attempts/session_id keys or the ordering contract for parent_hashes beyond what the schema says.

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 Summary sentence gives a specific verb and resource: it builds a signed, hash-chained Verification-of-Payee / Confirmation-of-Payee session receipt that binds match result, warning text/severity, and consumer action. That is far more specific than the name alone. It does not, however, distinguish itself from near siblings such as build_session_receipt, build_idv_session_receipt, or simulate_vop_matching, and the sentence is cut off mid-phrase ('across a session's at...').

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

Usage Guidelines2/5

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

The description never says when to pick this tool over siblings like build_session_receipt, build_idv_session_receipt, or simulate_vop_matching. The only directive content is about input hygiene ('Use synthetic or anonymised inputs only') and compute-mode selection, which are constraints rather than selection guidance.

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

build_yield_curve_gspreadYield Curve & G-SpreadB
Read-onlyIdempotent
Inspect

Yield Curve & G-Spread: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-706-yield-curve-gspread.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: Builds a par yield curve from caller-supplied benchmark points (at least 2, strictly increasing tenors; no live data) under a named, versioned interpolation, linear (linear@1) or monotone cubic Hermite with Fritsch-Carlson 1980 tangents (monotone_cubic_hermite@1), and reports the G-spread of a bo... Outputs: assumptions, benchmark_yield_at_maturity_pct, curve, detail, domain_errors, error, g_spread_bp, note, regulatory_basis. Output schema: call describe_tool("build_yield_curve_gspread").

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: benchmark_points, benchmark_name, bond. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/closed-world, yet the description adds substantial context the annotations cannot: server-side vs browser delegation behavior for gpu:false vs gpu:true nodes, transient non-retained input processing, and an AP2 artifact carrying an execution_hash for chain provenance. This materially helps the agent predict where execution happens and what comes back, though the truncation limits the functional half of that disclosure.

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?

The tool's actual function appears only after several sentences of institutional boilerplate (compute-node framing, a full https URL, a raw FV-status hash path). Worse, that functional summary is cut off mid-word, so the one part that earns its place is incomplete while the boilerplate is front-loaded.

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?

With no output schema, the description compensates by enumerating outputs (curve, g_spread_bp, detail, domain_errors, regulatory_basis) and covers all four parameters via schema plus prose. The main gap is the truncated summary leaving the bond input and G-spread computation underspecified, though the read-only annotations cover the safety profile.

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 baseline is 3; the description exceeds that by giving semantics the schema does not: benchmark_points requires at least 2 strictly increasing tenors, interpolation is named and versioned (linear@1, monotone_cubic_hermite@1 with Fritsch-Carlson 1980 tangents). It stops short of explaining the bond object or g_spread_bp inputs, so not a 5.

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 Summary names a specific verb+resource: builds a par yield curve from caller-supplied benchmark points and reports the G-spread of a bond. That distinguishes it from generic curve calculators like compute_bond_duration or build_bond_ladder. However, the summary is truncated mid-sentence ('reports the G-spread of a bo...'), so the target instrument is left implicit rather than explicit.

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

Usage Guidelines2/5

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

The description states constraints ('no live data', 'at least 2, strictly increasing tenors', 'use synthetic or anonymised inputs only') but never says when to choose this over alternatives such as compute_pt_yt_yield or the other curve tools in the sibling set. The compute:'auto'/'browser' routing guidance is execution-mode advice, not tool-selection guidance.

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

calc_equity_exit_waterfallEquity Exit Waterfall ModelerC
Read-onlyIdempotent
Inspect

Equity Exit Waterfall Modeler: OpenChainGraph compute node (consumer_finance). 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. Open at: https://ainumbers.co/chaingraph/art-754-equity-exit-waterfall.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: Equity exit proceeds after a liquidation-preference waterfall for startup employees and founders: the preference stack layer by layer, non-participating conversion or capped participation, the common pool, your gross and net proceeds after option strike, taxable gain per IRC §1001 and the break-e... Outputs: break_even_exit_usd, common_pool_usd, compliance_flags, exit_valuation_usd, layers, liquidation_preference_multiple, liquidation_preference_usd, notes, participation_cap_multiple, participation_type, preferred_ownership_fraction, preferred_total_usd, refusal_reason, switches, total_preferred_invested_usd, warnings, your_cost_basis_usd, your_gross_proceeds_usd, your_net_proceeds_usd, your_option_strike_total_usd, your_ownership_fraction, your_role, your_taxable_gain_usd. Output schema: call describe_tool("calc_equity_exit_waterfall").

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: exit_valuation_usd, total_preferred_invested_usd, preferred_ownership_pct, liquidation_preference_multiple, participation_type, participation_cap_multiple, your_role, your_ownership_pct, your_option_strike_total_usd, your_cost_basis_usd. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already cover the read-only, idempotent, non-destructive safety profile, so the bar is lower. The description does add real value beyond them: transient, non-retained input processing, deterministic server-side vs browser delegation, and AP2 artifact emission with execution_hash for chain provenance. However, the truncated Summary and the unexplained 'refusal_reason'/'switches' outputs leave the refusal/edge-case behavior opaque.

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?

Opens with two near-duplicate boilerplate sentences ('OpenChainGraph compute node' repeated) before reaching the actual purpose, then dumps a 20-item output name list. The key Summary sentence is cut off mid-word ('break-e...'), which is wasted and actively confusing space.

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

Completeness3/5

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

For a multi-input financial model with no output schema, listing output field names helps, but several fields (switches, refusal_reason, notes, compliance_flags) are left undefined and the truncated summary removes the break-even explanation. The provenance chain parameters are adequately covered by the schema, so the description is serviceable but incomplete.

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%: compute mode, parent hashes, and the nested policy_parameters block (including the required-key list and 'unknown keys are refused') are all documented in the schema. The description adds nothing about the semantics of individual policy fields, so the baseline 3 is appropriate.

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 Summary segment names a specific computation: equity exit proceeds through a liquidation-preference waterfall, layer by layer, with participation type, common pool, proceeds after strike, and taxable gain under IRC §1001. It implicitly distinguishes itself from LP/CCP/payment waterfall siblings by scoping to 'startup employees and founders'. The statement is clear but buried after two redundant boilerplate sentences and truncated mid-word ('the break-e...').

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

Usage Guidelines2/5

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

No guidance on when to choose this tool over waterfall siblings such as recompute_pe_waterfall_lp or recompute_payment_waterfall, and no stated preconditions beyond 'use synthetic or anonymised inputs only'. The compute-mode discussion explains execution mechanics rather than selection criteria.

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

calculate_basis_risk_nii_shockIRRBB Basis-Risk NII Shock CalculatorB
Read-onlyIdempotent
Inspect

IRRBB Basis-Risk NII Shock Calculator: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-443-irrbb-basis-risk-nii-shock-calculator.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: Comptroller's Handbook IRR basis-risk delta-NII calculator: sweeps a single reference-rate shock across multiple priced indices (Prime, SOFR, Fed Funds, CD portfolio, etc.), each with a caller-declared historical beta vs the reference rate, and isolates the incremental delta-NII from indices not... Outputs: basis_risk_delta_nii, basis_risk_pct_of_parallel, convention, horizon_months, index_results, is_material, material_threshold_pct, parallel_delta_nii, reference_shock_bps, total_net_exposure, total_nii_contribution. Output schema: call describe_tool("calculate_basis_risk_nii_shock").

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: horizon_months, index_exposures, material_threshold_pct, reference_shock_bps. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, and the description goes meaningfully beyond them: inputs are processed transiently and never stored or logged, compute:'auto' resolves server-side for gpu:false nodes with a registered kernel while 'browser' returns a delegation URL, gpu:true always delegates, and an AP2 artifact with execution_hash is exported for provenance. That is real behavioral context an agent cannot infer from annotations. Consistent with readOnlyHint=true (no contradiction).

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?

Badly mis-front-loaded: the actual purpose appears only in the trailing 'Summary' paragraph, after boilerplate about OpenChainGraph compute nodes, transparent processing, AP2 provenance, a full documentation URL, and an FV-status URL with a 64-character hash. Several sentences (the snapshot-receipt URL, 'this receipt verifies offline regardless of whether that file is ever fetched') do nothing to help tool selection or invocation.

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?

For a compute node with no output schema, the description does supply the return surface (basis_risk_delta_nii, is_material, material_threshold_pct, index_results, etc.), the compute/provenance behavior, and the beta semantics of index_exposures. An agent has enough to call it correctly, though the truncation ('indices not...') and the diffuse layout leave minor gaps.

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 baseline is 3. The description does add one genuinely useful semantic the schema omits: index_exposures are priced indices each carrying a caller-declared historical beta versus the reference rate, which clarifies the untyped array items. Beyond that it mostly restates the compute enum already documented in the schema.

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 Summary sentence is precise: a Comptroller's Handbook IRR basis-risk delta-NII calculator that sweeps one reference-rate shock across multiple priced indices with caller-declared betas, isolating incremental delta-NII. That is a specific verb+resource+method. It does not, however, distinguish itself from close siblings such as evaluate_irrbb_sot_nii, calculate_irrbb_eve_shocks, or run_rate_shock_ladder, so an agent cannot route on purpose alone.

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

Usage Guidelines2/5

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

The only usage-adjacent statements are the privacy constraint ('Use synthetic or anonymised inputs only') and the compute-mode default explanation. Neither tells the agent when to pick this tool versus the standardised-approach NII or EVE siblings, and no preconditions or exclusions are given.

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

calculate_cbam_embedded_emissionsCBAM Embedded-Emissions CalculatorB
Read-onlyIdempotent
Inspect

CBAM Embedded-Emissions Calculator: OpenChainGraph compute node (compliance_mandate). 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-68-carbon-compliance-fit-diagnostic, art-70-cbam-default-value-resolver, art-72-cbam-precursor-emissions-aggregator. Output feeds: art-71-cbam-certificate-cost-engine, cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-69-cbam-embedded-emissions-calculator.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: Flagship importer tool. Outputs: basis, cn_code, country_of_origin, data_quality_flag, default_markup_applied, good_category, monitoring_method, precursor_contribution, quantity_tonnes, reference, see_direct, see_indirect, see_total, total_embedded_emissions_tco2e. Output schema: call describe_tool("calculate_cbam_embedded_emissions").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/closed-world, and the description still adds substantive context: server-side vs browser-delegated execution meaning the call may return a delegation URL instead of a result, transient data processing ('not stored, logged, or retained'), a synthetic-inputs-only constraint, and AP2 artifact emission with execution_hash. Only minor marks off for duplicating the compute-mode text verbatim from the schema and for not saying what a browser-delegation response actually looks like.

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?

The text is front-loaded with boilerplate ('Deterministic OpenChainGraph compute node', the full FV-status hash URL and its 'snapshot, not a subscription' caveat) while the genuinely useful content — summary and output field list — is pushed to the very end. Several sentences restate schema text verbatim, so length is not earned by information.

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

Completeness3/5

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

With no output schema, the description does the right thing by enumerating the returned fields, and it covers compute delegation, data handling, and chain provenance. What it lacks for a deterministic multi-input calculator is any explanation of the policy_parameters inputs it consumes, which is exactly where an agent is most likely to call it wrong.

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?

Top-level schema coverage is 100%, so baseline is 3 and the description's compute-mode restatement adds nothing new. The nested policy_parameters object is the weak spot: its ten sub-keys (direct_emissions_factor, indirect_emissions_factor, electricity_source, precursor_emissions, etc.) carry no types or descriptions in the schema, and the description never explains what they mean, only echoing a few of them as output names.

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 title line plus the closing 'Summary: Flagship importer tool' and the output field list (see_total, total_embedded_emissions_tco2e) make clear this computes CBAM embedded emissions for a good. The pipeline sentence ('Consumes upstream artifacts from ... art-70-cbam-default-value-resolver, art-72-cbam-precursor-emissions-aggregator'; 'Output feeds: art-71-cbam-certificate-cost-engine') distinguishes it from those CBAM siblings by position. The verb, however, is buried under generic 'OpenChainGraph compute node' framing rather than stated up front.

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?

There is no explicit 'use this when / do not use' clause. Usage is only implied through the artifact-chaining list, which tells an agent the tool sits downstream of the default-value resolver and precursor aggregator and upstream of the certificate-cost engine. That is real routing signal but requires inference rather than stating the condition for choosing this over resolve_cbam_default_value or aggregate_cbam_precursor_emissions.

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

calculate_cecl_ecl_allowanceCECL Expected Credit Loss & Allowance CalculatorA
Read-onlyIdempotent
Inspect

CECL Expected Credit Loss & Allowance Calculator: OpenChainGraph compute node (credit_assessment). 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. Open at: https://ainumbers.co/chaingraph/art-426-cecl-ecl-calculator.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: Computes a deterministic CECL (Current Expected Credit Loss, ASC 326) allowance given caller-supplied PD/LGD/EAD curves, segment exposures, and forecast scenario weights, and reconciles the result against the prior period's allowance balance. Outputs: boundary_note, charge_offs_usd, constants_version, delta_vs_required_usd, disambiguation, forecast_weights, method, prior_allowance_balance_usd, provision_expense_usd, reconciled_ending_allowance_usd, reconciliation_balanced, recoveries_usd, segment_count, segments, total_required_allowance_usd. Output schema: call describe_tool("calculate_cecl_ecl_allowance").

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: constants_version, forecast_weights, method, segments. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world. The description adds genuinely non-obvious behavior: deterministic kernel execution on Cloudflare Workers, transient processing with no storage or logging, an exported AP2 artifact carrying execution_hash for chain provenance, and an offline-verifiable FV-status snapshot. It does not describe failure modes or what 'boundary_note' or 'reconciliation_balanced' signal when they fail.

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?

Roughly two-thirds of the text is platform boilerplate (compute binding, privacy, artifact export, a URL, and a 64-character FV-status path) that precedes the actual purpose, which arrives only in the final sentence. The what-it-does statement an agent needs first is buried last, and the raw hash path adds noise without decision value.

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?

With no output schema, the description compensates by enumerating the full output field list (reconciled_ending_allowance_usd, provision_expense_usd, reconciliation_balanced, segments, etc.), which is the key missing structured data. For a nested four-parameter compute node it covers inputs, execution semantics, and returns adequately; only error/failure behavior and the required-vs-optional treatment of nested policy fields are thin.

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% at the top level, which sets the baseline at 3, and the compute/parent_hashes prose largely repeats the schema text. The description does add real meaning for the nested policy_parameters block, whose members (method, segments, forecast_weights, constants_version) carry no type or description in the schema, by naming PD/LGD/EAD curves, segment exposures, and forecast weights.

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 summary sentence gives a specific verb and resource: 'Computes a deterministic CECL (Current Expected Credit Loss, ASC 326) allowance given caller-supplied PD/LGD/EAD curves, segment exposures, and forecast scenario weights, and reconciles the result against the prior period's allowance balance.' That is far more specific than the title restated. It does not, however, name any sibling (e.g. score_credit_default_risk, calculate_rwa_scenarios) or state how it differs from them.

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 only selection guidance is about compute mode ('auto' vs 'browser' vs gpu:true delegation) and an input constraint ('Use synthetic or anonymised inputs only'). There is no statement of when to reach for this calculator versus the many other credit/allowance tools in the sibling list, so the fit has to be inferred from the name.

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

calculate_claims_stp_economicsClaims STP Economics CalculatorA
Read-onlyIdempotent
Inspect

Claims STP Economics Calculator: OpenChainGraph compute node (analytics_mandate). 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-254-compute-rbc-action-level. Open at: https://ainumbers.co/chaingraph/art-257-calculate-claims-stp-economics.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: Computes the financial business case for insurance claims Straight-Through Processing (STP) automation. Outputs: annual_cashflows, annual_handling_savings, cost_reduction_pct, cost_reduction_per_claim, current_annual_cost, current_avg_cost_per_claim, current_manual_claims, current_stp_claims, discount_rate_pct, irr_pct, leakage_increase, leakage_reduction, net_annual_benefit, net_leakage_impact, not_legal_advice, npv, payback_years, pii_note, projection_years, regulatory_basis, stp_rate_improvement_ppt, table_source, table_version, target_annual_cost, target_avg_cost_per_claim, target_manual_claims, target_stp_claims. Output schema: call describe_tool("calculate_claims_stp_economics").

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: annual_claims_volume, annual_license_cost, automated_handling_cost, average_claim_payment, current_stp_rate_pct, discount_rate_pct, implementation_cost, leakage_rate_manual_pct, leakage_rate_stp_pct, manual_handling_cost, projection_years, target_stp_rate_pct. Unknown keys are refused.

TDQS

A3.5/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), yet the description adds genuinely non-structured context: transient processing with no storage/logging/retention, synthetic-input requirement, AP2 artifact export with execution_hash, and the server-versus-browser delegation behavior including the gpu:true rule. Rate limits, failure modes, and latency are not covered, which keeps it below 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.

Conciseness2/5

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

The purpose sentence is back-loaded behind a duplicated boilerplate preamble ('OpenChainGraph compute node (analytics_mandate). Deterministic OpenChainGraph compute node.'), a spec URL, and a hash-path receipt paragraph that is largely noise for tool selection. The 27-item output field dump is long but justified by the absence of an output schema, which is the one well-earned block.

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?

For a 4-parameter compute node with a nested policy object and no output schema, the description supplies the decision use case, the enumerated return fields, the artifact/execution_hash provenance behavior, the data-handling policy, and the upstream dependency. What is missing is guidance on interpreting or chaining the exported artifact, but nothing needed to invoke it correctly is absent.

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 compute modes, parent_hashes/parent_tool_ids ordering, and the required policy_parameter keys. The description mostly restates the compute-mode semantics and adds only the upstream-artifact hint that ties parent_hashes to art-254. Baseline 3 is appropriate where the schema does the heavy lifting.

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 description does state a specific verb and resource: 'Computes the financial business case for insurance claims Straight-Through Processing (STP) automation.' That is enough to distinguish it from generic finance compute siblings like compute_npv or compute_irr. However, the purpose statement is buried near the end after boilerplate, and no sibling is named explicitly as an alternative.

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?

There is implied guidance: 'Use synthetic or anonymised inputs only' sets an input constraint, and 'Consumes upstream artifacts from: art-254-compute-rbc-action-level' hints at the chaining workflow. But there is no explicit when-to-use/when-not statement and no named alternative among the many compute_* siblings, leaving selection mostly to inference.

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

calculate_csdr_penaltyCSDR Cash-Penalty CalculatorB
Read-onlyIdempotent
Inspect

CSDR Cash-Penalty Calculator: OpenChainGraph compute node (compliance_mandate). 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-77-t1-settlement-readiness-diagnostic. Output feeds: art-83-buy-in-exposure-modeler, art-84-settlement-efficiency-kpi, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-78-csdr-penalty-calculator.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: Flagship. Outputs: asset_class, batch_detail, batch_total_exposure, daily_rate_bps, fail_days, note, notional, partial_credit, partial_settled_pct, penalty_amount, penalty_type, rate_table_version, reference, reference_price. Output schema: call describe_tool("calculate_csdr_penalty").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Beyond the annotations, the description discloses that execution is deterministic, inputs are transiently processed and not stored/logged/retained, and an AP2 artifact with execution_hash is exported. It also explains server-side vs browser delegation behavior. These are meaningful operational traits, though the description is padded with provenance boilerplate.

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?

The description is heavily bloated with generic OpenChainGraph compute-node boilerplate, URLs, an FV-status hash, and artifact provenance that are not needed for tool selection. Useful information is buried rather than front-loaded, making the definition longer and harder to scan than necessary.

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

Completeness3/5

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

The description lists outputs and upstream/downstream artifact relationships, which helps orient the agent. However, there is no output schema and the nested policy_parameters input lacks meaningful field documentation, so an agent still lacks enough detail to confidently construct the decision inputs.

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 high, so the schema already carries most parameter documentation. The description adds useful context around compute modes and upstream artifact consumption, but it does not explain the nested policy_parameters fields fail, open_fails, or rate_table_version, which have only empty schemas in the input definition.

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 title and description make clear this is a CSDR cash-penalty calculator, and the listed outputs such as penalty_amount, fail_days, and daily_rate_bps reinforce the purpose. However, it does not distinguish itself from the sibling recompute_csdr_penalty, leaving ambiguity about which calculator to use.

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

Usage Guidelines2/5

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

The description explains compute modes but never states when this tool should be used instead of alternatives, nor does it mention the closely related recompute_csdr_penalty sibling. It also gives no prerequisites beyond 'Use synthetic or anonymised inputs only.'

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

calculate_erc2981_royaltyERC-2981 Royalty CalculatorB
Read-onlyIdempotent
Inspect

ERC-2981 Royalty Calculator: OpenChainGraph compute node (payment_policy). 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. Open at: https://ainumbers.co/chaingraph/art-608-erc2981-royalty-calculator.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: Recomputes an ERC-2981 royalty amount as floor(sale_price * royalty_fraction_bps / 10000) -- the same integer-division convention the OpenZeppelin reference ERC2981 implementation uses -- from a caller-declared sale_price and royalty_fraction_bps, using BigInt arithmetic throughout so a sale_pric... Outputs: claimed_royalty_amount, computed_royalty_amount, effective_royalty_pct, findings, not_proven, overall_determination, receiver, related_tools, royalty_fraction_bps, sale_price, scope_note. Output schema: call describe_tool("calculate_erc2981_royalty").

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: claimed_royalty_amount, receiver, royalty_fraction_bps, sale_price. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds useful context beyond that: server-side versus browser delegation, transient processing without retention, deterministic BigInt arithmetic, and an AP2 artifact with execution_hash. The FV-status receipt language is cryptic but does not contradict 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.

Conciseness2/5

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

The definition is bloated with OpenChainGraph boilerplate, a long FV-status hash path, and a duplicated output list. The core formula is buried after infrastructure text, and the sentence about BigInt arithmetic is truncated mid-word.

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?

For a compute-node tool with nested policy parameters and no output schema, the description covers the calculation, compute modes, privacy behavior, and named outputs. It still lacks explicit routing guidance versus alternatives and does not explain the receiver field, but the essential call semantics are present.

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 description coverage is 100%, so the baseline is 3. The description earns an extra point by explaining the arithmetic meaning of sale_price and royalty_fraction_bps and the OpenZeppelin integer-division convention. It does not add much for receiver or parent hashes beyond what the schema already documents.

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 description states a specific verb and resource: recompute an ERC-2981 royalty amount using integer division. The formula floor(sale_price * royalty_fraction_bps / 10000) makes the operation precise. It does not explicitly contrast with nearby siblings such as validate_royalty_split, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this tool over alternatives, only constraints such as using synthetic or anonymised inputs and compute-mode defaults. An agent must infer the use case from the formula alone.

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

calculate_irrbb_eve_shocksIRRBB EVE Shock CalculatorA
Read-onlyIdempotent
Inspect

IRRBB EVE Shock Calculator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-184-irrbb-sot-eve-evaluator. Open at: https://ainumbers.co/chaingraph/art-183-irrbb-eve-shock-calculator.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: Calculate Delta Economic Value of Equity (EVE) under the 6 BCBS d368 / EBA standardised IRRBB shock scenarios (parallel up, parallel down, short up, short down, steepener, flattener), recalibrated effective 1 Jan 2026. Outputs: buckets_used, reference_parallel_shock_bps, shocks, total_net_gap, worst_delta_eve, worst_scenario. Output schema: call describe_tool("calculate_irrbb_eve_shocks").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, yet the description still adds real context: inputs are processed transiently and not stored/logged/retained, the tool exports an AP2 artifact with execution_hash for chain provenance, and compute:auto runs server-side on Cloudflare Workers while compute:browser returns a delegation URL. This is useful context. It is not a 5 because the compute-mode boilerplate largely restates the compute parameter's schema description rather than adding new behavior.

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

Conciseness3/5

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

The most decision-relevant text — what the tool actually computes and returns — is buried near the end, after compute-mode boilerplate, a URL, and a 64-character FV-status hash path. Those elements do not help selection or invocation and push the purpose statement out of the front-loaded position.

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?

For a computation node with no output schema, the description enumerates the return fields (buckets_used, reference_parallel_shock_bps, shocks, total_net_gap, worst_delta_eve, worst_scenario), which compensates well. Data-handling, provenance and downstream-consumption context are all present; the remaining gap is the opaque policy_parameters/repricing_gaps input shape.

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 compute, parent_hashes, parent_tool_ids and policy_parameters, making baseline 3 appropriate. The description adds some semantic framing (the six standardised shock scenarios, recalibration date) but says nothing about the nested, undocumented repricing_gaps payload or how gap buckets should be shaped.

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 summary states a specific verb and resource: calculate Delta EVE under the 6 named BCBS d368 / EBA standardised IRRBB shock scenarios (parallel up/down, short up/down, steepener, flattener), recalibrated 1 Jan 2026. Sibling differentiation is only implicit via 'Output feeds: art-184-irrbb-sot-eve-evaluator', which positions it upstream of evaluate_irrbb_sot_eve but never says so explicitly, nor contrasts it with calculate_basis_risk_nii_shock or run_rate_shock_ladder.

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 implied by the scenario list and by the downstream-consumer note ('Output feeds: art-184-irrbb-sot-eve-evaluator'), but there is no explicit when-to-use vs when-not or named alternative. The only directive-style guidance is the constraint 'Use synthetic or anonymised inputs only', which is a data-handling rule rather than tool selection guidance.

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

calculate_mica_own_fundsArt 67 Own-Funds CalculatorA
Read-onlyIdempotent
Inspect

Art 67 Own-Funds Calculator: OpenChainGraph compute node (compliance_mandate). 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-100-mica-casp-authorization-readiness. Output feeds: cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-101-mica-art67-own-funds-calculator.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: Computes MiCA Art 67 required own funds = higher of Annex IV permanent minimum (€50k advisory / €125k trading-platform / €150k custody-exchange) or ¼ fixed overheads. Outputs: binding_basis, fixed_overheads_quarter, form_eligible, form_note, note, own_funds_held, permanent_minimum, reference_version, required_own_funds, surplus_shortfall. Output schema: call describe_tool("calculate_mica_own_funds").

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: inputs. Unknown keys are refused.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real behavioral context beyond them: deterministic execution, transient processing with no storage or logging, a requirement to use synthetic or anonymised inputs, and the export of an AP2 artifact carrying execution_hash for chain provenance. That is exactly the kind of disclosure an agent needs before sending data.

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

Conciseness3/5

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

The computational core is front-loaded and clear, but the text is padded: the wordy FV-status receipt sentence, the 'OpenChainGraph compute node' restatement duplicated in two consecutive sentences, the bare URL, and the 'call describe_tool(...)' pointer all consume space without helping selection. Several sentences do not earn their 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?

With no output schema, the description compensates by enumerating the returned fields (binding_basis, own_funds_held, permanent_minimum, required_own_funds, surplus_shortfall, form_eligible), plus upstream/downstream artifact linkage and the compute-mode rule. The remaining gap is the internal shape of the required 'inputs' object, which is left to describe_tool.

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; the description earns above that by naming the decision inputs implicitly through the formula (own_funds_form, own_funds_held, fixed_overheads_annual) and by identifying the upstream artifact that supplies parent_hashes/parent_tool_ids. The opaque 'inputs' key inside policy_parameters remains unexplained in both places.

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 ('Computes MiCA Art 67 required own funds') and gives the actual formula — higher of the Annex IV permanent minimum (€50k/€125k/€150k) or ¼ fixed overheads — which distinguishes it from nearby siblings like assess_mica_casp_readiness or run_mica_casp_fit. An agent can predict the output without opening 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 concrete pipeline context: it consumes artifacts from art-100-mica-casp-authorization-readiness and feeds cry-04-merkle-batch-verifier, and explains the compute-mode selection rule (auto/server/browser, gpu:true always delegates). It does not explicitly say when to prefer this over sibling calculators, so it stops short of full routing guidance.

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

calculate_naic_clo_rbc_factorNAIC CLO/CBO/CDO Tranche RBC Factor CalculatorC
Read-onlyIdempotent
Inspect

NAIC CLO/CBO/CDO Tranche RBC Factor Calculator: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-618-naic-clo-rbc-factor-calculator.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.

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". See the tool's manifest for field names.

TDQS

C2.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/closed-world, but the description adds genuine behavioral context: the auto/server/browser compute binding, that gpu:true nodes always delegate, that inputs are processed transiently and not retained, and that an AP2 artifact with execution_hash is exported. This usefully extends beyond the structured safety hints.

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?

The single genuinely informative line (compute-mode behavior) is buried under boilerplate about Cloudflare Workers, privacy, AP2 artifacts, a page URL, and an FV-status receipt path. Much of this does not help an agent select or invoke the tool and crowds out purpose detail.

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

Completeness3/5

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

Compute-mode, privacy, and provenance behavior are well covered, but for a numerical decision function the description never explains what policy_parameters expects (deferring to an external manifest) or what a valid result represents. Adequate for the plumbing, incomplete for the computation itself.

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%, so the schema already documents all four parameters, including the compute enum. The description mirrors the compute-mode semantics but adds little about policy_parameters beyond deferring to 'the tool's manifest,' so baseline 3 applies.

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

Purpose3/5

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

The title names the resource (NAIC CLO/CBO/CDO tranche RBC factor) precisely, but the description body only restates this as 'compute node (compliance_control)' and never elaborates on what the computation actually does or produces. Purpose is inferable from the title but not sharpened by the description, and there is no differentiation from siblings like compute_rbc_action_level or check_securitization_risk_retention.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no named alternatives. In a catalog with many RBC/securitization siblings, the description gives the agent nothing to route on.

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

calculate_nis2_penalty_exposureNIS2 Penalty Exposure Calculator (Art. 34)B
Read-onlyIdempotent
Inspect

NIS2 Penalty Exposure Calculator (Art. 34): OpenChainGraph compute node (compliance_mandate). 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-142-nis2-art21-gap-checker. Open at: https://ainumbers.co/chaingraph/art-143-nis2-penalty-exposure-calculator.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: Calculate maximum NIS2 Art. Outputs: entity_classification, infringement_breakdown, max_penalty_eur, mitigated_estimate_eur, mitigating_factors_applied, turnover_pct_exposure. Output schema: call describe_tool("calculate_nis2_penalty_exposure").

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". Unknown keys are refused.

TDQS

B3.1/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), yet the description adds materially: deterministic execution, transient input processing with no storage/logging/retention, an AP2 artifact export carrying execution_hash for chain provenance, and an offline-verifiable FV-status receipt. That is genuine disclosure beyond the structured fields, though some of it is shared boilerplate across this tool family.

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?

Roughly half the text is generic compute-node boilerplate plus a long FV-status hash/receipt explanation that consumes attention without helping selection or invocation. The most useful content (what it computes, required inputs) is buried or truncated at the very end, and the intended summary sentence is cut off mid-phrase.

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

Completeness3/5

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

Listing the six output fields compensates for the absent output schema, and the privacy/prerequisite notes are helpful. But the truncated purpose statement and the completely undocumented nested policy_parameters leave an agent guessing how to drive the calculation, which matters for a 4-param compute node with a nested object.

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%, so the schema already documents compute, parent_hashes, and parent_tool_ids; the description merely restates the compute-mode rules that are already in the schema. The nested policy_parameters fields (infringement_types, mitigating_factors, entity_classification, global_annual_turnover_eur) are untyped and undescribed in both schema and description, so the real input semantics gap is unaddressed. Baseline 3 applies.

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

Purpose3/5

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

The name/title and the outputs list (max_penalty_eur, mitigated_estimate_eur, turnover_pct_exposure) make it clear this computes NIS2 Art. 34 fine exposure, but the description's own purpose sentence is truncated to 'Summary: Calculate maximum NIS2 Art.' and never completes. It also does not differentiate itself from neighbors like calculate_csdr_penalty, score_nis2_incident_significance, or check_nis2_art21_measures.

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?

'Consumes upstream artifacts from: art-142-nis2-art21-gap-checker' implies a prerequisite workflow step and 'Use synthetic or anonymised inputs only' is a real usage constraint. However, there is no explicit when-to-use / when-not-to-use statement and no routing to the many sibling NIS2 tools.

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

calculate_repo_haircutOn-Chain Repo Haircut CalculatorA
Read-onlyIdempotent
Inspect

On-Chain Repo Haircut Calculator: OpenChainGraph compute node (collateral_mandate). 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. Output feeds: 505-tokenized-collateral-eligibility-checker, 506-onchain-cash-leg-finality-checker. Open at: https://ainumbers.co/tools/508-repo-haircut-collateral-calculator.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: Compute repo haircut, initial margin, and variation margin. Outputs: base_haircut_pct, total_haircut_pct, sft_floor_applied, initial_margin, vm_threshold, canton_haircut_pct, legacy_haircut_pct, weekend_saving_pct, flags. Output schema: call describe_tool("calculate_repo_haircut").

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: collateral_type, notional, tenor, counterparty. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, the description discloses that inputs are processed transiently and not stored or logged, that compute mode routing changes execution location and may return a browser delegation URL rather than a result, and that an AP2 artifact with execution_hash is exported. These are real behavioral traits an agent needs. What is missing is any meaning for the returned `flags` field.

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?

The summary sentence is front-loaded, but the body is padded with duplicated boilerplate ('OpenChainGraph compute node (collateral_mandate). Deterministic OpenChainGraph compute node.'), a raw URL, and a 64-character fv-status hash that an agent cannot act on. Roughly half the text is provenance chatter rather than invocation guidance.

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?

With no output schema, the description compensates by enumerating the nine output fields, and the nested policy_parameters object is fully covered by the schema. Compute-mode routing and data-handling policy are stated. It stops short of explaining semantics for the numeric outputs or the `flags` array.

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 baseline applies; policy_parameters is fully enumerated and documented inline. The description adds nothing about parameters beyond the compute-mode paragraph, which itself duplicates the schema's own description of `compute`.

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 one-line summary, 'Compute repo haircut, initial margin, and variation margin,' names a specific verb and resource, and the outputs list (base_haircut_pct, sft_floor_applied, vm_threshold, canton_haircut_pct...) makes the scope concrete. It does not, however, distinguish itself from near-siblings such as compute_stock_token_collateral_haircut or compute_basel_haircut_adjusted_exposure.

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 the compute-mode paragraph and the stated downstream feeds (505-tokenized-collateral-eligibility-checker, 506-onchain-cash-leg-finality-checker). There is no explicit statement of when to pick this tool versus the other haircut/collateral calculators, only the constraint to use synthetic or anonymised inputs only.

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

calculate_solvency2_scr_ratioSolvency II SCR Ratio CalculatorB
Read-onlyIdempotent
Inspect

Solvency II SCR Ratio Calculator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-181-sii-ifrs17-reconciliation-bridger. Open at: https://ainumbers.co/chaingraph/art-180-solvency2-scr-ratio-calculator.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: Calculate Solvency II SCR and MCR coverage ratios from eligible own funds and capital requirements. Outputs: eligible_own_funds, mcr, mcr_breached, mcr_coverage_ratio, scr, scr_breached, scr_coverage_ratio, tier1_total_limit_ok, tier1_total_pct_of_scr, tier1_unrestricted_limit_ok, tier1_unrestricted_pct_of_scr, tier3_limit_ok, tier3_pct_of_scr, tiering_ok. Output schema: call describe_tool("calculate_solvency2_scr_ratio").

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". Unknown keys are refused.

TDQS

B3.2/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), so the description's job is to add what they cannot. It does: server-vs-browser execution and delegation, transient non-retained processing, and emission of an AP2 artifact carrying execution_hash for chain provenance. These are genuine behavioral facts an agent needs. The only weakness is that the boilerplate repeats itself ("OpenChainGraph compute node" twice) and the compute-mode text largely restates the schema.

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?

The description is dominated by boilerplate: duplicated compute-node phrasing, a raw URL, a 64-hex FV-status path, and a provenance pitch, all ahead of the one sentence that actually says what the tool does. The useful content (Summary, Outputs) sits at the very end rather than front-loaded. Structural discipline is poor even though most individual sentences are not wrong.

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

Completeness3/5

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

There is no output schema, so listing the 14 returned fields (scr_coverage_ratio, mcr_breached, tiering_ok, etc.) is a real contribution. However, completeness is undercut by the undefined policy_parameters shape: an agent knows the tool computes SCR/MCR ratios but not what capital inputs to supply, and no required-parameter guidance exists. Adequate, with a salient gap on the input side.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description adds nothing parameter-specific beyond a restatement of the compute modes and the vague phrase "eligible own funds and capital requirements." Critically, the internal shape of policy_parameters (a nested "capital" object with no type) is left unexplained, so an agent still does not know what keys the decision function expects.

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 buried Summary sentence gives a specific verb and resource: "Calculate Solvency II SCR and MCR coverage ratios from eligible own funds and capital requirements." That is clear enough to distinguish this from most siblings, but it never names the nearest neighbours (aggregate_solvency2_scr_modules, calculate_mica_own_funds, check_capital_adequacy_private), so the agent gets no explicit routing signal. Purpose is stated, differentiation is left to inference.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the many adjacent capital/own-funds tools in the sibling list. The only usage-ish instruction is "Use synthetic or anonymised inputs only," which is an input constraint, not routing guidance. The "Output feeds: art-181-sii-ifrs17-reconciliation-bridger" line hints at downstream ordering but never says when to invoke this versus aggregate the modules first.

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

calculate_xvaXVA / CVA CalculatorB
Read-onlyIdempotent
Inspect

XVA / CVA Calculator: OpenChainGraph compute node (risk_parameter). 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: qfa-01-options-greeks. Output feeds: ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/qfa-04-xva-cva-calculator.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: Monte Carlo XVA/CVA calculator. Outputs: compliance_flags, cva, cva_basis, dva, dva_basis, fva, fva_basis, n_paths, n_steps, peak_epe, peak_epe_pct_notional, verdict, xva, xva_risk_rating. Output schema: call describe_tool("calculate_xva").

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: cpyLGD_pct, cpyPD_pct, funding_bps, instrument, maturity_years, n_paths, n_steps, notional, ownPD_pct, preset, rfr_pct, vol_pct. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the bar is lower; the description nonetheless adds real behavior: server-side execution on Cloudflare Workers for gpu:false nodes with a registered kernel, browser delegation returning a URL when compute:"browser" or gpu:true, transient input handling with no storage or logging, and an AP2 artifact with execution_hash for provenance. It does not mention cost, latency, or rate limits for the delegation path.

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?

The functional core ('Monte Carlo XVA/CVA calculator') is buried behind platform boilerplate, and the description is padded with a spec URL, a long fv-status path with a hex hash, and notes about offline receipt verification that do not help an agent invoke the tool. Only the outputs list and the compute-mode explanation clearly earn their place.

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

Completeness3/5

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

With no output schema, listing the returned fields (cva, dva, fva, peak_epe, verdict, xva_risk_rating) is valuable, and compute routing is fully covered. However, for a 13-parameter Monte Carlo risk model with undocumented nested parameters, the description never explains what the inputs mean or how the bases (_basis fields) and verdict are derived, leaving substantive gaps.

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 baseline is 3. The description reinforces the compute enum semantics (auto/server/browser, gpu:true always delegating) but says nothing about the 13 policy_parameters (cpyPD_pct, ownPD_pct, cpyLGD_pct, funding_bps, n_paths, n_steps, etc.), which carry no per-field descriptions in the schema beyond their names.

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 description states a specific verb+resource: 'Monte Carlo XVA/CVA calculator' with enumerated outputs (cva, dva, fva, peak_epe, xva_risk_rating). This distinguishes it from valuation siblings like compute_options_greeks or compute_portfolio_var, though the actual purpose appears only after two sentences of platform boilerplate ('OpenChainGraph compute node (risk_parameter)', 'Deterministic OpenChainGraph compute node').

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?

There is pipeline context ('Consumes upstream artifacts from: qfa-01-options-greeks', 'Output feeds: ptg-01-ap2-prompt-template-generator') and a constraint ('Use synthetic or anonymised inputs only'), but no explicit statement of when to choose this over sibling risk calculators such as compute_portfolio_var or simulate_var_monte_carlo, and no prerequisite guidance beyond that.

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

call_toolRun any AINumbers tool by nameA
Read-onlyIdempotent
Inspect

Runs ONE read-only AINumbers tool that is not in your tool list. tools/list is paginated (13 pages, 722 tools) and many hosts read only the first page; this is the door to the rest. Pass { name: "", arguments: { ... } } — the target's own inputSchema is validated and its result is returned verbatim, including execution_hash, so a dispatched call and a direct call are byte-identical. Get a name from find_tool (single calculators), find_chain (workflows) or describe_tool (exact schema). Read-only tools only: anything that issues a credential, stamps an anchor or reaches the network is refused here and must be called directly so your host can approve it.

NameRequiredDescriptionDefault
nameYesExact mcp_name of the tool to run (e.g. "recompute_payment_waterfall"). Use find_tool/describe_tool to get it; this takes the exact name only.
argumentsNoThe target tool's own arguments object, exactly as you would pass it on a direct call. Omit for a no-argument tool.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds genuinely new behavior: the target's own inputSchema is validated, results come back verbatim including execution_hash, and dispatched calls are byte-identical to direct calls. It also discloses the hard refusal boundary for credential/anchor/network tools and the reason for that boundary (host approval).

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?

Front-loaded with the core action, then routing, then the restriction. Five dense sentences with no filler; the pagination detail earns its place by explaining why the tool exists at all.

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?

No output schema exists, and the description compensates by describing the return value (verbatim result including execution_hash) and the validation performed. For a meta-dispatch tool with nested arguments, the safety boundary, sourcing path and fidelity guarantee are all covered.

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 baseline is 3, but the description adds the literal payload shape ({ name: "<exact mcp_name>", arguments: {...} }), stresses that the name must be exact and where to source it, and explains that arguments is validated against the target's schema. Minor overlap with the schema's own parameter descriptions keeps it from a 5.

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 ('Runs ONE read-only AINumbers tool that is not in your tool list') and immediately distinguishes itself from the discovery siblings by naming find_tool, find_chain and describe_tool as the sources of a name. An agent can tell it apart from list_ainumbers_tools or a direct call without opening any 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 about when to use it (tool not in your list because tools/list is paginated and hosts read only page one of 13) and when not to (anything that issues a credential, stamps an anchor or reaches the network must be called directly so the host can approve it). It even names the prerequisite step that produces the required 'name' argument.

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

camt053_parseParse and structurally validate a camt.053.001 bank statementA
Read-onlyIdempotent
Inspect

Parses a camt.053.001 bank-to-customer statement XML document with the same schema-subset structural and facet checks as the tools/565 browser reconciliation workbench (IBAN mod-97, BIC, currency, date/decimal facets), returning the extracted statement (message id, statement id, account IBAN/currency, balances, entries) on success or the structural error list on failure. Byte-identical extraction to the browser tool for the same input. Read-only parse -- feed the result to recon_match for reconciliation.

NameRequiredDescriptionDefault
xmlYescamt.053.001 XML statement document text to parse.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive, but the description adds real content: the specific structural and facet checks (IBAN mod-97, BIC, currency, date/decimal), success-vs-error return shapes, and deterministic byte-identical output versus the browser workbench. It stops short of stating input-size limits or error-list structure, but this is well beyond annotation restatement.

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?

Two sentences with the scope and downstream hand-off front-loaded. The 'tools/565 browser reconciliation workbench' and 'byte-identical extraction' clauses are somewhat internal-context heavy but do convey determinism, so each sentence still earns its place.

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?

There is no output schema, and the description compensates by naming the returned fields (message id, statement id, IBAN/currency, balances, entries) and the failure mode (structural error list). Nothing an agent needs in order to call and interpret it 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?

Only one parameter and schema coverage is 100%, so the schema already documents 'xml' fully. The description adds nothing about size limits, encoding, or accepted camt.053 sub-versions, leaving it at the baseline.

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 ('Parses a camt.053.001 bank-to-customer statement XML document') plus the validation facet set and the extracted payload. An agent can distinguish this from parse_camt053_reconciliation or map_mt9xx_to_camt 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 Guidelines4/5

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

Explicitly routes the agent onward: 'feed the result to recon_match for reconciliation', which establishes its place as a pre-step. It does not, however, say how it differs from the near-identically named sibling parse_camt053_reconciliation, leaving the main selection ambiguity unresolved.

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

certify_license_electionLicense Election CertifierA
Read-onlyIdempotent
Inspect

License Election Certifier: OpenChainGraph compute node (cryptographic_mandate). 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-197-pil-flavor-mapper, art-196-cant-be-evil-license-selector, art-195-creative-commons-license-chooser. Output feeds: art-200-license-election-verifier. Open at: https://ainumbers.co/chaingraph/art-199-license-election-certifier.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: Binds a license election (family, id, params) to a named asset and licensor DID, producing a deterministic terms_hash via SHA-256 over the JCS-canonical election core. Outputs: all_checks_pass, certificate, checks, terms_hash. Output schema: call describe_tool("certify_license_election").

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". Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, but the description adds substantial behavioral context: server-side vs browser delegation, GPU handling, transient non-retention of inputs, deterministic SHA-256/JCS hashing, AP2 artifact export, and offline FV-status receipt behavior. It does not contradict 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.

Conciseness2/5

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

The definition is long and dense, repeats that it is an OpenChainGraph compute node, buries the core purpose after compute/privacy text, and includes URLs and a long FV-status path that are not essential for tool selection. The information is useful but not front-loaded or compact.

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?

For a complex no-output-schema tool, the description covers purpose, compute modes, privacy handling, provenance chaining, upstream/downstream artifacts, and output field names. It does not fully explain the structure of certificate/checks outputs, but it is largely complete for invocation.

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 explains compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds high-level meaning by mapping policy_parameters to license election family/id/params and asset/licensor binding, but it does not add syntax or format detail beyond the schema.

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?

The description states a specific verb and resource: it binds a license election to an asset and licensor DID to produce a deterministic terms_hash. It also situates the tool in a chain, naming upstream selectors and the downstream verifier, which distinguishes it from siblings such as verify_license_election.

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 description provides compute-mode guidance (auto/server/browser) and a synthetic-input constraint, plus upstream/downstream artifact context. However, it never explicitly says when to use this tool instead of verify_license_election or the upstream license selectors, so tool-selection guidance is only implied.

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

check_agency_eligibility_matrixAgency Eligibility MatrixA
Read-onlyIdempotent
Inspect

Agency Eligibility Matrix: OpenChainGraph compute node (compliance_mandate). 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-223-conforming-loan-limit. Output feeds: art-221-llpa-stack. Open at: https://ainumbers.co/chaingraph/art-222-agency-eligibility-matrix.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: Fannie Mae DU and Freddie Mac LPA agency eligibility matrix. Outputs: checks, eligible, eligible_flag, fails, max_cltv_pct, max_dti_pct, max_hcltv_pct, max_ltv_pct, pii_note, product_notes, regulatory_basis, table_source, table_version, underwriting_type. Output schema: call describe_tool("check_agency_eligibility_matrix").

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: cltv_pct, hcltv_pct, housing_dti_pct, loan_purpose, occupancy_type, property_type, underwriting_type. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly/idempotent/non-destructive), and the description adds genuine context beyond them: deterministic computation, compute:"auto" vs "browser" delegation semantics, transient non-retained processing, and an exported AP2 artifact carrying execution_hash for chain provenance. That is meaningful operational detail an agent cannot get 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.

Conciseness2/5

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

The definition opens with redundant boilerplate ("OpenChainGraph compute node" then "Deterministic OpenChainGraph compute node") and repeats compute-mode rules already in the schema, pushing the one-line purpose statement deep into the text. It is over-long relative to the information delivered, with the most useful sentence poorly positioned.

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?

With no output schema, the enumeration of outputs (eligible_flag, fails, max_cltv_pct, max_dti_pct, accompanying regulatory_basis and pii_note) is genuinely useful, and privacy/provenance stance plus chain placement round it out. Only the missing sibling differentiation and the absent explanation of what the eligibility logic actually checks keep it from a 5.

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 compute enum and the nested policy_parameters (required keys, unknown-key refusal) are already fully documented in the schema. The description restates the compute modes but adds no syntax or constraints beyond what the schema provides; 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?

The description names the specific resource: a Fannie Mae DU / Freddie Mac LPA agency eligibility matrix that outputs eligibility flags and LTV/DTI/HCLTV caps. However, the actual purpose is buried behind two sentences of generic OpenChainGraph compute-node boilerplate, so the agent has to read several lines before learning what the tool does.

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?

It does state an input constraint ("Use synthetic or anonymised inputs only") and pins its position in a chain (consumes art-223-conforming-loan-limit, feeds art-221-llpa-stack). But it never contrasts itself against the many nearby ratio/eligibility siblings such as check_conforming_loan_limit, compute_ltv_ratios, or compute_llpa_stack, so the agent must infer when this matrix is the right choice.

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

check_agent_attestationAgent Identity & Authorization Attestation CheckerA
Read-onlyIdempotent
Inspect

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").

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.

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.

check_agent_token_scopeAgent Token Scope CheckerB
Read-onlyIdempotent
Inspect

Agent Token Scope Checker: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-385-agent-token-scope-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: Compares a requested agent action (amount, currency, merchant category, timestamp) against an agent token or mandate's declared scope: spend cap, currency, MCC allow-list, and expiry. Outputs: attenuation_depth, checks_run, enforcement, failing_checks, token_id, verdict. Output schema: call describe_tool("check_agent_token_scope").

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: attenuation_chain. Unknown keys are refused.

TDQS

B3.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), and the description goes further: it explains compute routing (server vs browser delegation URL for gpu:true nodes), that execution is deterministic, that inputs are transient and not stored or logged, and that it consumes upstream AP2 artifacts. Minor tension: it says it 'Exports an AP2 artifact', a producing side effect that sits slightly awkwardly with readOnlyHint=true, though not enough to be a contradiction.

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?

Badly back-loaded: the actual purpose appears only after platform metadata, a compute-binding primer, a privacy paragraph, an artifact URL and an FV-status hash URL that no tool-selecting agent needs. For a scope checker, the sentence that explains what is being checked should be first, and much of the rest is shared boilerplate that does not earn 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?

No output schema exists, but the description enumerates the return fields (attenuation_depth, checks_run, enforcement, failing_checks, token_id, verdict) and routes the agent to describe_tool for the full shape, which is sufficient. Nested policy_parameters are partially explained, leaving only internal structure of token/requested_action implicit.

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 genuinely adds meaning for the opaque parts: policy_parameters.token and policy_parameters.requested_action are declared as empty objects in the schema, and the description supplies the fields that matter (amount, currency, merchant category, timestamp vs spend cap, currency, MCC allow-list, expiry). It also flags that attenuation_chain is the required input.

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 final summary sentence is precise: it 'Compares a requested agent action (amount, currency, merchant category, timestamp) against an agent token or mandate's declared scope: spend cap, currency, MCC allow-list, and expiry' and lists the outputs. That is a specific verb+resource an agent can act on. It loses a point because the purpose is buried at the end behind platform boilerplate, and it never distinguishes itself from close siblings like validate_ap2_mandate_chain, authorize_payment_against_mandate or verify_kya_x402_scope.

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

Usage Guidelines2/5

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

No statement of when to use this rather than the many adjacent mandate/token tools. The only usage-shaped guidance is a data-handling constraint ('Use synthetic or anonymised inputs only') and the note that it consumes artifacts from art-01-ap2-mandate-chain-validator, which hints at ordering but not at tool selection or exclusions.

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

check_ai_act_art50_markingEU AI Act Art. 50 Marking CheckerC
Read-onlyIdempotent
Inspect

EU AI Act Art. 50 Marking Checker: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-127-dual-layer-disclosure-verifier. Open at: https://ainumbers.co/chaingraph/art-126-ai-act-art50-marking-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.

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". See the tool's manifest for field names.

TDQS

C2.8/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, the description discloses genuinely useful traits: deterministic execution, the compute binding ('auto' vs 'browser', gpu:true always delegating), transient non-stored input handling with a 'synthetic or anonymised inputs only' caveat, and an exported AP2 artifact carrying execution_hash. That is real behavioral context the annotations do not cover, though the FV-status snapshot paragraph is largely noise.

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?

The text opens by restating the title, then spends most of its length on Cloudflare Workers/kernel boilerplate and an FV-status hash URL with an offline-verification caveat, none of which helps an agent decide to call or how to call it. The one useful line (downstream consumer) is buried mid-paragraph.

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

Completeness2/5

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

With no output schema and a free-form nested policy_parameters object, the description should explain what the decision function evaluates and what result shape comes back; instead it describes only artifact/provenance plumbing. An agent can invoke it but cannot predict what a 'marking check' will confirm or reject.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates only the compute mode (redundant) and defers on policy_parameters ('See the tool's manifest for field names'), adding nothing about what decision-function fields this Art. 50 check expects.

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

Purpose3/5

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

The verb+resource ('check AI Act Art. 50 marking') is really carried by the name/title; the description itself only labels it a 'compliance_mandate' compute node and names a downstream consumer, never stating what the check actually evaluates (e.g., whether AI outputs carry machine-readable marks). It gives no differentiation from nearby siblings such as assess_ai_act_conformity, run_ai_act_highrisk_fit, or verify_dual_layer_disclosure.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus the many other AI Act tools, and no prerequisites or exclusions. The only usage signal is 'Output feeds: art-127-dual-layer-disclosure-verifier', which describes downstream chaining rather than selection criteria for this tool.

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

check_allocation_affirmationAllocation/Affirmation Conformance CheckerA
Read-onlyIdempotent
Inspect

Allocation/Affirmation Conformance Checker: OpenChainGraph compute node (compliance_mandate). 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-77-t1-settlement-readiness-diagnostic. Output feeds: art-82-securities-settlement-message-linter, cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-81-allocation-affirmation-conformance.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: Checks allocation and confirmation/affirmation events against the ESMA CSDR SDR RTS 23:00 CET trade-date rule and the machine-readable-format mandate (binding Dec 2026). Outputs: cutoff_applied, cutoff_timezone, dual_date_note, events_flagged, format_nonconformance_count, note, on_time_events, on_time_rate, reference, total_events. Output schema: call describe_tool("check_allocation_affirmation").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing compute-mode behavior (auto/server/browser, gpu:true always delegates, browser delegation URL returned), that inputs are processed transiently and not stored or logged, that an AP2 artifact with execution_hash is exported for chain provenance, and an offline-verifiable FV-status receipt. With readOnly/idempotent/closed-world already declared, this adds real operational context; it stops short of stating failure behavior or refusal handling.

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?

The opening leads with a title restatement and generic 'Deterministic OpenChainGraph compute node' boilerplate, and a long FV-status URL plus a 64-character hash occupy a large share of the text. The single sentence that actually identifies what the tool checks is the second-to-last item, so the most valuable content is not front-loaded.

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?

For a no-required-param compute node with no output schema, the description is substantively complete: it states the regulatory rule checked, enumerates output fields (cutoff_applied, on_time_rate, format_nonconformance_count, etc.), points to describe_tool for the schema, and covers compute/data-handling behavior. The remaining gap is that the expected shape of the 'events' input is never described.

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 the compute parameter's semantics are already fully spelled out in the schema, so the description largely repeats it. The description never explains what belongs in policy_parameters (events, cutoff_local) or how parent_tool_ids must align with parent_hashes beyond the schema's own text, so it adds only marginal meaning.

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 summary sentence names a specific verb and resource — checking allocation and confirmation/affirmation events — against a named rule set (ESMA CSDR SDR RTS 23:00 CET trade-date rule and the machine-readable-format mandate), which is concrete enough to separate it from neighbors like calculate_csdr_penalty or lint_securities_settlement_message. However, the identifying sentence is buried at the end of the description behind platform boilerplate, and no sibling is named, so differentiation is inferred rather than stated.

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?

There is no explicit when-to-use/when-not-to-use statement or named alternative. Usage is only implied via pipeline context ('Consumes upstream artifacts from: art-77-t1-settlement-readiness-diagnostic. Output feeds: art-82..., cry-04...') and the constraint 'Use synthetic or anonymised inputs only', which tells the agent where it sits but not when to prefer it over another conformance tool.

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

check_assessor_independenceSwift CSP Assessor Independence EligibilityB
Read-onlyIdempotent
Inspect

Swift CSP Assessor Independence Eligibility: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-487-assessor-independence-check.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: Checks eligibility of a Swift CSCF Independent Assessment Framework assessment: assessment route (internal 2nd/3rd line vs external) against a policy-supplied permitted-routes-per-architecture-type table, claimed assessor certifications against a policy-supplied required set, an independence-from... Outputs: architecture_type, assessment_date, assessment_route, attestation_deadline, cert_eligible, date_eligible, eligible, failing_predicate, independence_eligible, overlapping_identities, route_eligible. Output schema: call describe_tool("check_assessor_independence").

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: architecture_type, assessment_date, assessment_route, assessor_person_ids, attestation_deadline, claimed_assessor_certifications, identity_set, implementer_person_ids, permitted_routes, required_certifications. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavior beyond that: server-side vs browser delegation, transient processing with no storage/logging/retention, synthetic-input guidance, and AP2 artifact export with execution_hash. It does not contradict 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.

Conciseness2/5

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

The description is heavily front-loaded with OpenChainGraph compute-node boilerplate, a URL, and FV-status receipt details before the actual purpose summary appears. Several sentences do not help an agent select or invoke the tool, and the useful summary is truncated, making the structure inefficient.

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

Completeness3/5

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

For a complex eligibility-check tool with nested policy parameters and no output schema, the description does list the output fields and explains compute/privacy behavior. However, the core summary cuts off at 'independence-from...' and leaves the independence predicate only partially described, so important decision semantics are 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%, so the schema already documents the parameters, including compute and the nested policy_parameters object with its required keys. The description adds some semantic context by mentioning policy-supplied permitted-routes-per-architecture-type and required certification sets, but the summary is truncated and does not fully explain the independence 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 description names a specific verb and resource: it 'Checks eligibility of a Swift CSCF Independent Assessment Framework assessment' and summarizes route/certification/independence checks. It is clear enough to distinguish this from generic assessment tools, though it does not explicitly differentiate from other independence-related siblings and the summary is truncated mid-sentence.

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

Usage Guidelines2/5

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

The description explains compute modes ('auto', 'browser', 'server') and says to use synthetic or anonymised inputs, but it does not say when to use this tool versus alternatives such as other assessor-independence or eligibility checks. There is no explicit when-to-use or when-not-to-use guidance for tool selection.

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

check_camera_provenanceCamera-Provenance CheckA
Read-onlyIdempotent
Inspect

Camera-Provenance Check: OpenChainGraph compute node (compliance_control). 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. Output feeds: art-359-idv-session-receipt-builder. Open at: https://ainumbers.co/chaingraph/art-361-camera-provenance-check.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: Structural check on an IDV/KYC capture's C2PA manifest: claim well-formedness, hard-binding hash assertion, and claim-signature reference (art-123 reuse), plus a digitalSourceType read off the c2pa.actions assertion that flags trainedAlgorithmicMedia so a downstream reader knows the capture was d... Outputs: capture_chain_field, digital_source_type, has_actions, has_hard_binding, manifest_present, manifest_valid, missing_elements, note, provenance_label, rejected, trained_algorithmic_media_flagged. Output schema: call describe_tool("check_camera_provenance").

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: assertions, claim, claim_generator, manifest_digest, signature. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

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

Even though annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, the description adds substantial behavioral context: deterministic compute, server-side vs browser execution modes, transient processing with no storage or logging, a requirement to use synthetic or anonymised inputs, export of an AP2 artifact with execution_hash, and downstream output consumption. This is exactly the kind of context annotations cannot convey.

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?

The description is verbose and poorly front-loaded: the actual purpose appears only after extensive boilerplate about OpenChainGraph compute nodes, and the phrase 'Deterministic OpenChainGraph compute node' is repeated. Non-essential details such as the FV-status URL and 'Output schema: call describe_tool' clutter the definition, burying the useful summary.

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?

For a tool with no output schema, the description lists the output fields (capture_chain_field, digital_source_type, etc.) and explains the export behavior, data handling, and downstream artifact consumption. It is nearly complete, with the main missing piece being explicit sibling differentiation.

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 input schema already documents all four parameters, including the compute enum and policy_parameters required keys. The description does not add parameter-level meaning beyond what the schema provides, making the baseline score of 3 appropriate.

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 description states a specific verb and resource: a structural check on an IDV/KYC capture's C2PA manifest, covering claim well-formedness, hard-binding hash assertion, claim-signature reference, and digitalSourceType flagging. This is clear enough for an agent to understand what the tool does, though it does not distinguish itself from siblings such as validate_c2pa_manifest or decode_c2pa_aiml_assertions.

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 description implies the tool is used to validate C2PA manifests on IDV/KYC captures, but it does not explicitly say when to choose it over alternative C2PA-related tools. There are no stated exclusions or selection criteria, leaving usage guidance implied rather than explicit.

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

check_capital_adequacy_privatePrivate-Input Capital Adequacy CheckA
Read-onlyIdempotent
Inspect

Private-Input Capital Adequacy Check: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-415-check-capital-adequacy-private.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: Checks a privately held eligible-capital and risk-weighted-assets figure against a pinned regulatory minimum (Basel III/3.1 CET1, or Solvency II SCR coverage), emitting only an above/below-minimum verdict and tier without disclosing capital or RWA. Outputs: above_minimum, not_legal_advice, pii_note, regulatory_basis, regulatory_minimum_pct, tier. Output schema: call describe_tool("check_capital_adequacy_private").

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: regulatory_minimum_pct. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

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

Annotations already mark it read-only, idempotent, non-destructive, and closed-world, and the description adds substantive behavior: server vs browser delegation, gpu handling, transient non-storage of inputs, AP2 execution_hash provenance, and FV-status snapshot semantics. No contradiction with 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.

Conciseness3/5

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

The core purpose arrives only after several compute-node sentences, and the compute-mode detail largely duplicates the schema. It remains readable, but it is longer than necessary and not front-loaded around the actual check.

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

Completeness3/5

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

It lists outputs and privacy/provenance behavior despite having no output schema. However, it never explains how the privately held capital and RWA figures are supplied; the visible schema exposes only regulatory_minimum_pct, leaving a material input-path ambiguity for calling the tool 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%, so the schema carries the parameter documentation. The description mentions the pinned regulatory minimum and compute modes but adds little beyond the schema's own compute, parent_hashes, parent_tool_ids, and policy_parameters descriptions.

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 summary names a precise verb and domain: it checks privately held eligible-capital and risk-weighted-assets figures against Basel III/3.1 CET1 or Solvency II SCR coverage, returning only a verdict and tier. That distinguishes it from broader capital-ratio calculators, though the description does not name a specific sibling alternative.

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?

It gives a private-data constraint ('Use synthetic or anonymised inputs only') and explains compute-mode selection, but offers no explicit when-to-use/when-not routing against siblings such as calculate_solvency2_scr_ratio or compute_rbc_action_level_private.

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

check_card_act_ability_to_payCheck CARD Act Ability to PayA
Read-onlyIdempotent
Inspect

Check CARD Act Ability to Pay: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-228-build-adverse-action-notice. Open at: https://ainumbers.co/chaingraph/art-233-check-card-act-ability-to-pay.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: Evaluates a credit card application against CARD Act §1026.51 ability-to-pay requirements. Outputs: ability_to_pay_result, annual_income, annual_minimum_payments_est, dti_ratio, dti_threshold, has_cosigner, income_and_assets, method_a_sufficient, method_b_sufficient, method_used, monthly_debt_obligations, monthly_housing_payment, monthly_income, monthly_minimum_payment_est, penalty_fee_safe_harbor, pii_note, regulatory_basis, requested_credit_limit, requires_cosigner, table_source, table_version, total_assets, total_monthly_obligations, under_21_restriction. Output schema: call describe_tool("check_card_act_ability_to_pay").

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: has_cosigner, method. Unknown keys are refused.

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 description is adding real value: transient input processing with no storage or logging, server-vs-browser compute routing, gpu delegation behavior, and export of an AP2 artifact with execution_hash. That is meaningful operational context the annotations cannot express. It does not describe failure modes or rate/limit 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?

Badly front-loaded: the first two sentences are generic compute-node boilerplate, the actual purpose arrives late, and a raw URL plus an FV-status file path and hash consume space without helping tool selection. The 28-item output enumeration is useful given no output schema exists, but it is a flat list rather than a structured explanation.

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?

With no output schema, the description earns credit for enumerating return fields, naming the downstream consumer, disclosing the privacy stance, and explaining compute modes. The main remaining gap is guidance on accepted values for `method` and on which policy_parameters are conditionally required (the schema's `required` array is empty at top level while the nested object claims required keys).

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 compute/parent_hashes/policy_parameters fields are already documented structurally. The description adds nothing about the policy_parameters subfields — notably `method`, which is declared with no type, no enum, and no description anywhere, leaving a genuine semantic hole the description could have filled.

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?

A specific verb+resource+regulation is stated: "Evaluates a credit card application against CARD Act §1026.51 ability-to-pay requirements." That is enough to distinguish it from nearby siblings like compute_dti_ratios or check_qm_points_and_fees, though no sibling is named explicitly and the sentence is buried after two paragraphs of compute/infrastructure boilerplate.

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 by the regulatory framing plus a downstream pointer ("Output feeds: art-228-build-adverse-action-notice") and the constraint to use synthetic/anonymised inputs. There is no when-to-use/when-not statement and no comparison to alternative affordability or CARD Act tools in the sibling list.

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

check_cash_leg_finalityOn-Chain Cash-Leg Finality CheckerA
Read-onlyIdempotent
Inspect

On-Chain Cash-Leg Finality Checker: OpenChainGraph compute node (attestation_mandate). 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: 505-tokenized-collateral-eligibility-checker. Open at: https://ainumbers.co/tools/506-onchain-cash-leg-finality-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: Validate the cash leg of a Canton settlement: finality model (PFMI P8/P12), reserve attestation, GENIUS Act / MiCA regulatory classification, and depeg circuit-breaker. Outputs: verdict, finality_flag, genius_status, mica_status, compliance_flags, mandate_type. Output schema: call describe_tool("check_cash_leg_finality").

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: cash_leg_type, amount, currency, finality_model, jurisdiction. Unknown keys are refused.

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, but the description adds real beyond-schema behavior: transient processing with no storage/logging, a synthetic-inputs-only constraint, server-vs-browser compute delegation, and AP2 artifact export with execution_hash. The claim 'Exports an AP2 artifact' sits slightly uneasily with readOnlyHint, but it is clearly a provenance receipt rather than a state mutation, so no contradiction.

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?

The definition is heavily bloated with operational boilerplate (compute-binding explanation, FV-status receipt URL, 'a snapshot, not a subscription' aside) before the actual purpose appears in the final 'Summary:' sentence. Front-loading is poor — the single most useful sentence is last, and much of the text duplicates the compute parameter's schema description.

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?

With no output schema, the description compensates by enumerating return fields (verdict, finality_flag, genius_status, mica_status, compliance_flags, mandate_type) and pointing to describe_tool for the full schema. Combined with the enumerate of evaluated dimensions and upstream input source, an agent has enough to call it 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 nested policy_parameters are fully documented in the schema (enums for currency, jurisdiction, cash_leg_type, finality_model, redemption_window). The description restates the required keys and compute-mode semantics but adds no syntax or value meaning beyond what the schema already provides, 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?

The 'Summary:' line states a specific verb and resource — 'Validate the cash leg of a Canton settlement' — and enumerates the concrete dimensions checked (PFMI P8/P12 finality, reserve attestation, GENIUS/MiCA classification, depeg circuit-breaker). It is clear and specific, though the purpose is buried at the very end after pages of boilerplate, and it never names the closest siblings (classify_settlement_finality, classify_settlement_asset_finality).

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?

No explicit when-to-use/when-not or sibling routing is given. The 'Consumes upstream artifacts from: 505-tokenized-collateral-eligibility-checker' line implies where it sits in a chain, which is useful context, but an agent must infer this tool's place versus the many settlement-finality classifiers in the sibling list.

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

check_client_portingClient Porting CheckB
Read-onlyIdempotent
Inspect

Client Porting Check: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-532-client-porting-check.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: Checks whether a client's cleared positions and collateral are portable to a backup clearing member under a caller-declared porting window, given caller-declared position/collateral completeness and backup-member consent status. Outputs: backup_member_consent_status, backup_member_id, citations, client_ref, collateral, collateral_complete, collateral_count, default_event_at, elapsed_minutes, evaluated_at, note, porting_window_hours, position_count, positions, positions_complete, rationale, rejected_inputs, total_collateral_display, total_collateral_minor_units, total_notional_display, total_notional_minor_units, verdict, window_minutes, window_missed. Output schema: call describe_tool("check_client_porting").

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: backup_member_consent_status, backup_member_id, client_ref, collateral, positions. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare the operation safe, read-only, idempotent, and closed-world, but the description adds meaningful behavior: deterministic compute, server-side versus browser delegation, transient processing without retention, and AP2 artifact export with execution_hash. It also warns to use synthetic or anonymised inputs.

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?

The definition is bloated with repeated OpenChainGraph boilerplate, a URL, FV-status receipt detail, and a long output-field dump. The actual purpose and decision logic are not front-loaded, so the agent must sift through low-value text to find the core meaning.

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

Completeness3/5

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

For a complex, nested-input tool with no output schema, the description gives a useful summary and enumerates output fields, but it does not explain the meaning of key results such as verdict or window_missed. It is adequate but leaves meaningful semantic gaps.

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 parameters and the compute modes. The description mentions caller-declared positions, collateral, and backup-member consent, but adds little beyond the schema about how policy_parameters keys affect the result.

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 description eventually states a specific check: whether cleared positions and collateral are portable to a backup clearing member under a declared porting window. It distinguishes the resource and decision from most siblings, though the purpose is buried after generic OpenChainGraph boilerplate.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives such as check_operator_exit_portability or other collateral/portability checks. The description implies a clearing-portability context but provides no when-to-use or when-not-to-use rules.

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

check_conforming_loan_limitConforming Loan Limit CheckB
Read-onlyIdempotent
Inspect

Conforming Loan Limit Check: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-222-agency-eligibility-matrix. Open at: https://ainumbers.co/chaingraph/art-223-conforming-loan-limit.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: FHFA annual conforming loan limit classifier. Outputs: applicable_limit, area_baseline, baseline_limit, classification, conforming, high_cost_ceiling, is_ak_hi_territory, jumbo, limit_tier, loan_amount, loan_program, note, pii_note, regulatory_basis, state_code, super_conforming, table_source, table_version, units, year. Output schema: call describe_tool("check_conforming_loan_limit").

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: high_cost_county, loan_program, state, year. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: compute modes, server-side versus browser delegation, transient input processing, no logging or retention, synthetic-input guidance, AP2 artifact export with execution_hash, and offline-verifiable FV-status provenance. These details materially help an agent understand execution semantics and privacy behavior for this read-only compute node.

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?

The actual purpose is buried near the end after repeated compute-node boilerplate, privacy language, a URL, and FV-status details. The description is long and front-loads infrastructure text rather than the loan-limit classification task, making it harder for an agent to scan quickly.

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

Completeness3/5

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

There is no output schema, but the description enumerates output fields and points to describe_tool for more detail. However, for a nested policy_parameters tool, it does not explain the input fields' regulatory meanings or classification categories, leaving some gaps despite covering execution and provenance behavior.

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 structured schema is already the primary source for parameter semantics. The description lists outputs rather than explaining policy_parameters fields such as state, loan_program, or high_cost_county, so it adds little parameter-level meaning beyond the schema baseline.

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 description's summary states a specific resource and function: an "FHFA annual conforming loan limit classifier," and lists output fields such as applicable_limit, conforming, jumbo, and high_cost_ceiling. This is clear enough for an agent to know it classifies loans against conforming limits, though it does not distinguish this tool from related siblings like check_agency_eligibility_matrix or compute_fha_mip_eligibility.

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

Usage Guidelines2/5

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

It mentions that output feeds art-222-agency-eligibility-matrix, but provides no explicit guidance on when to choose this classifier versus other loan-compliance tools. There are no when-not conditions, prerequisites, or alternative-tool routing instructions.

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

check_cra_annex1_completenessCRA Annex I Completeness CheckerA
Read-onlyIdempotent
Inspect

CRA Annex I Completeness Checker: OpenChainGraph compute node (compliance_mandate). 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-138-spdx-sbom-validator. Output feeds: art-140-cra-vuln-reporting-readiness. Open at: https://ainumbers.co/chaingraph/art-139-cra-annex1-completeness-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: Checks EU CRA Annex I Part I essential cybersecurity requirements: sbom_present, sbom_machine_readable, top_level_deps_covered, vuln_handling_policy_present, secure_by_default, and a valid conformity_route (self_assessment | eu_type_examination | full_quality_assurance). Outputs: annex1_complete, conformity_route, gaps. Output schema: call describe_tool("check_cra_annex1_completeness").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered; the description still adds real behavioral context: deterministic execution, server-vs-browser compute routing with a delegation URL for gpu:true, transient processing with no storage or logging, and an AP2 artifact carrying execution_hash for provenance. It does not contradict any annotation. Deduction for repeating the compute-mode semantics that the schema already spells out.

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?

The actual tool function is the last item in a long block dominated by platform boilerplate (compute-node explanation, gpu:true delegation, retention language, an FV-status SHA-256 URL, artifact URLs, an external HTML link). Front-loading is inverted: an agent must read past ~120 words of unrelated infrastructure text before learning what the tool checks. Much of the opening content repeats the schema's own compute description.

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?

For a computation node with a nested policy_parameters object and no output schema, the description supplies the pieces an agent needs: the checks performed, the accepted conformity_route values, the compute modes, the privacy/retention posture, chaining inputs and outputs, and an explicit pointer to describe_tool for the output schema plus a summary of return fields (annex1_complete, conformity_route, gaps). Only the semantics of the individual check fields (what makes sbom_present true) remain unstated.

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 nominally 100%, but the policy_parameters sub-properties are untyped empty schemas; the description compensates by naming the six expected keys (sbom_present, sbom_machine_readable, top_level_deps_covered, vuln_handling_policy_present, secure_by_default) and giving the valid conformity_route values (self_assessment | eu_type_examination | full_quality_assurance). It adds little on parent_hashes/parent_tool_ids beyond the schema, but the policy-key enumeration is genuine added meaning.

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 Summary sentence names a specific check ('EU CRA Annex I Part I essential cybersecurity requirements') and enumerates the six conditions evaluated plus the conformity_route enum, so the agent knows exactly what is assessed. It also distinguishes itself indirectly from the sibling assess_cra_vuln_reporting_readiness by stating 'Output feeds: art-140-cra-vuln-reporting-readiness'. However, the purpose is buried at the end after a large block of platform boilerplate rather than stated up front.

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 description gives pipeline context ('Consumes upstream artifacts from: art-138-spdx-sbom-validator', 'Output feeds: art-140-...') and an input constraint ('Use synthetic or anonymised inputs only'), which implies when this node belongs in a workflow. But there is no explicit statement of when to choose this over alternatives such as assess_cra_vuln_reporting_readiness or the other CRA/NIS2 check_* tools, and no exclusions or prerequisites.

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

check_credit_concentration_topn_sectorCredit Concentration Top-N / Sector CheckerA
Read-onlyIdempotent
Inspect

Credit Concentration Top-N / Sector Checker: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-445-credit-concentration-topn-sector.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: Credit-concentration screen over a flat exposure list (name, sector, amount): returns the top-N single-name exposures by amount, a per-sector rollup, single-name and sector Herfindahl-Hirschman Index (0-10000 scale), and a breach list against caller-declared single-name and sector limit percentages. Outputs: portfolio_total, sector_breaches, sector_hhi, sector_limit_pct, sector_totals, single_name_breaches, single_name_hhi, single_name_limit_pct, top_n, top_n_exposures, worst_sector, worst_single_name. Output schema: call describe_tool("check_credit_concentration_topn_sector").

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: exposures, sector_limit_pct, single_name_limit_pct, top_n. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds meaningful behavior beyond that: deterministic execution, server vs browser delegation, transient non-stored inputs, and AP2 artifact export with execution_hash. Much of this is generic ChainGraph boilerplate, but it is still materially useful.

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?

The core purpose is buried after several sentences of generic compute-node boilerplate, privacy language, an external URL, and an FV-status hash. The useful summary is present, but the description is not front-loaded and contains substantial reusable template text that does not help an agent select or invoke this specific tool.

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?

Given there is no output schema, the description helpfully lists the return fields: portfolio_total, sector_hhi, single_name_hhi, top_n_exposures, breach lists, and worst-sector/worst-single-name. It also explains the 0-10000 HHI scale, which is necessary to interpret output. Some output-field semantics and error behavior remain implicit, but the definition is largely complete for correct invocation.

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 schema already documents parameter names and compute modes. The description still adds useful semantic detail by explaining that exposures are a flat list of name, sector, and amount; that limits are caller-declared percentages; and that top_n controls the single-name ranking. The nested policy_parameters object becomes much easier to populate from the description than from the schema alone.

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 description gives a specific verb and resource: a credit-concentration screen over a flat exposure list that returns top-N exposures, sector rollups, HHI, and breach lists. It is clear what the tool does, but it does not explicitly distinguish itself from nearby siblings such as compute_counterparty_limit_check or compute_large_exposures_limit.

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 description explains compute modes and says to use synthetic or anonymised inputs only, which gives some operational guidance. However, it never states when to choose this tool over concentration-related alternatives, so usage is implied rather than explicitly routed.

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

check_cscf_control_applicabilityCSCF Control Applicability & CoverageB
Read-onlyIdempotent
Inspect

CSCF Control Applicability & Coverage: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-486-cscf-control-applicability.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: Scores a Swift member's declared architecture type and component inventory against a policy-supplied Swift Customer Security Controls Framework (CSCF) control matrix -- the published control number, tier (mandatory/advisory), applicable-architecture-type list, and evidence column, never a hand-tr... Outputs: advisory_coverage_pct, applicable_advisory_count, applicable_mandatory_count, architecture_type, component_inventory, cscf_version, evidence_index, gap_list, mandatory_coverage_pct, not_applicable_set, overall_status. Output schema: call describe_tool("check_cscf_control_applicability").

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: architecture_type, component_inventory, control_matrix, cscf_version, implementation_status. Unknown keys are refused.

TDQS

B3.4/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 description correctly adds context beyond them: inputs are processed transiently and not stored or logged, synthetic or anonymised inputs only, an AP2 artifact with execution_hash is exported for provenance, and gpu:true nodes always delegate to the browser. The offline-verifiable FV-status receipt is also disclosed rather than implied. The truncated summary sentence is the main defect, but the behavioral disclosures themselves are unusually substantive.

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?

Front-loading is poor: the description opens with a repeated title and a redundant 'OpenChainGraph compute node' sentence, then devotes substantial space to a Cloudflare Workers execution model and a full 64-character FV-status hash URL before reaching the actual purpose. The core sentence is truncated mid-word, so size was spent on infrastructure boilerplate at the expense of the substantive explanation.

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

Completeness3/5

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

With a nested policy_parameters object and no output schema, the description does mitigate by listing all eleven output fields (overall_status, gap_list, coverage percentages). But it never explains the scoring semantics, what values overall_status can take, or where the AP2 artifact is returned, and the summary is cut off. The result is callable but not fully interpretable.

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 baseline 3 applies. The description's compute-mode paragraph is a near-verbatim duplicate of the schema's own `compute` description, adding no new semantics, and parent_hashes/parent_tool_ids are never mentioned. Some value is added by the summary's 'policy-supplied control matrix' phrasing, which clarifies what policy_parameters carries, but it does not explain architecture_type or implementation_status.

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 Summary names a specific verb and resource: scores a Swift member's declared architecture type and component inventory against a policy-supplied CSCF control matrix, and enumerates the matrix fields consumed. However, that sentence is buried roughly two-thirds of the way into the description and is truncated mid-word ('never a hand-tr...'), so the agent must wade through boilerplate before finding it. No sibling tool in the list performs CSCF control applicability, so it is effectively distinguishable, but not by any explicit statement.

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?

There is no explicit when-to-use or when-not-to-use guidance and no alternative tools are named. The only actionable routing information is about compute mode ('auto' vs 'browser'), which is really a parameter concern rather than a tool-selection concern. The Swift-member/compliance-mandate framing implies the context but never states preconditions or exclusions.

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

check_debt_validation_noticeDebt Validation Notice Completeness CheckerA
Read-onlyIdempotent
Inspect

Debt Validation Notice Completeness Checker: OpenChainGraph compute node (compliance_mandate). 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-402-validate-regf-call-frequency. Open at: https://ainumbers.co/chaingraph/art-403-check-debt-validation-notice.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: Checks a debt-validation-notice content-element checklist against Regulation F 12 CFR 1006.34 (the Model Form B-1 element set) and computes the 30-day validation-period response-window math from a declared mailing date under a declared mailing-to-receipt assumption. Outputs: asserted_note, completeness_grade, compliant, disambiguation, element_status, elements_checked, gap_count, gaps, itemization_date_valid, regulatory_basis, response_period, table_source, table_version. Output schema: call describe_tool("check_debt_validation_notice").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior5/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), and the description adds substantial non-obvious behaviour on top: deterministic server-side vs browser-delegated execution, transient processing with no storage or logging, an exported AP2 artifact carrying execution_hash for provenance, and an offline-verifiable FV-status receipt. Nothing here contradicts 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.

Conciseness2/5

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

The definition opens with two near-duplicate sentences about being an OpenChainGraph compute node, then restates the compute-mode semantics verbatim from the schema, then embeds a 64-character hash URL before the actual purpose appears under 'Summary:'. The regulatory content is valuable but poorly front-loaded and padded with material already in structured fields.

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

Completeness3/5

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

With no output schema, the description does the right thing by enumerating outputs (completeness_grade, gaps, response_period, regulatory_basis, etc.), and it covers the regulatory basis, chain inputs and data-handling posture. What it lacks is the callable input contract for policy_parameters and any pointer beyond 'call describe_tool' for the return shape, which leaves a gap for a nested-object tool.

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%, so compute, parent_hashes and parent_tool_ids are already fully documented in the schema and the description only echoes chaining intent. The real gap is policy_parameters.inputs: the description mentions a 'declared mailing date' and a 'declared mailing-to-receipt assumption' and warns unknown keys are refused, but never gives the actual key names an agent must supply, which is exactly the information the schema cannot provide.

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 'Summary:' clause states a specific verb+resource+standard: it checks a debt-validation-notice content-element checklist against Reg F 12 CFR 1006.34 and computes the 30-day validation-period math. That is precise enough to separate it from generic disclosure checkers, but the purpose is buried under compute-mode boilerplate rather than front-loaded, and it never distinguishes itself from near-neighbours like check_reg_e_remittance_disclosure or validate_adverse_action_notice.

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: the name, the Reg F citation and the note that it consumes art-402-validate-regf-call-frequency together hint at where this sits in a chain, which is genuinely useful. There is no explicit when-to-use/when-not statement and no named alternative, so an agent must infer selection from the regulatory scope alone.

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

check_digital_trade_rulesDigital Trade Rules Compliance CheckerA
Read-onlyIdempotent
Inspect

Digital Trade Rules Compliance Checker: OpenChainGraph compute node (scheme_rule). 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-52-digital-trade-fit-diagnostic. Output feeds: art-08-en16931-einvoice-batch-validator, art-55-trade-document-provenance-verifier. Open at: https://ainumbers.co/chaingraph/art-54-digital-trade-rules-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: Machine-checks a digital trade presentation (digital LC, collection, or open-account transaction) against the ICC digital rulebooks: eUCP v2.1, eURC v1.1, URDTT v1.0. Outputs: amount_check, discrepancies, expiry_check, note, presentation_summary, verdict. Output schema: call describe_tool("check_digital_trade_rules").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, yet the description still adds real value: compute routing semantics (server kernel vs browser delegation URL for gpu:true), transient processing with no storage or logging, a synthetic-inputs-only constraint, and an AP2 artifact carrying execution_hash. The FV-status receipt note adds provenance context. No contradiction with annotations.

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?

The text is bloated and back-loaded: the actual purpose appears only at the very end, behind boilerplate about compute nodes, FV-status hashes, a URL, and provenance feeds. Compute-mode behavior is repeated nearly verbatim from the schema parameter description, and the FV-status URL/hash tangent does little to help an agent decide or invoke.

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?

With no output schema, the description compensates by enumerating outputs (amount_check, discrepancies, expiry_check, note, presentation_summary, verdict) and by spelling out upstream/downstream chaining and data-handling guarantees. For a deterministic checker with 4 mostly optional params, this is close to complete, missing only explicit version/rule-set selection guidance.

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 compute, parent_hashes, parent_tool_ids and policy_parameters, making a 3 the baseline. The description adds only marginal meaning, mainly that policy_parameters carries rulebook/LC terms implicitly via the named rulebooks; it duplicates the compute-mode explanation already in the schema.

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 core purpose is stated precisely late in the description: 'Machine-checks a digital trade presentation (digital LC, collection, or open-account transaction) against the ICC digital rulebooks: eUCP v2.1, eURC v1.1, URDTT v1.0.' That is a specific verb+resource and distinguishes it from siblings like examine_lc_document_presentation or run_digital_trade_fit. However, it is buried after a large block of boilerplate, so an agent must read to the end to learn what the tool actually does.

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?

Chaining guidance is present and specific: it consumes art-52-digital-trade-fit-diagnostic and feeds art-08-en16931-einvoice-batch-validator and art-55-trade-document-provenance-verifier. But there is no explicit statement of when to use this versus the similarly-scoped siblings (e.g., examine_lc_document_presentation, validate_mt700_lc_fields, run_digital_trade_fit), so selection guidance is only implied.

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

check_dpa_gdpr_art28DPA Article 28 Completeness CheckerC
Read-onlyIdempotent
Inspect

DPA Article 28 Completeness Checker: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-409-dpa-art28-completeness-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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

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

Beyond the annotations, the description discloses that inputs are processed transiently and not stored or logged, explains compute mode behavior for server versus browser execution, and notes that an AP2 artifact with execution_hash is exported for provenance. These are meaningful behavioral details for an idempotent read-only checker.

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?

The definition is bloated with repeated OpenChainGraph platform boilerplate, a long external URL, and an FV-status receipt URL that do not help an agent decide how to invoke the tool. The domain purpose is not front-loaded; platform mechanics dominate the opening and body.

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

Completeness2/5

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

For a compliance checker, the description should explain what DPA Article 28 completeness means, what policy_parameters are expected, and what the AP2 artifact result represents. It instead focuses on compute execution and provenance, leaving the domain semantics and actionable input guidance incomplete.

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 input schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters in detail. The description reinforces compute-mode and provenance concepts but does not add parameter-specific meaning beyond the schema, which is the baseline for high schema coverage.

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

Purpose2/5

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

The description essentially restates the title, calling it a "DPA Article 28 Completeness Checker" and an "OpenChainGraph compute node (compliance_mandate)," but never explains what completeness dimensions are checked or what a check result means. It does not add a specific verb-and-resource explanation beyond the tool name/title.

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

Usage Guidelines2/5

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

The only usage constraint is "Use synthetic or anonymised inputs only," which is a data-safety instruction rather than guidance on when to select this tool. There is no comparison to sibling compliance checkers or indication of when not to use it.

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

check_emir_uti_completenessEMIR UTI Completeness CheckerC
Read-onlyIdempotent
Inspect

EMIR UTI Completeness Checker: OpenChainGraph compute node (compliance_mandate). 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-153-emir-trade-report-field-validator. Output feeds: art-155-emir-upi-validator. Open at: https://ainumbers.co/chaingraph/art-154-emir-uti-completeness-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.

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". See the tool's manifest for field names.

TDQS

C2.7/5.0
Behavior4/5

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

Beyond the annotations (which already declare readOnly/idempotent/non-destructive/closed-world), it discloses real behavior: transient processing with no storage or logging, a 'synthetic or anonymised inputs only' constraint, server-vs-browser compute routing, and export of an AP2 artifact carrying execution_hash. What it does not disclose is the shape or semantics of the result (verdict, findings, failures), which matters for a compliance check.

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

Conciseness3/5

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

Front-loaded with the name, but a large share of the text is infrastructure boilerplate (compute binding mechanics, offline receipt verification, an FV-status hash and URL) that adds no decision value for invoking this particular tool. The one sentence that would matter — what to put in policy_parameters — is absent.

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

Completeness2/5

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

There is no output schema, and the description says nothing about what the tool returns, yet policy_parameters is an open free-form object whose field names are pushed off to an external manifest. For a compliance decision node with nested opaque input and no documented return, an agent cannot reliably construct a call from this definition.

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 carries compute, parent_hashes, parent_tool_ids and policy_parameters. The description's compute explanation duplicates the schema enum text rather than adding to it, and it explicitly defers the important one — it says only 'see the tool's manifest for field names' for policy_parameters, leaving the actual decision inputs unexplained in both places an agent would look.

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

Purpose2/5

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

The description restates the title ('EMIR UTI Completeness Checker: OpenChainGraph compute node') and never says what completeness means here — which UTI fields are checked, what rule set is applied, or what the pass/fail verdict is based on. The only distinguishing content is chain position (consumes art-153 field validator, feeds art-155 UPI validator), which helps placement but not purpose.

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

Usage Guidelines2/5

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

It tells the agent which artifacts come before and after it in the graph, plus compute-mode routing, but gives no when-to-use / when-not-to-use guidance against the many adjacent siblings (validate_emir_trade_report, validate_emir_upi, run_emir_reporting_fit, reconcile_emir_pairing). Nothing explains which of these to pick for a UTI completeness question.

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

check_etr_control_evidenceETR Singularity & Exclusive-Control Evidence CheckerA
Read-onlyIdempotent
Inspect

ETR Singularity & Exclusive-Control Evidence Checker: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-55-trade-document-provenance-verifier. Open at: https://ainumbers.co/chaingraph/art-352-etr-control-evidence-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: Checks a supplied electronic transferable record (ETR/eBL) document digest and control-assertion set (platform identity, singularity assertion, control-transfer events with timestamps and signatures as supplied) against MLETR Art. Outputs: chain_summary, document_digest, element_checklist, malformed_events, note, overall_verdict, platform_identity. Output schema: call describe_tool("check_etr_control_evidence").

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". Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety baseline is covered. The description adds genuinely non-obvious behaviour: inputs are processed transiently and not logged or retained, server vs. browser compute delegation with a returned delegation URL, and export of an AP2 artifact carrying execution_hash for chain provenance. The FV-status snapshot paragraph is cryptically worded and adds little actionable behaviour.

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?

The description is badly front-loaded: it opens with repeated 'OpenChainGraph compute node' boilerplate, a compute-mode tutorial, and a privacy note before reaching what the tool actually checks. A 64-character hash URL and a self-referential 'call describe_tool(...)' line consume space without helping the agent decide or invoke.

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 read-only checker with no output schema, the description still enumerates the return fields (overall_verdict, element_checklist, malformed_events, chain_summary, platform_identity, etc.), covers compute routing and chaining inputs, states the data-handling guarantee, and names the downstream consumer. An agent has everything needed to call it and interpret the response.

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 nominally 100%, but the nested policy_parameters keys (control_events, document_digest, original_holder, platform_identity, singularity_assertion) carry no per-key descriptions. The description fills that gap by characterising them as a control-assertion set including singularity assertion, platform identity, and control-transfer events with timestamps and signatures. The compute and parent_hashes semantics are restated rather than extended.

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 summary sentence states a specific verb and resource: it checks a supplied ETR/eBL document digest plus a control-assertion set against MLETR requirements. That is materially more specific than the title alone. However, it never distinguishes itself from adjacent siblings such as validate_mletr_record, build_etr_possession_chain, or verify_trade_document_set, and the core purpose only appears after a long preamble.

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 description gives operational constraints ('use synthetic or anonymised inputs only') and a downstream routing hint ('Output feeds: art-55-trade-document-provenance-verifier'), which imply when the tool fits in a pipeline. It gives no explicit when-to-use vs when-not guidance and no comparison to the MLETR-related siblings an agent would have to choose between.

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

check_eudi_readinessEUDI Wallet Credential-Acceptance Readiness CheckerA
Read-onlyIdempotent
Inspect

EUDI Wallet Credential-Acceptance Readiness Checker: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2026-11 (EUDI Wallet member-state rollout November 2026; FI SCA acceptance December 2027; AMLR July 2027). 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. Output feeds: art-04-agent-identity-attestation-checker, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-13-eudi-wallet-credential-readiness-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.

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". See the tool's manifest for field names.

TDQS

A3.5/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), yet the description adds real behavioral detail: compute:'browser' returns a delegation URL instead of a result, gpu:true nodes always delegate, inputs are processed transiently and not stored, and an AP2 artifact with execution_hash is exported for provenance. This is genuinely beyond what the annotations say, though much of it reads as shared boilerplate across the ChainGraph family rather than tool-specific 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?

The text opens by restating the title verbatim, then packs regulatory dates, compute-mode mechanics, privacy notes, downstream tool IDs, a documentation URL, and a 60+ character FV-status hash path into one dense block. The tool's actual evaluation semantics are buried or absent, so length is spent on infrastructure trivia rather than what the agent needs first.

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?

For a deterministic compute node with a 100%-documented schema, an enumeration of compute modes, an AP2 artifact export and downstream feeder list, most invocation-relevant context is present. The one blocking omission is the policy_parameters field vocabulary, which is deferred to an external manifest the description never points to precisely (the only URL given is the spec page, not the manifest), leaving the agent unable to assemble decision inputs from the description alone.

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%, so the baseline is 3, and the description's compute-mode discussion largely duplicates the enum description already in the schema. The critical gap is policy_parameters: the schema is an open object and the description merely says 'See the tool's manifest for field names' without providing or linking the manifest, so an agent cannot learn the actual decision inputs from either source.

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 title/name and the phrase 'EUDI Wallet Credential-Acceptance Readiness Checker' plus 'Deterministic OpenChainGraph compute node (compliance_mandate)' make the verb (check readiness) and resource (EUDI Wallet credential acceptance) unambiguous. However, the description never states what the check actually evaluates — the criteria that make an entity 'ready' — and never distinguishes this from nearby readiness siblings (assess_psd3_readiness, run_eudr_readiness_fit, run_dora_readiness_diagnostic).

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 context is only implied: regulatory deadlines (2026-11 for EUDI rollout, 2027 for AMLR/FI SCA) hint at when the check matters, and 'Output feeds: art-04-agent-identity-attestation-checker, ptg-01-ap2-prompt-template-generator' implies pipeline position. There is no explicit 'use this when...' statement, no exclusions, and no guidance on choosing between this and the many other readiness tools.

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

check_fatca_crs_submission_conformanceFATCA/CRS Submission Conformance CheckB
Read-onlyIdempotent
Inspect

FATCA/CRS Submission Conformance Check: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-490-fatca-crs-submission-check.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: Evaluates a FATCA/CRS submission record set against a policy-supplied schema version and business-rule set: DocTypeIndic sequencing (the public OECD CRS/FATCA XML Schema v2.0 new/corrected/void enumeration), MessageRefId/DocRefId uniqueness, CorrDocRefId referencing across corrected and voided re... Outputs: certification_period, fail_count, finding_count, findings, note, record_count, schema_version, submission_id, suppressed_finding_count, suppressed_rule_codes. Output schema: call describe_tool("check_fatca_crs_submission_conformance").

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: certification_period, mandatory_element_rules, records, schema_version, submission_id, suppressed_rule_codes. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower, and the description still adds genuinely useful behavior: compute:'auto' vs 'browser' execution semantics, Cloudflare Workers server-side kernels for gpu:false nodes, browser delegation for gpu:true, transient processing with no retention or logging, and an exported AP2 artifact carrying execution_hash. The FV-status receipt note is extra but low value for tool invocation.

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?

The purpose is not front-loaded: the first half is generic OpenChainGraph compute/container boilerplate, an 'Open at:' URL, and an FV-status receipt path that does not help an agent decide or call correctly. The actual summary is cut off mid-sentence ('corrected and voided re...'), which is a structural defect for a description this long.

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

Completeness3/5

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

It lists the return fields (certification_period, fail_count, findings, suppressed_rule_codes, etc.) and points to describe_tool for the output schema, so return values are covered. But for a nested policy_parameters input with no output schema, the truncated rule summary leaves the agent without the record-set shape or the full rule catalogue the check applies.

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%, so all four parameters (compute, parent_hashes, parent_tool_ids, policy_parameters) are already documented in the schema, making 3 the baseline. The description reinforces compute-mode behavior and frames policy_parameters as schema_version + business-rule-set inputs, but it never explains chaining semantics for parent_hashes/parent_tool_ids beyond what the schema states.

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 Summary clause names a specific verb and resource — evaluating a FATCA/CRS submission record set against a policy-supplied schema version and rule set — and even enumerates concrete rules (DocTypeIndic new/corrected/void sequencing, MessageRefId/DocRefId uniqueness, CorrDocRefId referencing). It is clearly distinct from the sibling track_fatca_crs_ro_remediation_closure, but the substance is buried after several sentences of compute/FV boilerplate, and the summary is truncated mid-word.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not guidance and no routing to alternatives; the only directive-like sentence is the constraint 'Use synthetic or anonymised inputs only.' An agent cannot tell from the text when a submission-conformance check is the right call versus a remediation tracker or a validator sibling.

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

check_fido_pqc_conformanceFIDO2 / WebAuthn PQC Conformance CheckerA
Read-onlyIdempotent
Inspect

FIDO2 / WebAuthn PQC Conformance Checker: OpenChainGraph compute node (compliance_mandate). 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-85-pqc-timeline-fit-diagnostic. Output feeds: cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-88-fido-pqc-conformance-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: Validates FIDO2/WebAuthn authenticator ML-DSA conformance vs IANA COSE algorithm registry identifiers and CTAP2.3 minimum version. Outputs: attestation_format, conformant, cose_pqc_registry, ctap_pqc_ready, ctap_version, gaps, hybrid_status, note, reference_version, supported_pqc_cose_ids, target_cose_id, target_pqc. Output schema: call describe_tool("check_fido_pqc_conformance").

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". Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, and not open-world behavior, and the description adds substantive context: compute delegation behavior, transient non-stored processing, synthetic-input restriction, AP2 execution_hash provenance, and upstream/downstream chaining. No behavior contradicts 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.

Conciseness2/5

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

The definition is bloated with platform boilerplate, URLs, FV-status hash text, and provenance text before the actual purpose appears in the Summary. Some content is useful, but it is not front-loaded and several sentences do not help an agent select or invoke the tool efficiently.

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?

For a complex compliance compute node with no output schema, the description lists the output fields and gives useful workflow and provenance context. It still leaves some ambiguity around output field meanings and nested policy parameters, but it says the full output schema is available via describe_tool and covers enough for correct selection and invocation.

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 parameter semantics already have strong structured support. The description elaborates compute modes and artifact chaining, but it does not add much meaning for the nested policy_parameters inputs such as target_pqc and authenticator beyond what the schema already provides.

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 description states a specific verb and resource: validates FIDO2/WebAuthn authenticator ML-DSA conformance against IANA COSE identifiers and CTAP2.3 minimum version. That is clear enough to distinguish it from generic PQC tools, though the actual purpose is buried beneath platform boilerplate and does not explicitly contrast close siblings.

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?

It gives workflow context by naming upstream art-85-pqc-timeline-fit-diagnostic and downstream cry-05-agent-action-audit-trail-aggregator, and it explains compute modes. It does not explicitly say when to use this versus adjacent PQC tools or when not to use it, so guidance is implied rather than direct.

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

check_force_placed_noticeForce-Placed Insurance Notice CheckerB
Read-onlyIdempotent
Inspect

Force-Placed Insurance Notice Checker: OpenChainGraph compute node (consumer_finance). 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. Open at: https://ainumbers.co/chaingraph/art-734-force-placed-insurance-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: Checks a lender-placed insurance event against the 12 CFR 1024.37 notice sequence: the 45-day advance first notice with its prescribed content set, the reminder notice at least 15 days before the charge and at least 30 days after the first notice, the no-evidence precondition, the 15-day cancel-a... Outputs: verdict, elements, premium_benchmark, refund_evaluation, charge_summary, evidence, manual_review_required. Output schema: call describe_tool("check_force_placed_notice").

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: first_notice_date, reminder_notice_date, charge_date, charged_premium_amount, charge_coverage_start, charge_coverage_end. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses genuinely useful behavior: server-side vs browser delegation semantics, that inputs are processed transiently and not logged or retained, and that the call exports an AP2 artifact with an execution_hash for chain provenance. That is real context an agent could not infer from annotations alone, though it is wrapped in marketing-style boilerplate.

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?

The definition is badly back-loaded: compute-kernel, privacy, AP2, FV-status URL, and receipt-verification boilerplate precede the actual purpose, and the Summary sentence itself is truncated mid-phrase ('the 15-day cancel-a...'), costing information density. Several sentences (offline receipt verification, spec URL) do not help an agent select or invoke the tool.

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

Completeness3/5

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

With 15 nested policy fields and no output schema, the description does earn credit for enumerating return fields (verdict, elements, premium_benchmark, refund_evaluation, charge_summary, evidence, manual_review_required). But the truncated summary leaves the substantive 1024.37 checks (no-evidence precondition, 15-day cancellation) unexplained, so an agent cannot fully anticipate what the verdict covers.

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%, including per-parameter descriptions and a required-key list inside policy_parameters, so the schema already does the heavy lifting. The description restates the compute:"auto"/"browser" behavior but adds no field-level semantics beyond the schema, which is the baseline-3 case.

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 'Summary:' sentence gives a specific verb and resource — checking a lender-placed insurance event against the 12 CFR 1024.37 notice sequence with named element types (45-day first notice, reminder timing, cancellation) — which is far from tautological. However, it appears only after a large block of platform boilerplate, and no sibling tool (e.g. servicing_compliance_clock, check_private_student_loan_disclosures) is named to differentiate scope.

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

Usage Guidelines2/5

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

The only guidance is a general privacy instruction ('Use synthetic or anonymised inputs only') and the compute-mode semantics. There is no statement of when to reach for this tool versus alternatives, no prerequisites, and no when-not conditions.

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

check_g20_corridor_cost_gapG20/FSB Corridor Cost-Gap CalculatorB
Read-onlyIdempotent
Inspect

G20/FSB Corridor Cost-Gap Calculator: OpenChainGraph compute node (risk_parameter). 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. Open at: https://ainumbers.co/chaingraph/art-549-g20-corridor-cost-gap.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: Recomputes a caller-declared cross-border payment corridor's cost gap against the hardcoded G20/FSB roadmap targets: retail cross-border payments end-2027 (no more than 1% global average, no more than 3% any corridor) and remittances 2030 (no more than 3% global average, no more than 5% any corri... Outputs: as_of, corridor_pair, gap_bps, gap_pct_display, meets_target, note, observed_cost_bps, observed_cost_display, rationale, rejected_inputs, rpw_methodology, send_amount_basis, target_any_corridor_bps, target_any_corridor_display, target_basis, target_global_avg_bps, target_global_avg_display, target_scope, target_year. Output schema: call describe_tool("check_g20_corridor_cost_gap").

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: as_of, corridor_pair, observed_cost_bps, send_amount_basis, target_year. Unknown keys are refused.

TDQS

B3.4/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 the description goes beyond them: transient processing with no storage or logging, deterministic execution, server vs. browser delegation semantics, and export of an AP2 artifact carrying an execution_hash for chain provenance. Those are real behavioral facts an agent cannot get from the structured fields. It loses points for burying them among repeated boilerplate rather than surfacing them cleanly.

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?

The actionable content is a single summary sentence, but it is pushed past three paragraphs of repeated boilerplate: 'OpenChainGraph compute node (risk_parameter). Deterministic OpenChainGraph compute node.' says the same thing twice, and a full FV-status URL blob is pasted inline. Front-loading is poor and a large share of the text does not earn its place.

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

Completeness3/5

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

There is no formal output schema, so the enumerated output field list (gap_bps, meets_target, target_any_corridor_bps, etc.) does useful work, and the target thresholds are given explicitly. However, the nested policy_parameters object is under-specified and the description never explains how a corridor_pair or observed_cost_bps is supplied, which is the one thing an agent actually needs 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 description coverage is reported at 100%, so the baseline is 3. The description adds almost nothing about parameters themselves — it names none of compute, parent_hashes, or the nested policy_parameters fields, and only incidentally reveals domain terms (corridor, observed cost, target year) through the summary. The nested schema leaves as_of, observed_cost_bps and target_year as untyped empty objects, which the description does not compensate for.

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 Summary sentence gives a specific verb and resource: recomputing a caller-declared cross-border corridor's cost gap against hardcoded G20/FSB targets, with the exact threshold values spelled out. That is far more informative than the title. It never names sibling tools (e.g. compare_corridor_cost, compute_cross_border_fees), so the 5 bar for explicit differentiation is not met.

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 conditions are only implied by the narrowly-scoped subject matter (G20/FSB roadmap compliance check). The compute-mode guidance ('auto' vs 'browser') is invocation mechanics, not a when-to-use rule, and there is no statement of when to prefer compare_corridor_cost or other corridor-cost siblings. The one genuine constraint — 'Use synthetic or anonymised inputs only' — is present but buried.

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

check_genius_reserve_disclosureGENIUS Act Monthly Reserve Disclosure CheckerA
Read-onlyIdempotent
Inspect

GENIUS Act Monthly Reserve Disclosure Checker: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2027-01-18 (GENIUS Act effective ≤ January 2027; monthly reserve composition reports required for licensed issuers; >$50B issuers subject to annual PCAOB audit. Re-verify against final-rule text on/after 2026-07-18.). 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. Output feeds: ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-275-genius-reserve-disclosure-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: Lints an extracted monthly reserve disclosure against GENIUS Act S.394 §4: composition-category eligibility, tenor, custody locations, a dual_control(2) CEO/CFO certification gate (distinct CEO and CFO identities required, per FDIC NPR 2026-04-10 and OCG SPEC.md §27.3), registered-examiner presen... Outputs: applicable_deadline, asset_results, ceo_certified, cfo_certified, conditional_assets_usd, coverage_ratio_pct, custody_disclosed, custody_locations, dual_control_satisfied, examiner_name, failing_dimensions, gate_policy, mom_diff, monthly_disclosure_determination, onchain_supply_check, pdf_extraction_note, prohibited_assets_usd, registered_examiner_named, regulatory_framework, report_month, reserve_shortfall_usd, total_liabilities_usd, total_reserves_usd. Output schema: call describe_tool("check_genius_reserve_disclosure").

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: assets, certifying_officers, registered_examiner_named. Unknown keys are refused.

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/closed-world, but the description adds genuinely non-obvious behavior: deterministic compute node, server-side Cloudflare Workers execution with a browser delegation fallback, transient processing with no storage or logging, and AP2 artifact export carrying an execution_hash with parent_hashes chaining. The dual_control(2) CEO/CFO gate and 'unknown keys are refused' are also disclosed. It stops short of describing the determination outcomes or error behavior, and the trailing truncation cuts off a behavioral bullet.

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?

The purpose is not front-loaded — it appears after regulatory-deadline, compute-binding, privacy, AP2 provenance, and FV-status boilerplate. The response embeds a 64-hex FV-status filename, a docs URL, a 21-field output enumeration inline, and is truncated mid-sentence ("registered-examiner presen..."), which signals mechanical concatenation rather than authored prose.

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?

With no output schema, the description compensates by listing every returned field (coverage_ratio_pct, dual_control_satisfied, failing_dimensions, monthly_disclosure_determination, etc.), and it covers compute modes, provenance chaining, and data handling. What holds it below 5 is the truncation and the absence of any statement of what a pass/fail determination looks like or how this differs from its conformance sibling.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters — the description largely repeats that (compute modes, required keys) rather than adding to it. The one real addition is the dual_control(2) requirement that certifying_officers contain distinct CEO and CFO identities, which gives semantic meaning the schema's empty-object policy_parameters does not. Most other policy parameter keys are undocumented in both places.

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 Summary sentence names a specific verb and resource ("Lints an extracted monthly reserve disclosure against GENIUS Act S.394 §4") and enumerates the checked dimensions (composition eligibility, tenor, custody, dual-control certification, registered examiner), so the agent knows concretely what the tool does. It does not, however, distinguish itself from the near-identically-named sibling check_genius_reserve_disclosure_conformance, and the actual purpose statement is buried behind eight sentences of compute/FV boilerplate.

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 context is implied (you pass an extracted disclosure draft plus certifying officers and get a conformance determination), and it does add a real constraint — "Use synthetic or anonymised inputs only" — plus compute-mode selection guidance. But there is no explicit when-to-use / when-not / alternative-tool guidance, which is a serious omission given the sibling list contains check_genius_reserve_disclosure_conformance, check_mica_reserve_disclosure, and precheck_reserve_attestation, all plausible confusions.

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

check_genius_reserve_disclosure_conformanceGENIUS Act Reserve-Disclosure Conformance MonitorA
Read-onlyIdempotent
Inspect

GENIUS Act Reserve-Disclosure Conformance Monitor: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2027-01-18 (GENIUS Act effective date is the earlier of 18 Jan 2027 or 120 days after final implementing regulations publish; the statutory 18 Jul 2026 rulemaking deadline was missed and no final rule exists as of 2026-08-07 (research/GENIUS-FINALRULE-CHECK-2026-08-07.md). Re-verify against final-rule text once one publishes.). 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. Open at: https://ainumbers.co/chaingraph/art-582-genius-reserve-disclosure-conformance-monitor.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: Checks a monthly PPSI reserve disclosure against two statute-derived GENIUS Act S.394 §4 requirements: 1:1 reserve coverage arithmetic and attestation presence/timeliness against the statutory monthly cadence. Outputs: attestation_date, attestation_present, coverage_ratio_pct, days_after_period_end, examiner_name, examiner_registered, onchain_supply_check, overall_determination, period_end_date, report_period, requirement_verdicts, reserve_shortfall_usd, scope_note, statutory_attestation_window_days, total_liabilities_usd, total_reserves_usd. Output schema: call describe_tool("check_genius_reserve_disclosure_conformance").

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: attestation_present, examiner_registered. Unknown keys are refused.

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/openWorld=false, so the bar is lower, and the description still adds real substance: deterministic compute node, compute:"auto" vs "browser" execution paths, gpu:true always delegating, transient non-persisted input processing, a synthetic-inputs-only warning, and an AP2 artifact with execution_hash for provenance. The FV-status receipt path and URL are provenance metadata rather than behavior, but the operational disclosures are genuinely useful.

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?

Roughly the first two-thirds of the text is boilerplate: regulatory deadline arithmetic, compute-binding explanation, privacy notice, artifact export, a marketing URL, and a 64-character hex FV-status filename. The actual purpose statement arrives only after the word 'Summary:' deep in the block, so the definition is badly back-loaded and the hash path does not earn its place for tool selection.

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?

There is no output schema, so the description carries the burden of return values, and it does enumerate all 17 output fields plus the decision logic (coverage arithmetic and attestation cadence). It also covers execution modes and data handling. The remaining gap is that it never explains the relationship to the near-duplicate sibling tool, which matters for a compute node in this large a catalog.

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 compute, parent_hashes, parent_tool_ids, the policy_parameters nested object, and the two required keys (attestation_present, examiner_registered). The description adds nothing about input semantics — it lists output fields, several of which (attestation_date, period_end_date, report_period) mirror input keys, which if anything adds ambiguity about direction. Baseline 3 is correct.

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 summary sentence names a specific verb and resource: it checks a monthly PPSI reserve disclosure against two statute-derived GENIUS Act S.394 §4 requirements (1:1 coverage arithmetic and attestation presence/timeliness). That is far more concrete than the title alone. However, the sibling list contains check_genius_reserve_disclosure, a near-identical name, and the description never distinguishes the two, so an agent cannot tell which one to pick from this text.

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 scope (monthly PPSI reserve disclosures under GENIUS Act §4) implies when the tool applies, and the note to re-verify against final-rule text is a useful caveat. But there is no explicit when-to-use/when-not guidance and no routing to check_genius_reserve_disclosure, check_mica_reserve_disclosure, precheck_reserve_attestation, or verify_reserve_proof despite heavy overlap.

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

check_gpai_code_conformanceGPAI Code of Practice ConformanceC
Read-onlyIdempotent
Inspect

GPAI Code of Practice Conformance: OpenChainGraph compute node (compliance_mandate). 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-174-nist-ai-rmf-function-mapper. Output feeds: art-176-ai-governance-readiness-diagnostic. Open at: https://ainumbers.co/chaingraph/art-175-gpai-code-of-practice-conformance.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: Check GPAI provider obligations under EU AI Act Art. Outputs: base_conformant, base_gaps, base_score, code_of_practice_signed, is_gpai_provider, is_systemic_risk, overall_score, systemic_gaps, systemic_risk_conformant, systemic_score. Output schema: call describe_tool("check_gpai_code_conformance").

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". Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, the description discloses real behavior: deterministic server-side compute on Cloudflare Workers with a 'browser' delegation fallback URL, transient processing with no storage/logging, and export of an AP2 artifact carrying execution_hash for provenance. These are meaningful traits an agent could not infer from the annotations or schema, though the value is diluted by template boilerplate.

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?

The purpose is buried at the end rather than front-loaded, and the body is dominated by reusable platform boilerplate (compute binding, Workers hosting, FV-status receipt URL with a 64-character hash, upstream/downstream artifact IDs). A large share of sentences are shared template text rather than tool-specific information.

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

Completeness3/5

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

With no output schema, listing the outputs (base_conformant, base_gaps, systemic_risk_conformant, etc.) is useful, and the chaining contract is stated. However, it never says what a 'policy_parameters' payload must contain for a GPAI provider/systemic-risk assessment, which is the one input an agent must actually construct.

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 carries compute enum, parent_hashes/parent_tool_ids pairing, and policy_parameters semantics. The description only restates the compute modes and gestures at chaining ('consumes upstream artifacts from art-174-...') without adding argument-level meaning, so the baseline 3 applies.

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

Purpose3/5

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

The actual purpose appears only in the trailing 'Summary: Check GPAI provider obligations under EU AI Act Art.' line and is truncated mid-citation (no article number given), while the opening sentence just restates the name plus infrastructure framing ('OpenChainGraph compute node (compliance_mandate)'). The GPAI/systemic-risk scope does distinguish it somewhat from siblings like assess_ai_act_conformity, but the differentiation is incidental rather than stated.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus the many neighbouring AI Act tools (assess_ai_act_conformity, map_ai_act_procurement_clauses, run_ai_act_highrisk_fit, classify_agentic_ai_risk). The only guidance is the generic 'Use synthetic or anonymised inputs only' note, which is about data hygiene rather than tool selection.

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

check_icm_quorum_forgery_riskICM Quorum Forgery ClassifierB
Read-onlyIdempotent
Inspect

ICM Quorum Forgery Classifier: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-494-icm-quorum-forgery-classifier.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: Computes the smallest set of a source Avalanche L1's validators that could jointly sign an Interchain Messaging (ICM / Avalanche Warp Messaging) message the receiving L1 would accept: sorts the caller-transcribed stake weights descending, prefix-sums them, and returns the count at which the recei... Outputs: colluding_share_pct, colluding_stake_weight, meets_floor, message_class, min_colluding_floor, min_colluding_validators, quorum_pct, quorum_pct_valid, quorum_reachable, rationale, source_l1_label, stake_hhi, total_stake_weight, total_validators. Output schema: call describe_tool("check_icm_quorum_forgery_risk").

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: message_class, min_colluding_floor, quorum_pct, source_l1_label, validator_weights. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower, and the description still adds real context: inputs are processed transiently and not stored or logged, gpu:true nodes always delegate to the browser, and execution emits an AP2 artifact with execution_hash. This is consistent with readOnlyHint=true rather than contradicting it. It stops short of describing failure modes or what happens when quorum is unreachable.

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?

The purpose is not front-loaded; the first two sentences are infrastructure boilerplate about Cloudflare Workers kernels, followed by a long FV-status path and a URL. The one sentence that explains the actual algorithm is cut off mid-word, and the trailing output field list adds bulk without adding decision value.

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

Completeness3/5

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

There is no output schema, so the description's field list (colluding_share_pct, stake_hhi, quorum_reachable, etc.) is legitimately useful, and the transient-processing/compute-mode disclosure covers the operational model. But because the core computation sentence is truncated, an agent cannot fully verify what the return value represents — notably the condition under which quorum_reachable is false.

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%, so the baseline is 3; compute, parent_hashes and parent_tool_ids are fully documented in the schema. The description adds one useful nugget — that validator_weights are caller-transcribed stake weights that get sorted and prefix-summed — but says nothing about the required policy_parameters keys (quorum_pct, min_colluding_floor, message_class) or the "unknown keys are refused" behavior is only in the schema.

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?

Once the boilerplate is cleared, the description states a specific computation: the smallest set of a source L1's validators that could jointly sign an ICM message the receiving L1 would accept, via descending stake sort and prefix sum. That is distinctive against all siblings (no other quorum-forgery tool exists). However, the key sentence is truncated mid-word ("the recei...") and the actual purpose is buried behind three sentences of compute-node metadata.

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

Usage Guidelines2/5

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

There is no when-to-use/when-not guidance and no named alternative among the ~400 siblings (e.g. classify_avax_permissioning_controls or assess_restaking_risk). The only usage constraint given is "Use synthetic or anonymised inputs only" plus the compute-mode selection, which is operational rather than selection guidance.

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

check_ifrs17_risk_adjustmentIFRS 17 Risk Adjustment CheckerA
Read-onlyIdempotent
Inspect

IFRS 17 Risk Adjustment Checker: OpenChainGraph compute node (compliance_mandate). 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-178-ifrs17-csm-rollforward-validator. Open at: https://ainumbers.co/chaingraph/art-179-ifrs17-risk-adjustment-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: Check IFRS 17 risk-adjustment (RA) disclosure completeness: validates technique (VaR/CTE/CoC/other per IFRS 17 para 119b), confidence-level disclosure for VaR and CTE techniques, positive RA amount, and onerous-contract loss-component recognition (IFRS 17 para 47-50). Outputs: confidence_disclosed, confidence_level_pct, disclosed, gaps, loss_component_recognized, onerous_contracts_identified, onerous_properly_handled, ra_amount, ra_valid, technique, technique_ok. Output schema: call describe_tool("check_ifrs17_risk_adjustment").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, closed-world), and the description adds genuinely new behavior: deterministic kernel-based computation, compute:"auto" vs "browser" delegation semantics, transient processing with no storage/logging, a synthetic-inputs-only constraint, and export of an AP2 artifact carrying execution_hash for chain provenance. Those are things the annotations do not tell you. It doesn't state output volume or failure modes, 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.

Conciseness2/5

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

Badly structured: it opens with a tautological restatement of the title plus "Deterministic OpenChainGraph compute node" immediately after "OpenChainGraph compute node," then repeats the compute-mode rules already given in the schema, and embeds a 64-character FV-status receipt URL. The genuinely useful content — the checks, upstream artifact, and output field list — is pushed to the very end, so the description is not front-loaded.

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?

For a deterministic compute node with no output schema, the description is reasonably complete: it enumerates the twelve output fields (ra_valid, technique_ok, confidence_disclosed, onerous_properly_handled, gaps, etc.), declares the upstream chaining artifact, and documents compute modes and privacy handling. What is missing is any indication of what the policy_parameters.risk_adjustment input must contain, which is the one gap an agent could actually stumble on.

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 all four parameters are already documented in the schema, and the description largely restates the compute-mode text verbatim rather than adding meaning. The one substantive input, policy_parameters.risk_adjustment, is opaque in both schema and description — neither says which fields (technique, confidence_level, ra_amount, onerous contracts) are expected, though the summary's check list hints at them. Baseline 3 is correct.

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 gives a specific verb+resource: it checks IFRS 17 risk-adjustment disclosure completeness, naming exactly which checks (technique per para 119b, confidence-level disclosure for VaR/CTE, positive RA amount, onerous-contract loss component per para 47-50). It also implicitly separates itself from siblings like validate_ifrs17_csm_rollforward and track_ifrs17_loss_component_rollforward by declaring it consumes the art-178 CSM-rollforward-validator artifact. The purpose is buried at the end of heavy boilerplate, but once found it is unambiguous.

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?

No explicit when-to-use/when-not statement or named alternative. The only usage signal is "Consumes upstream artifacts from: art-178-ifrs17-csm-rollforward-validator," which implies it should be run downstream of that validator, and the FV-status pointer implies a verification workflow. That is suggestive rather than directive — an agent must infer ordering and has no guidance on when a different IFRS 17 sibling is the better choice.

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

check_iolta_three_way_reconciliationIOLTA Three-Way Trust ReconciliationB
Read-onlyIdempotent
Inspect

IOLTA Three-Way Trust Reconciliation: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-566-iolta-three-way-reconciliation.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: Recomputes the monthly IOLTA/client-trust three-way close every small law firm already does by hand in a spreadsheet: the bank statement (adjusted for caller-declared deposits in transit and uncleared checks) against the trust ledger total against the sum of every per-client ledger balance, all a... Outputs: decision, verdict, statement_period, reconciliation_tolerance_minor, three_way, client_count, client_ledgers, negative_balance_findings, outstanding_items, outstanding_summary, period_boundary_consistent, period_boundary_mismatches, findings, rejected_inputs, scope_note, clause_note. Output schema: call describe_tool("check_iolta_three_way_reconciliation").

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: bank, client_ledgers, outstanding_items, reconciliation_tolerance_minor, statement_period, trust_ledger. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety bar is lower, and the description still adds real value: deterministic server-side computation, browser delegation semantics for gpu:true, transient non-retention of inputs, and an AP2 artifact with execution_hash exported for provenance. What it omits is the behavior of the computation itself — what makes a three-way close pass or fail, and what the tolerance does.

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?

Roughly four sentences of platform boilerplate (compute binding, transient processing, FV-status receipt path) precede the sentence that actually says what the tool does, so it is badly back-loaded. The core Summary is also truncated mid-word, leaving the reader without the full purpose statement.

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

Completeness3/5

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

The description does enumerate the output fields, which compensates for the missing output schema, and it covers execution/retention behavior. But for a nested policy_parameters object whose sub-properties have no schema descriptions, the description supplies no meaning for those inputs, leaving the substantive contract underspecified.

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% for the top-level parameters and the compute enum is spelled out there too, so the baseline of 3 applies. The description does not explain the policy_parameters substance (bank, trust_ledger, client_ledgers, outstanding_items), and those nested properties carry empty schemas, so a little more semantic gloss would have earned a 4.

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 Summary sentence names a specific verb and resource: recomputing the monthly IOLTA/client-trust three-way close of bank statement vs trust ledger vs sum of per-client balances. That is far more specific than the name alone. However it never distinguishes itself from adjacent reconciliation siblings (check_safeguarding_reconciliation, attest_daily_reconciliation, check_nway_balance_closure), and the summary cuts off mid-clause ('all a...').

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative-tool routing appears. The compute-mode paragraph explains execution placement, not task selection, and the description never says which reconciliation tool to pick over its many siblings. The only usage constraint present is the input handling note ('use synthetic or anonymised inputs only').

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

check_irrbb_csrbb_scopeIRRBB CSRBB Scope CheckerA
Read-onlyIdempotent
Inspect

IRRBB CSRBB Scope Checker: OpenChainGraph compute node (compliance_mandate). 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-186-irrbb-standardised-approach-mapper. Output feeds: art-188-irrbb-disclosure-readiness-diagnostic. Open at: https://ainumbers.co/chaingraph/art-187-irrbb-csrbb-scope-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: Identify Credit Spread Risk in the Banking Book (CSRBB) scope per EBA Guidelines on IRRBB and CSRBB (EBA/GL/2022/14): instruments held at fair value whose credit-spread risk is not fully captured by credit-risk or IRRBB frameworks (FVOCI/AFS bond books, fair-valued loans, liquidity-buffer bonds)... Outputs: csrbb_conformant, csrbb_included_in_icaap, csrbb_methodology_defined, gaps, in_scope, in_scope_amount. Output schema: call describe_tool("check_irrbb_csrbb_scope").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds meaningful behavioral context beyond that: compute modes, transient non-retention of inputs, synthetic-input guidance, and AP2 artifact export with execution_hash for provenance. It does not contradict 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.

Conciseness2/5

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

The actual purpose is buried near the end, after generic OpenChainGraph compute-node boilerplate, privacy language, artifact chaining, and a long FV-status URL. The content is informative but not front-loaded and contains substantial repetition about compute behavior.

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?

For a complex compliance compute node, the description covers chain position, compute behavior, privacy, artifact provenance, and output field names even though no output schema exists. Remaining gaps are minor, mainly that policy_parameters semantics are left to the schema.

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 all four parameters, including compute modes and parent hash chaining. The description explains compute:"auto"/"browser" behavior but adds little about policy_parameters or parent_tool_ids beyond what the schema provides; baseline 3 is appropriate.

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 description states a specific verb and resource: "Identify Credit Spread Risk in the Banking Book (CSRBB) scope per EBA Guidelines." It also names upstream and downstream artifacts, which helps place it in a chain, but it does not explicitly distinguish the tool from nearby IRRBB siblings such as map_irrbb_standardised_approach or run_irrbb_disclosure_fit.

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 implied through chain context: "Consumes upstream artifacts from: art-186-irrbb-standardised-approach-mapper. Output feeds: art-188-irrbb-disclosure-readiness-diagnostic." However, the description never explicitly says when to use this tool versus sibling scope, mapping, or disclosure tools.

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

check_iso20022_pqc_readinessSWIFT / ISO 20022 PQC Readiness CheckerA
Read-onlyIdempotent
Inspect

SWIFT / ISO 20022 PQC Readiness Checker: OpenChainGraph compute node (compliance_mandate). 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-85-pqc-timeline-fit-diagnostic, 500-hndl-quantum-risk-scorer. Output feeds: cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-87-iso20022-pqc-readiness-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: Scores SWIFT/ISO 20022 PQC readiness with BAH signature-bloat sizing per the BIS Project Leap Phase 2 model (ML-DSA ~12.9x RSA payload at BAH level). Outputs: affected_message_types, algorithm_refs, bis_leap_bloat_factor, bis_leap_ref, bloat_factor, current_sig_bytes, hndl_priority_ref, new_message_size_bytes, new_sig_bytes, note, readiness_score, reference_version, size_breach. Output schema: call describe_tool("check_iso20022_pqc_readiness").

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". Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds substantive context: deterministic compute node, server/browser delegation behavior, transient non-stored processing, synthetic-input guidance, AP2 artifact with execution_hash, and FV-status snapshot. There is no contradiction with 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.

Conciseness2/5

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

The core purpose is buried after node metadata, compute-mode details, artifact IDs, URL, and a long FV hash. The output list is useful, but the description is a wall of text with repetition and poor front-loading; the summary sentence should come first.

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?

For a complex compute node with no output schema, the description supplies output field names, execution/provenance behavior, and upstream/downstream artifact links. It still leaves nested policy_parameters and precise output field meanings to the schema or describe_tool, so it is strong but not fully complete.

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 documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description mostly repeats the compute-mode default behavior and does not clarify the nested policy_parameters keys, so the schema carries the parameter semantics.

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 summary states it scores SWIFT/ISO 20022 PQC readiness with BAH signature-bloat sizing per the BIS Project Leap Phase 2 model, which is a specific verb and resource. It does not explicitly contrast with sibling readiness tools such as compute_pqc_deadline_ladder or check_fido_pqc_conformance, so it falls short of 5.

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?

It names upstream artifacts and downstream output, implying pipeline placement, but gives no explicit when-to-use/when-not guidance or alternatives. The compute-mode guidance is about execution mechanics, not tool selection.

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

check_jwks_pinned_directoryJWKS Pinned-Directory CheckA
Read-onlyIdempotent
Inspect

JWKS Pinned-Directory Check: OpenChainGraph compute node (compliance_control). 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-129-webbotauth-signature-verifier. Output feeds: art-130-signature-directory-validator. Open at: https://ainumbers.co/chaingraph/art-609-jwks-pinned-directory-check.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: Confirms a caller-supplied JWKS directory document matches a caller-pinned SHA-256 digest -- sha256(canonicalize(directory_jwks)) === pinned_digest -- before art-130 trusts the document's internal shape. Outputs: computed_digest, pinned_digest, pinned_digest_well_formed, digest_match, key_count. Output schema: call describe_tool("check_jwks_pinned_directory").

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: directory_jwks, pinned_digest. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety bar is pre-cleared; the description still adds real behavior: 'auto' vs 'browser' compute delegation with a browser delegation URL returned, 'gpu:true nodes always delegate', transient processing with no logging/retention, and an 'AP2 artifact with execution_hash'. It stops short of saying what happens when digest_match is false, which is the behavioral detail an agent most needs.

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?

The definition is dominated by reusable boilerplate: a compute-mode paragraph duplicating the schema, a data-retention disclaimer, a long URL, and a raw FV-status file hash string. The one sentence that actually describes the tool is buried near the end, so the payload is neither front-loaded nor free of noise.

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?

For a deterministic check with four parameters, no output schema and full schema coverage, the description supplies enough: the digest formula, the enumerated output fields (computed_digest, pinned_digest, pinned_digest_well_formed, digest_match, key_count), and the upstream/downstream artifact IDs needed for chaining. The generic compute/retention boilerplate inflates it but does not leave a functional gap.

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 a 3 is the baseline for the compute, parent_hashes, parent_tool_ids and policy_parameters fields. The description earns one more by explaining what the two policy parameters mean operationally -- directory_jwks is canonicalized and hashed, pinned_digest is compared against it -- which the schema only lists as untyped string/object properties.

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 description eventually states the operation precisely: 'Confirms a caller-supplied JWKS directory document matches a caller-pinned SHA-256 digest -- sha256(canonicalize(directory_jwks)) === pinned_digest'. It also implicitly distinguishes itself from shape-validating siblings by scoping the job to 'before art-130 trusts the document's internal shape'. However, the opening sentence only restates the title plus a generic 'OpenChainGraph compute node (compliance_control)' label, so the real purpose arrives late and no sibling is named as an alternative.

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 chain context: 'Consumes upstream artifacts from: art-129-webbotauth-signature-verifier' and 'Output feeds: art-130-signature-directory-validator'. That tells an agent where it sits in a pipeline but never says when to call it versus a direct alternative such as validate_signature_directory or verify_webbotauth_signature, and gives no prerequisites about what a pinned digest must be.

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

check_lei_relationship_consistencyLEI Relationship Consistency CheckerB
Read-onlyIdempotent
Inspect

LEI Relationship Consistency Checker: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-600-lei-relationship-consistency.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: Checks four structural invariants over a pasted set of GLEIF Level-2 relationship records for one subject LEI: every startNode and endNode is a syntactically valid LEI (ISO 17442 mod-97, the same check art-246 carries), walking IS_DIRECTLY_CONSOLIDATED_BY edges never revisits a node already on th... Outputs: consistent, cycle_path, deprecated_exception_codes, duplicate_active_triples, exception_table_source, exception_table_version, invalid_node_leis, invariant_results, pii_note, recognized_exception_codes_current, recognized_exception_codes_deprecated, record_count, records_assessed, scope_note, subject_lei, subject_lei_valid, unrecognized_exception_codes, violation_count, violations. Output schema: call describe_tool("check_lei_relationship_consistency").

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: relationships, subject_lei. Unknown keys are refused.

TDQS

B3.2/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 the safety profile is covered. The description still adds real value beyond them: transient non-stored/non-logged processing, the auto/server/browser compute binding and gpu:true delegation, and an AP2 artifact export with execution_hash for provenance. Deduct one point only for the boilerplate-heavy delivery.

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?

The opening sentence restates the name and title, and the body front-loads infrastructure boilerplate (Cloudflare Workers kernels, an FV-status receipt URL, an artifact provenance claim) before the actual purpose. The core invariant list is truncated mid-word, so space was spent on filler at the expense of the substantive content.

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

Completeness3/5

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

With no output schema, listing the outputs (consistent, cycle_path, violations, invariant_results, subject_lei_valid, etc.) is genuinely useful and fills a real gap. However, the four invariants the agent is being asked to have checked are cut off, and this is a nested-object parameter tool with rich compute behavior, so the definition falls short of fully complete.

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%, so compute, parent_hashes, parent_tool_ids, and policy_parameters are all documented in the schema. The description restates the compute-mode semantics and the required keys (relationships, subject_lei) but adds no syntax or format detail beyond the schema, 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?

The Summary names a specific verb and resource: it checks four structural invariants over GLEIF Level-2 relationship records for one subject LEI, including ISO 17442 mod-97 node validation. However, the enumeration of invariants is truncated mid-sentence ('never revisits a node already on th...'), and nothing distinguishes it from near siblings like lei_kyb_check, lint_lei_payment_binding, or digest_gleif_snapshot.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus the other LEI/GLEIF tools in the sibling list, and no exclusions or prerequisites. The only usage constraint given ('Use synthetic or anonymised inputs only') is an input-safety rule, not selection guidance.

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

check_license_compatibilityLicense Compatibility CheckerB
Read-onlyIdempotent
Inspect

License Compatibility Checker: OpenChainGraph compute node (compliance_mandate). 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-203-embedded-license-selector, art-198-cross-license-rights-comparator. Output feeds: art-205-license-terms-assembler. Open at: https://ainumbers.co/chaingraph/art-204-license-compatibility-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: Checks whether a child license can derive from a parent asset license. Outputs: checks, child_license, compatible, disclaimer, parent_license, reason_codes, required_child_license, spdx_satisfies. Output schema: call describe_tool("check_license_compatibility").

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: child_license, parent_license. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful context about compute delegation, transient input processing, synthetic-input requirements, and AP2 artifact export.

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?

The description is cluttered with redundant boilerplate, repeated compute-node framing, and an FV-status URL before reaching the actual purpose. The core function appears near the end rather than being front-loaded.

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

Completeness3/5

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

The description provides upstream/downstream context and lists output field names, but it does not explain the semantics of outputs such as reason_codes or spdx_satisfies. With no output schema, some interpretation burden remains on the agent.

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 parameter meanings are already well documented in the input schema. The description does not add significant parameter-level semantics beyond what the schema provides.

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 description clearly states the specific operation: "Checks whether a child license can derive from a parent asset license." This is a distinct verb and resource pair, though the description does not explicitly differentiate it from sibling license-related tools.

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 description gives pipeline context by naming upstream artifacts it consumes and the downstream artifact it feeds. However, it does not explicitly say when to use this tool versus alternatives such as compare_rights_matrix or verify_license_election.

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

check_linea_l2_finality_windowLinea L2 Finality Window ClassifierB
Read-onlyIdempotent
Inspect

Linea L2 Finality Window Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-290-check-linea-l2-finality-window.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: Classifies a tokenized-deposit transfer’s finality risk given L2-batch to L1-settlement timing: soft (unsubmitted), batched (submitted, not yet final), or l1_final tier, reorg-window risk, and a safe-to-release verdict against a corridor policy cutoff. Outputs: corridor_cutoff, draft_pinned, finality_tier, rationale, reorg_window_risk, safe_to_release. Output schema: call describe_tool("check_linea_l2_finality_window").

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: asset_type, batch_submission_status, corridor_cutoff, l1_finalization_status, l2_block. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds real behavioural context on top: deterministic kernel computation, the auto/server/browser compute binding with browser delegation for gpu:true, transient non-retained processing, and an exported AP2 artifact carrying execution_hash. The FV-status file is also disclosed as a snapshot rather than a subscription.

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?

The actual purpose is buried behind several sentences of infrastructure boilerplate (compute binding, retention policy, AP2 export, FV-status URL), and the operative summary only appears near the end after the word 'Summary:'. 'OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.' is a redundant restatement.

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

Completeness3/5

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

With no output schema, the description usefully enumerates the six output fields (finality_tier, reorg_window_risk, safe_to_release, corridor_cutoff, draft_pinned, rationale), which covers return values. However, it leaves unclear what the untyped policy_parameters values should look like and how reorg-window risk is decided, which matters for a decisioning tool with a nested object input.

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 compute, parent_hashes/parent_tool_ids and the policy_parameters set, making 3 the baseline. The description adds only modest meaning beyond that — it maps corridor_cutoff and the L1/L2 timing fields to the finality tiers conceptually, but gives no value formats or ranges for the untyped nested properties.

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 'Summary:' sentence gives a specific verb and resource: it classifies a tokenized-deposit transfer's finality risk from L2-batch to L1-settlement timing, and names the three tiers (soft/batched/l1_final) plus the safe-to-release verdict. That distinguishes it from generic siblings such as classify_settlement_finality by naming Linea L2 explicitly, though it never states which sibling to prefer.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance relative to the many neighbouring finality tools (check_cash_leg_finality, classify_ledger_consensus_finality, classify_bold_challenge_finality, classify_settlement_asset_finality). The only usage constraint given is 'Use synthetic or anonymised inputs only', which is a data-handling rule, not tool selection.

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

checklist_step_receiptMint a hash-chained checklist step receiptAInspect

Completes ONE step of a checklist/SOP run and returns its OCG v0.4 step receipt: execution_hash chains to prev_step_receipt_digest (pass the previous step's execution_hash, or omit for step 0). A blocking-gate step with evidence_requirement != "none" and no evidence supplied is refused (the caller enforces step order; this tool enforces the evidence requirement per step). Call once per step in order, then pass the full ordered list of returned receipts to checklist_verify_run to check the chain and mint the run receipt.

NameRequiredDescriptionDefault
stepYesThe step object from the definition's steps[] array being completed.
evidenceNoEvidence payload, e.g. { text_digest }, { file_sha256 }, or { attestation_digest }. Required unless evidence_requirement is "none".
timestampYesISO 8601 completion timestamp (caller-supplied for determinism).
step_indexYesZero-based index of this step in the definition.
completer_keyNoIdentifier of who/what completed the step (e.g. an agent id). Never real PII.
definition_digestYesThe definition_digest from checklist_validate_definition.
prev_step_receipt_digestNoexecution_hash of the previous step's receipt. Omit for the first step in the run.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare non-read-only, non-idempotent, non-destructive, closed-world; the description adds behavior beyond that: a blocking-gate step with evidence_requirement != 'none' and no evidence is refused. That refusal path and the hash-chaining contract are exactly the context an agent needs to avoid a failed call. It stops short of describing retry semantics for a non-idempotent mint, 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 sentences, no filler, with the completion action and return value front-loaded before chaining and refusal mechanics. The parentheticals make the second sentence dense, but every sentence carries distinct operational information.

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?

For a 7-parameter tool with a nested step object and no output schema, the description covers the return artifact (OCG v0.4 step receipt containing execution_hash) and its downstream consumer. It does not enumerate the receipt's remaining fields, which is acceptable since the only documented use is passing receipts to checklist_verify_run.

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 meaning beyond it: prev_step_receipt_digest is defined functionally as the previous step's execution_hash with a step-0 exception, and the evidence parameter's conditional requirement is stated in prose. The definition_digest link to checklist_validate_definition is also clarified by context.

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 ('Completes ONE step of a checklist/SOP run and returns its OCG v0.4 step receipt') with explicit scope (one step, per-run). It is clearly separable from checklist_validate_definition (pre-run) and checklist_verify_run (post-run), which are the only related siblings.

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?

Gives explicit sequencing: 'Call once per step in order,' how to link steps ('pass the previous step's execution_hash, or omit for step 0'), and what to do next ('pass the full ordered list of returned receipts to checklist_verify_run'). It also clarifies the division of responsibility — caller enforces step order, tool enforces evidence per step.

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

checklist_validate_definitionValidate a checklist/SOP definitionA
Read-onlyIdempotent
Inspect

Validates a checklist or SOP definition JSON against the CHECKRUN-1 schema (definition_id, title, semver version, non-empty steps[] each with step_id/title/instruction/evidence_requirement (none|text|file-digest|attestation)/gate (blocking|advisory)). Returns valid:true/false plus a field-by-field error list. Pair with checklist_step_receipt to run the definition headlessly.

NameRequiredDescriptionDefault
definitionYesThe checklist/SOP definition object to validate.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds valuable behavioral detail by stating it returns 'valid:true/false plus a field-by-field error list' and enumerates the schema constraints being checked, which is context beyond 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?

The description is front-loaded with the core validation purpose and schema name, then packs necessary field and return details into a dense but efficient two-sentence block. Every sentence contributes.

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?

There is no output schema, but the description explains the return shape ('valid:true/false plus a field-by-field error list'). Combined with the schema constraints and the sibling pairing hint, an agent has everything needed to invoke and interpret the tool.

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?

The schema has 100% description coverage for the single 'definition' parameter but only describes it generically as an object. The description compensates by enumerating the expected CHECKRUN-1 fields (definition_id, title, semver version, steps[], evidence_requirement enums, gate enums), adding substantial meaning beyond the schema.

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?

The description states a specific verb and resource ('Validates a checklist or SOP definition JSON') and names the exact schema ('CHECKRUN-1'). It is clearly distinguishable from siblings like checklist_step_receipt and checklist_verify_run, which perform different actions.

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?

The description gives a clear usage context by saying to 'Pair with checklist_step_receipt to run the definition headlessly', implying it is a pre-execution validation step. However, it does not explicitly state when not to use it or contrast it directly with checklist_verify_run.

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

checklist_verify_runVerify a checklist run's hash chain and Merkle rootA
Read-onlyIdempotent
Inspect

Recomputes and checks a checklist run: every step receipt's execution_hash, the hash-chain link between consecutive steps, and (if a run_receipt is supplied) the §20.1 RFC 6962 Merkle root over every step. Returns valid:true/false, per-step ok/hash_ok/link_ok, and broken_at (the zero-based index of the first broken step, or null). Same recompute a human gets from the browser Run Verifier.

NameRequiredDescriptionDefault
run_receiptNoThe run receipt to check the Merkle root and its own execution_hash against. Omit to check only the step chain.
step_receiptsYesOrdered array of step receipts, as returned by checklist_step_receipt.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds real substance on top: the exact computation performed and the shape of the result (valid, per-step ok/hash_ok/link_ok, broken_at). It does not mention behavior on malformed or unordered receipts, which is the remaining gap.

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?

Three dense sentences with zero filler: what is checked, what is returned, and how it compares to the human-facing verifier. The most important information (what gets recomputed) is front-loaded.

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?

There is no output schema, and the description fully compensates by describing the return fields and the null semantics of broken_at. Parameters are covered by the schema and safety by the annotations, so nothing an agent needs to call this correctly 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?

Schema coverage is 100%, so the baseline is 3 and the schema already documents both parameters. The description still adds semantic weight by spelling out the consequence of supplying run_receipt (Merkle root over every step) versus omitting it, clarifying the branching behavior rather than just the field meaning.

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?

Names a specific verb (recomputes and checks) and resource (a checklist run), then enumerates exactly what is verified: each step receipt's execution_hash, the hash-chain link between consecutive steps, and the optional §20.1 RFC 6962 Merkle root. That precision separates it from checklist_step_receipt (which emits receipts) and checklist_validate_definition (which validates the definition rather than a run).

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?

States the key operating condition clearly: the Merkle root is only checked 'if a run_receipt is supplied,' otherwise just the step chain. It also frames itself as the server-side equivalent of the browser Run Verifier, giving the agent a mental model. It stops short of explicitly naming alternatives or exclusions against siblings such as verify_execution_hash.

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

check_mcp_registry_entryMCP Registry Entry Conformance CheckerB
Read-onlyIdempotent
Inspect

MCP Registry Entry Conformance Checker: OpenChainGraph compute node (compliance_mandate). 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-148-mcp-authorization-metadata-validator. Open at: https://ainumbers.co/chaingraph/art-149-mcp-registry-entry-conformance.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: Validate an MCP Registry server.json entry: $schema present, reverse-DNS name format (namespace/name), semver version, and at least one of packages or remotes populated. Outputs: entry_valid, has_packages, has_remotes, missing, name_ok, schema_ok, version_ok. Output schema: call describe_tool("check_mcp_registry_entry").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behaviour, and the description adds genuinely useful context beyond that: transient processing with no storage or logging, the recommendation to use synthetic inputs, compute-mode/delegation semantics, and the emission of an AP2 artifact with execution_hash. These are behavioural traits the annotations do not convey.

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?

The actual purpose is buried at the end of a long preamble of ChainGraph boilerplate, including a marketing URL and a 64-character FV-status hash. 'Deterministic OpenChainGraph compute node' is stated twice, and much of the compute-mode text duplicates the schema verbatim.

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

Completeness3/5

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

With no output schema, the description helpfully enumerates the seven output fields and states the input validation rules, which covers the core need. However, it never specifies the structure of the `entry` payload to be validated nor distinguishes this checker from its sibling validators, leaving real gaps for a 4-parameter nested-input tool.

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 compute, parent_hashes, parent_tool_ids and policy_parameters, and the description largely restates the compute-mode text. It does not clarify the shape of the critical `entry` object (typed as an empty schema), which is the actual input being validated, so it adds little beyond the schema.

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 final sentences state a specific verb and resource plus the exact validation rules: '$schema present, reverse-DNS name format (namespace/name), semver version, and at least one of packages or remotes populated', and enumerate output flags. The purpose is precise but not differentiated from near-identical siblings such as validate_mcp_server_json, lint_mcp_server_conformance, or validate_mcp_authorization_metadata.

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

Usage Guidelines2/5

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

No guidance on when to choose this over the many sibling validators (validate_mcp_server_json, lint_mcp_server_conformance, validate_mcp_authorization_metadata). The only routing information is the upstream artifact reference (art-148) and compute-mode instructions, which are about execution mechanics, not tool selection.

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

check_mica_register_presenceMiCA Register Presence CheckB
Read-onlyIdempotent
Inspect

MiCA Register Presence Check: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-602-mica-register-presence-check.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: Answers one question about a pasted extract of an ESMA MiCA public register: was a named entity present in that snapshot on the date the reader captured it? Outputs: register_type, register_label, entity_identifier, retrieval_date, register_source_ref, register_snapshot_digest, snapshot, search, match_found, matched_row, matched_rows, match_count, verdict, verdict_unavailable_reason, judgment_required, rationale, not_proven, fence. Output schema: call describe_tool("check_mica_register_presence").

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: register_type, entity_identifier, register_extract, retrieval_date. Unknown keys are refused.

TDQS

B3.2/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), so the description's job is to add context it cannot get elsewhere — and it does: inputs are transiently processed on Cloudflare Workers, not stored or logged; compute mode selection and browser delegation behaviour; an AP2 artifact with execution_hash is exported for chain provenance; and the offline-verifiable FV-status snapshot. It does not explain the meaning of the verdict fields (verdict, judgment_required, not_proven, fence), which is a real behavioural gap for a decision tool.

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?

Badly back-loaded: compute-node restatement ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.'), a full FV-status hash and URL, and a describe_tool pointer all precede the one sentence that says what the tool does. The 20-field output list is enumerated inline in a way that will not help an agent decide anything.

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

Completeness3/5

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

The core question, privacy posture, provenance export, and output field names are present, so an agent can call it. But with no output schema and no sibling differentiation, the definition leaves the agent unable to choose this over other MiCA tools or to interpret verdict / not_proven / fence without a second describe_tool round-trip.

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%, including the nested policy_parameters and the required keys (register_type, entity_identifier, register_extract, retrieval_date), so the baseline is 3. The description text adds nothing about parameter formats, matching semantics, or the delimiter/header_row/match_column/case_sensitive controls, leaving the schema to carry all of it.

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 Summary sentence states a specific, checkable question: was a named entity present in a pasted ESMA MiCA public register extract on the date the reader captured it. That is a clear verb + resource. It does not differentiate itself from MiCA siblings (check_mica_reserve_disclosure, run_mica_casp_fit, scope_mica_token_and_service), and the purpose is buried two-thirds of the way down behind compute-node boilerplate.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no named alternative among the many MiCA-adjacent siblings. The only usage-adjacent instruction is 'Use synthetic or anonymised inputs only', which is an input constraint, not a selection rule.

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

check_mica_reserve_disclosureCheck MiCA Reserve DisclosureB
Read-onlyIdempotent
Inspect

Check MiCA Reserve Disclosure: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-512-check-mica-reserve-disclosure.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: Checks a token issuer's published reserve disclosure, the amount in circulation and the value and composition of the reserve, against the composition, concentration, segregation and publication-cadence terms the reader supplies. Outputs: as_of, cadence, composition, coverage, disclosure_ref, fence, issuer_id, judgment_required, not_proven, rationale, rounding, rules_version, segregation, sign_off, token_type. Output schema: call describe_tool("check_mica_reserve_disclosure").

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: declared_rules, disclosure_dates, reserve_components, rounding, tokens_in_circulation, window_end, window_start. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive and closed-world, so the bar is lower, and the description still adds real context: inputs are processed transiently and not stored or logged, compute:"browser" returns a delegation URL instead of a result, gpu:true nodes always delegate, and the tool exports an AP2 artifact carrying execution_hash for chain provenance. It does not state error/refusal behaviour beyond the schema's 'Unknown keys are refused'.

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 fraction of the text is boilerplate shared across the whole family (compute-binding explanation, transient-processing disclaimer, an external URL and a 64-hex FV-status snapshot path) placed before the one paragraph that actually describes the tool. The substantive Summary is buried mid-description rather than front-loaded, and the output list plus 'call describe_tool(...)' pointer push it further out.

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?

For a nested-schema compute node with no output schema, the description supplies what the agent otherwise couldn't know: the decision being made, the reader-supplied rule inputs, the output field names, and the delegation/transient-processing behaviour. The remaining gap is sibling disambiguation rather than tool-intrinsic information.

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 compute enum, parent_hashes/parent_tool_ids chaining and the policy_parameters required set are already documented in the schema. The description restates the chaining/provenance purpose but adds no format or semantics for individual policy_parameters beyond what the schema carries, 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?

The Summary paragraph names a specific verb and object: checks a token issuer's published reserve disclosure (circulation amount, reserve value/composition) against reader-supplied composition, concentration, segregation and cadence terms. That is materially more specific than the title restated. It stops short of distinguishing itself from near-neighbours like check_genius_reserve_disclosure or verify_reserve_proof, which is why it doesn't earn a 5.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no routing among the many overlapping reserve-check siblings (check_genius_reserve_disclosure, precheck_reserve_attestation, recompute_stablecoin_reserve_3source, verify_reserve_proof). The only usage instruction is an input-hygiene caveat ('Use synthetic or anonymised inputs only'), which is constraint, not selection guidance.

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

check_mt101_coexistence_readinessSwift MT101 Coexistence Readiness DiffC
Read-onlyIdempotent
Inspect

Swift MT101 Coexistence Readiness Diff: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/tools/577-mt101-coexistence-readiness-diff.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.

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". See the tool's manifest for field names.

TDQS

C2.4/5.0
Behavior3/5

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

It does add facts beyond the annotations: inputs are processed transiently and not stored or logged, synthetic/anonymised inputs are required, and the node exports an AP2 artifact with execution_hash for chain provenance. However, much of the text is platform boilerplate (browser delegation URL, FV-status snapshot receipt) rather than behavior specific to this computation, and no error or determinism caveats are given.

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?

It is back-loaded with low-value content: a marketing URL and a long FV-status receipt paragraph including a 64-character hash that no agent needs in order to invoke the tool. Sentences are spent on duplicated compute-mode explanation instead of front-loading the actual purpose.

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

Completeness2/5

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

For a 4-parameter tool with a free-form nested `policy_parameters` object (additionalProperties with no field names) and no output schema, the description should explain what policy inputs this specific readiness diff expects and what the export contains. It defers to "the tool's manifest" and covers only generic platform mechanics, leaving the caller unable to construct a meaningful call.

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 parameters are already documented and the baseline is 3. The description mainly re-explains the `compute` enum that the schema already covers verbatim, and says nothing about parent_hashes, parent_tool_ids, or what belongs in policy_parameters for this tool.

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

Purpose2/5

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

The description restates the title ("Swift MT101 Coexistence Readiness Diff: OpenChainGraph compute node") and labels the category (compliance_mandate) but never states what the diff actually evaluates — which MT101 versus coexistence conditions it checks or what result it produces. An agent learns it is a deterministic compute node, not what the computation is.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus related siblings such as map_mt9xx_to_camt, score_mt_mx_translation_fidelity, or validate_mt700_lc_fields. The only conditional text concerns compute mode routing (auto/server/browser), which is execution mechanics rather than tool-selection guidance.

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

check_muni_arbitrage_spending_exceptionMuni Arbitrage Spending-Exception CheckerB
Read-onlyIdempotent
Inspect

Muni Arbitrage Spending-Exception Checker: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-569-muni-arbitrage-spending-exception-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: Tests whether a tax-exempt bond issue's declared expenditure schedule satisfies one of the three IRC section 148 arbitrage-rebate spending exceptions under Treas. Outputs: as_of_date, clause_note, de_minimis_cap_minor, de_minimis_minor, decision, elected_exception, gross_proceeds_minor, issue_date, milestones, overall_status, reasonable_retainage, rejected_inputs, scope_note, total_expenditures_minor. Output schema: call describe_tool("check_muni_arbitrage_spending_exception").

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: as_of_date, de_minimis_minor, elected_exception, expenditure_schedule, gross_proceeds_minor, issue_date, reasonable_retainage. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive/closed-world, so the description needn't restate safety. It adds genuinely new behavior: server-side vs browser delegation semantics, transient non-retained processing, the 'synthetic or anonymised inputs only' constraint, and an exported AP2 artifact carrying execution_hash for provenance — all consistent with 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.

Conciseness2/5

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

The actual purpose appears only after several sentences of ChainGraph compute-binding, retention, and FV-status-URL boilerplate, and the outputs list plus a describe_tool pointer pad the tail. The substantive content is small but is not front-loaded, forcing the agent to read past infrastructure text to learn what the tool does.

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

Completeness3/5

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

With no output schema, the description does enumerate the return fields (decision, overall_status, milestones, rejected_inputs, etc.) and discloses provenance/data-handling behavior, which is helpful. It is still thin on how the exception determination is made and on the meaning of required policy_parameters, leaving the agent to call describe_tool for anything beyond names.

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 baseline is 3, and the description adds little parameter-level meaning beyond the schema's own compute-mode and chaining documentation. It never explains the policy_parameters members (elected_exception values, de_minimis semantics, milestone structure) beyond the informal phrase 'declared expenditure schedule'.

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 'Summary:' sentence gives a specific verb and resource: it tests whether a tax-exempt bond issue's declared expenditure schedule satisfies one of the three IRC §148 arbitrage-rebate spending exceptions. That is precise enough to distinguish this tool from the many other 'check_*' compliance siblings, though the purpose is buried mid-description and the cited authority is truncated ('under Treas.').

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

Usage Guidelines2/5

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

Nothing states when an agent should reach for this checker versus alternatives, nor any prerequisites or exclusions. The only usage-adjacent guidance ('Use synthetic or anonymised inputs only', the compute-mode notes) is generic infrastructure boilerplate shared across nodes, not routing guidance for this decision function.

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

check_nis2_art21_measuresNIS2 Article 21 Gap Checker (Ten Cybersecurity Risk-Management Measures)B
Read-onlyIdempotent
Inspect

NIS2 Article 21 Gap Checker (Ten Cybersecurity Risk-Management Measures): OpenChainGraph compute node (compliance_mandate). 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-141-nis2-entity-scope-classifier. Output feeds: art-143-nis2-penalty-exposure-calculator. Open at: https://ainumbers.co/chaingraph/art-142-nis2-art21-gap-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: Check presence and maturity of all ten NIS2 Article 21(2)(a)–(j) cybersecurity risk-management measures. Outputs: compliance_score, critical_gaps, measures_summary, overall_grade, remediation_priority. Output schema: call describe_tool("check_nis2_art21_measures").

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". Unknown keys are refused.

TDQS

B3.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), and the description adds real substance on top: server-vs-browser compute delegation, transient no-storage processing, and an AP2 artifact export carrying execution_hash for provenance. Not a 5 because the FV-status snapshot paragraph is mostly noise for an invoking agent.

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?

The purpose sentence appears last, labelled 'Summary:', after an opening that repeats the title and then dumps compute binding, privacy, provenance, artifact chaining, and an FV-status hash URL. An agent reading top-down hits five sentences of platform boilerplate before learning what the tool checks.

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

Completeness3/5

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

Good compensation for the missing output schema (compliance_score, critical_gaps, measures_summary, overall_grade, remediation_priority are named) and the compute/privacy behavior is covered. The critical gap is that policy_parameters.measures is an untyped object with no shape guidance, so an agent cannot construct the measure inputs the tool exists to consume.

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 baseline is 3. The description's compute-mode sentences restate what the compute parameter's schema description already says verbatim, and the nested policy_parameters.measures object — the only parameter that actually determines the result — is left undescribed in both places.

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 final sentence states a specific verb and resource: check presence and maturity of all ten NIS2 Article 21(2)(a)–(j) measures. The Article 21 measure-level scope distinguishes it from sibling NIS2 tools such as check_nis2_governance_readiness and score_nis2_supply_chain_diligence, though those siblings are never named.

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?

No explicit when-to-use or when-not-to-use guidance versus alternatives. The upstream/downstream artifact references (art-141 scope classifier in, art-143 penalty calculator out) imply its place in a workflow, but an agent must infer that placement rather than being told.

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

check_nis2_governance_readinessNIS2 Governance Readiness Checker (Art. 20 — Management Body Accountability)C
Read-onlyIdempotent
Inspect

NIS2 Governance Readiness Checker (Art. 20 — Management Body Accountability): OpenChainGraph compute node (compliance_mandate). 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-145-nis2-ict-supply-chain-diligence-scorer. Open at: https://ainumbers.co/chaingraph/art-146-nis2-governance-readiness-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.

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". See the tool's manifest for field names.

TDQS

C2.8/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), and the description usefully adds that inputs are processed transiently and never stored or logged, that compute='browser' returns a delegation URL instead of a result, and that an AP2 artifact with execution_hash is exported. The compute-mode paragraph largely duplicates the schema, but the non-retention and delegation behaviour are genuine additions.

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?

It is front-loaded with a title, but nearly half the text is repetitive boilerplate ('OpenChainGraph compute node' stated twice, a long raw hash path, an FV-status disclaimer) that adds no selection value. The single actionable routing fact — the upstream art-145 dependency — is buried mid-paragraph.

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

Completeness2/5

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

For a readiness-scoring tool with no output schema, the description never indicates what the result looks like (score, control gaps, pass/fail), and the policy_parameters fields an agent must supply are left unspecified. Provenance and compute plumbing are covered, but the information needed to call it correctly is not.

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%, so the compute and parent_hashes/parent_tool_ids semantics are already documented; the description only echoes the compute-mode rules. The decisive gap is policy_parameters, the tool's actual decision input, whose field names are deferred to 'the tool's manifest' — the description does nothing to compensate for that opacity.

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

Purpose3/5

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

The title fragment and 'compliance_mandate' node type imply a NIS2 Art. 20 management-body readiness assessment, but the body never states in a sentence what the check actually evaluates or returns. Nothing distinguishes it from siblings such as check_nis2_art21_measures, classify_nis2_entity, or score_nis2_supply_chain_diligence, so the agent must infer the boundary from the name alone.

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

Usage Guidelines2/5

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

The only usage instruction is 'Use synthetic or anonymised inputs only', which is a data-handling constraint rather than when-to-use guidance. There is no statement of prerequisites (e.g. that an upstream art-145 artifact is expected) and no routing to or away from the many adjacent NIS2 tools.

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

check_nway_balance_closureN-Way Balance Closure CheckA
Read-onlyIdempotent
Inspect

N-Way Balance Closure Check: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-525-nway-balance-closure-check.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: Takes three or more caller-declared balances for the same measure, at the same as-of moment, across named internal systems, and ENFORCES the arithmetic closure identity (A minus B) plus (B minus C) equals (A minus C) within a caller-declared tolerance. Outputs: decision, measure_label, authoritative_system_id, closure_tolerance_minor, system_count, as_of_consistent, as_of_values, systems, pairwise, triples, triple_count, closure_holds, max_abs_residual_minor, break_pairs, declared_disagreements, suspect_systems, rejected_inputs, scope_note, boundary_note. Output schema: call describe_tool("check_nway_balance_closure").

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: authoritative_system_id, closure_tolerance_minor, declared_differences, measure_label, systems. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely non-redundant behaviour: inputs are processed transiently and not stored or logged, synthetic/anonymised inputs only, and each call exports an AP2 artifact carrying an execution_hash for chain provenance. The gpu:true / kernel-registration delegation rules are also disclosed. It does not contradict readOnlyHint, though artifact export is worth naming as side-effect-adjacent.

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

Conciseness3/5

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

The most useful content (the closure-identity summary) is placed after two paragraphs of compute-binding boilerplate and a 64-character FV-status hash URL that does nothing for tool selection. The dense output-field list also runs long. Front-loading the identity statement would substantially improve it.

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?

With no output schema, the description compensates by enumerating the returned fields (decision, closure_holds, max_abs_residual_minor, break_pairs, suspect_systems, etc.) and pointing to describe_tool for the full schema. Combined with the safety annotations, an agent has enough to call this correctly; the main omission is guidance on how tolerance and system-count interact.

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; the description goes beyond it by explaining what policy_parameters semantically contains (balances per named system, measure_label, closure_tolerance_minor, authoritative_system_id, declared differences, as-of consistency) rather than leaving the loosely typed nested object opaque. That materially helps an agent populate a schema whose inner fields are largely untyped.

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 summary states a specific verb and resource: it takes three or more caller-declared balances for the same measure at the same as-of moment and enforces the arithmetic closure identity (A-B)+(B-C)=(A-C) within a declared tolerance. That is far more precise than the name alone. However, the statement of purpose is buried behind compute-mode boilerplate, and the tool is not explicitly distinguished from near-neighbours like check_iolta_three_way_reconciliation.

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 description implies the usage context (three or more systems holding the same measure, one as-of moment, caller-declared tolerance) and explains the compute-mode choice, but it never says when to pick this over the reconciliation-flavoured siblings. No exclusions or prerequisites are stated, so the agent must infer fit from the input shape.

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

check_official_statement_completenessMunicipal Official Statement Completeness CheckerB
Read-onlyIdempotent
Inspect

Municipal Official Statement Completeness Checker: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-400-check-official-statement-completeness.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: Checks a municipal-bond Official Statement disclosure-element checklist (element present, absent, or incomplete) and continuing-disclosure undertaking presence, per MSRB Rule G-32 (primary-offering disclosure via EMMA) and SEC Rule 15c2-12, including the (b)(5)(i)(C) material-event category list. Outputs: asserted_note, completeness_grade, compliant, continuing_disclosure_undertaking_present, disambiguation, element_status, elements_checked, gap_count, gaps, material_event_categories_checked, material_event_gaps, regulatory_basis, table_source, table_version. Output schema: call describe_tool("check_official_statement_completeness").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint:false/openWorldHint:false, so the safety profile is covered, but the description adds genuinely useful behavior: compute:'auto'/'server' runs on Cloudflare Workers for gpu:false kernels while 'browser' returns a delegation URL, inputs are processed transiently and not stored or logged, and an AP2 artifact with execution_hash is exported for chain provenance. The FV-status note clarifies the receipt verifies offline and is a snapshot rather than a subscription. Nothing here contradicts the annotations, and the disclosure of execution mode and non-retention goes meaningfully beyond them.

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?

The payload that matters — the Summary and the Outputs list — sits behind ~120 words of repeated template boilerplate about deterministic compute nodes, Cloudflare Workers, a marketing URL and an FV-status hash. Nothing is front-loaded and several sentences ('Deterministic OpenChainGraph compute node' immediately after naming the chain node) are redundant.

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

Completeness3/5

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

The enumerated outputs (completeness_grade, compliant, continuing_disclosure_undertaking_present, element_status, gaps, material_event_gaps, regulatory_basis, table_version) plus the pointer to describe_tool cover the return side well enough given there is no output schema. However, for a tool whose actual work happens inside the opaque policy_parameters.inputs object, the description never explains what the caller must supply — the checklist elements, the Official Statement text or table reference — leaving the most consequential input undefined.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description's compute-mode passage merely restates what the schema's compute enum description says, and it says nothing about parent_hashes/parent_tool_ids chaining or, critically, what keys belong inside policy_parameters.inputs. Baseline 3 applies when the schema carries the documentation load.

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 'Summary:' sentence gives a specific verb and resource — checking a municipal-bond Official Statement disclosure-element checklist for element present/absent/incomplete plus continuing-disclosure undertaking, under MSRB G-32 and SEC 15c2-12 — which is clearly distinguishable from the sibling set (the only muni-OS completeness checker; check_muni_arbitrage_spending_exception covers a different question). The drawback is that this specific statement is buried after six sentences of generic compute-node boilerplate, so the agent must read far down to learn what the tool actually does.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative-tool guidance at all; the only directive is the input constraint 'Use synthetic or anonymised inputs only,' which is a data-handling rule rather than selection guidance. The compute-mode paragraph explains execution mechanics, not when this check is the right tool versus e.g. check_muni_arbitrage_spending_exception.

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

check_operator_exit_portabilityOperator Exit & Data PortabilityA
Read-onlyIdempotent
Inspect

Operator Exit & Data Portability: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-520-operator-exit-data-portability.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: Evaluates a caller-declared operator-exit and data-portability posture: per data category, whether an export path exists and whether its format is open or proprietary, producing a stranded-category list rather than a coverage ratio. Outputs: as_of, categories, category_count, components, contractual_operator, declared_component_count, dependencies, escrow_description, escrow_exists, exit_readiness_exceptions, note, notice_period_days, notice_period_declared, operator_claim_unsupported, operator_control_ratio_declared, operator_controlled_count, portable, proprietary_format_categories, rationale, rejected_inputs, single_supplier_no_substitute, stranded_categories, stranded_category_count, supplier_controlled_count, transition_assistance_declared, transition_assistance_terms, undeclared_categories, undeclared_component_count. Output schema: call describe_tool("check_operator_exit_portability").

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: as_of, contractual_operator, data_categories, declared_components, dependencies, escrow_arrangements, notice_period_days, transition_assistance_terms. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world, so the safety profile is settled. The description adds genuinely non-derivable context: inputs are processed transiently and not stored or logged, execution is deterministic with a server kernel vs browser delegation split, and an AP2 artifact with execution_hash is exported for chain provenance. Points deducted for the promotional URL and the FV-status snapshot paragraph, which are informational rather than behavioural.

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?

The actual purpose is not front-loaded — four sentences of compute-node, transient-processing and provenance boilerplate precede the Summary that says what the tool evaluates. Compute-mode behaviour is duplicated verbatim in the schema's compute parameter description, and the URL plus FV-status snapshot paragraph are filler. The long output-field enumeration is defensible because no output schema exists, but the overall block is poorly structured and back-loaded.

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?

With no output schema, the description compensates by enumerating all output fields, and it explains the compute path, the refusal of unknown keys, and the decision semantics (stranded categories, not a coverage ratio). Nested policy_parameters remain under-specified, but the essential information needed to call it correctly is present.

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%, including a thorough enum explanation for compute and a required-key list plus "Unknown keys are refused" for policy_parameters, so the schema carries the load and a 3 baseline applies. The description reinforces the compute-mode binding but adds nothing about the individual policy_parameters fields (data_categories, escrow_arrangements, notice_period_days), whose shapes are untyped in the schema.

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 Summary sentence gives a specific verb and resource: it evaluates a caller-declared operator-exit and data-portability posture, per data category, and explicitly notes it produces a stranded-category list rather than a coverage ratio. That is a distinctive, agent-legible purpose. However, it never names or distinguishes itself from related siblings such as check_client_porting or compute_escrow_analysis, and the real purpose statement is buried behind compute-node boilerplate.

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?

There is real usage guidance around compute modes ("auto" vs "server" vs "browser", gpu:true always delegating) and the constraint "Use synthetic or anonymised inputs only", which meaningfully shapes how an agent calls it. The word "caller-declared" also implicitly signals this evaluates declared posture rather than observed reality. But there is no explicit when-to-use/when-not or routing to an alternative tool, so selection guidance is only implied.

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

check_private_student_loan_disclosuresPrivate Student Loan Disclosure & Rescission CheckerB
Read-onlyIdempotent
Inspect

Private Student Loan Disclosure & Rescission Checker: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-405-check-private-student-loan-disclosures.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: Checks a private-education-loan disclosure-element checklist across the three 12 CFR 1026.46-48 stages (application/solicitation, approval, final), the HEOA self-certification-form presence requirement, and computes the 3-business-day right-to-cancel window from a declared final-disclosure date (... Outputs: application_stage, approval_stage, completeness_grade, compliant, disambiguation, elements_checked, federal_idr_note, federal_idr_out_of_scope, final_stage, gap_count, regulatory_basis, rescission, self_certification_present, table_source, table_version. Output schema: call describe_tool("check_private_student_loan_disclosures").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, non-open-world behavior. The description adds meaningful extra context: deterministic server-side or browser compute, transient input processing with no storage/logging/retention, the recommendation to use synthetic or anonymised inputs, and AP2 artifact export with execution_hash for provenance. This goes well beyond what the annotations convey.

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?

The description is bloated with generic compute-node boilerplate and repeats 'Deterministic OpenChainGraph compute node.' The actual purpose is not front-loaded; an agent must read past generic infrastructure text to reach the domain-specific summary. Every sentence does not earn 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?

Given the complexity of the compliance check, the description covers the regulatory stages, the self-certification requirement, the rescission window computation, and lists the output fields. With no output schema present, listing outputs is helpful. Some ambiguity remains around what 'completeness_grade' represents, but overall the description is sufficient to call the tool 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 description coverage is 100%, so the input schema already documents compute mode, parent_hashes, parent_tool_ids, and policy_parameters. The description briefly repeats compute mode distinctions but adds no new syntax or format guidance for the parameters. Baseline 3 is appropriate when the schema does the heavy lifting.

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 'Summary:' sentence clearly states the specific verb and resource: it checks a private-education-loan disclosure-element checklist across three 12 CFR 1026.46-48 stages, HEOA self-certification presence, and a 3-business-day rescission window. This is distinguishable from sibling disclosure tools like check_retail_installment_disclosures, though the purpose is buried after generic compute-node boilerplate.

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

Usage Guidelines2/5

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

The description gives no domain-level guidance on when to use this tool versus alternatives such as check_retail_installment_disclosures or check_reg_e_remittance_disclosure. It only explains compute-mode mechanics (auto vs browser), which is parameter usage guidance rather than tool-selection guidance.

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

check_producer_license_reciprocityNAIC Producer License Reciprocity CheckB
Read-onlyIdempotent
Inspect

NAIC Producer License Reciprocity Check: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-267-check-producer-license-reciprocity.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: Checks NAIC producer license reciprocity for non-resident filing across target states per MDL-218 and NIPR Reciprocity Matrix 2024. Outputs: all_reciprocal, coverage_by_target, invalid_loa_codes, loa_codes, non_standard_states, not_legal_advice, pii_note, regulatory_basis, resident_state, table_source, table_version, target_state_count. Output schema: call describe_tool("check_producer_license_reciprocity").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

The description adds meaningful behavior beyond the annotations: compute modes, browser delegation behavior, transient input processing, a synthetic-data-only warning, and AP2 execution_hash provenance. These are useful operational details for invoking the tool safely, though much of the surrounding text is generic platform boilerplate.

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?

The description is front-loaded with generic compute-node and platform details before reaching the actual purpose. It includes a URL, an FV-status hash path, and repeated OpenChainGraph boilerplate that add little value for tool selection.

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

Completeness3/5

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

The description covers the decision function, output field names, regulatory basis, and compute behavior, which is helpful given the lack of an output schema. However, it leaves the nested policy_parameters semantically underspecified and provides no when-to-use guidance for this complex compliance check.

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 carries the main parameter documentation. The description mentions compute behavior and some output field names like loa_codes, resident_state, and target_state_count, but it does not meaningfully explain the nested policy_parameters beyond what is already visible in the schema.

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 description explicitly states that this tool checks NAIC producer license reciprocity for non-resident filing across target states under MDL-218 and the NIPR Reciprocity Matrix 2024. The purpose is clear, though it is buried after generic OpenChainGraph boilerplate and does not compare itself to nearby license-related siblings.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives. The closest signal is the functional summary about non-resident filing, but there are no exclusions, prerequisites, or named alternative tools.

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

check_purpose_code_requirementISO 20022 Purpose Code Requirement CheckerA
Read-onlyIdempotent
Inspect

ISO 20022 Purpose Code Requirement Checker: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-247-prevalidation-readiness-scorer. Open at: https://ainumbers.co/chaingraph/art-243-purpose-code-requirement-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: Given a beneficiary country and payment amount, determines whether ExternalPurpose1Code (Purp/Cd) or ExternalCategoryPurpose1Code (CtgyPurp/Cd) is mandatory per BIS CPMI d218 jurisdiction profiles (UAE, India, Bahrain, Jordan, China, Malaysia mandate purpose codes). Outputs: category_purpose_code_provided, code_type_required, issues, jurisdiction_reason, jurisdiction_requires_purpose_code, pii_note, purpose_code_compliant, purpose_code_provided, purpose_format_valid, regulatory_basis, required_code_types, swiftgo_accepted_category_codes, swiftgo_amount_ok, swiftgo_category_ok, swiftgo_eligible, swiftgo_max_usd, swiftgo_notes, table_source, table_version. Output schema: call describe_tool("check_purpose_code_requirement").

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: beneficiary_country, category_purpose_code, payment_amount_usd, purpose_code. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

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

Beyond the annotations, the description discloses meaningful behavioral traits: compute-mode routing between server and browser, that gpu:true nodes always delegate, that inputs are processed transiently and not stored/logged/retained, and that it exports an AP2 artifact with execution_hash for chain provenance. This is rich context that helps an agent understand side effects and data handling.

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?

The description is bloated with boilerplate (OpenChainGraph compute-node explanation, a URL, an FV-status path, and a 21-field output list) before reaching the actual purpose. It is not front-loaded, and much of the content is redundant with the schema or the describe_tool output-schema reference.

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?

For a compliance tool with nested inputs and no output schema, the description covers compute behavior, data-retention policy, artifact export, downstream usage, and the output fields. It leaves minor gaps, such as not clarifying why category_purpose_code appears required in policy_parameters even though the tool outputs category_purpose_code_provided, but overall it is sufficient to invoke the tool 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. The description adds domain meaning to the nested policy parameters by mapping purpose_code to ExternalPurpose1Code (Purp/Cd) and category_purpose_code to ExternalCategoryPurpose1Code (CtgyPurp/Cd), and by naming the BIS CPMI d218 jurisdictions that drive the decision.

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 description clearly states a specific verb and resource: it determines whether ExternalPurpose1Code or ExternalCategoryPurpose1Code is mandatory given a beneficiary country and payment amount under BIS CPMI d218 profiles. The actual purpose is buried in a later 'Summary' section rather than front-loaded, and no sibling tool is explicitly named to differentiate it from the many other compliance checkers.

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 implied by the purpose statement—an agent can infer it is used when checking purpose-code requirements for a payment. The description adds a constraint ('Use synthetic or anonymised inputs only') and downstream context ('Output feeds: art-247-prevalidation-readiness-scorer'), but it never explicitly says when to choose this tool over alternatives or when not to use it.

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

check_qm_points_and_feesQM Points and Fees TestB
Read-onlyIdempotent
Inspect

QM Points and Fees Test: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-219-qm-apr-apor-spread. Open at: https://ainumbers.co/chaingraph/art-218-qm-points-and-fees.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: Qualified Mortgage points-and-fees test per Reg Z §1026.43(e)(3). Outputs: effective_date, fr_citation, headroom, limit, limit_fixed, limit_pct, limit_type, loan_amount, note, pass, points_and_fees, regulatory_basis, tier_label, year. Output schema: call describe_tool("check_qm_points_and_fees").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world, but the description adds genuinely useful behavior beyond them: transient processing with no storage/logging, an instruction to use only synthetic or anonymised inputs, browser delegation semantics, and the AP2 artifact with execution_hash exported for provenance. Missing only things like failure modes or what happens when a policy parameter key is unknown (that detail lives in the schema instead).

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

Conciseness3/5

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

The essential content (purpose, output fields, compute behavior) exists, but it is not front-loaded: the real summary appears after two compute-node sentences, and the long FV-status SHA-256 receipt line plus URL consume substantial space for low selection value. The output-field enumeration earns its place because there is no output schema.

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?

With no output schema, listing the returned fields (pass, headroom, limit, limit_pct, limit_type, tier_label, regulatory_basis, etc.) is a real contribution, and the privacy/provenance context round it out. The gap is domain semantics: the description never explains what inputs the test needs or how the fixed vs tiered limit is selected, leaving the agent to infer from parameter names.

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 explains compute, parent_hashes, parent_tool_ids and policy_parameters. The description restates the compute modes (duplicating the enum description) and loosely implies parent_hashes via 'execution_hash for chain provenance', but adds no new semantics for the policy_parameters values (year, loan_amount, points_and_fees) that drive the test.

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 'Summary' sentence gives a specific verb+resource+regulatory anchor: 'Qualified Mortgage points-and-fees test per Reg Z §1026.43(e)(3)', which is far more useful than the title restatement. However, the actual purpose is buried mid-paragraph after compute-node boilerplate, and the description never distinguishes this from nearby siblings such as classify_qm_apr_apor_spread, lookup_reg_z_thresholds, or test_hoepa_high_cost.

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

Usage Guidelines2/5

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

The only when-to guidance concerns the compute parameter ('auto' vs 'browser' vs gpu:true), not when to call this tool versus the many other Reg Z / QM tools in the catalog. 'Output feeds: art-219-qm-apr-apor-spread' hints at pipeline placement but names no alternative and states no exclusion or prerequisite.

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

check_reg_e_remittance_disclosureReg E Remittance Disclosure Consistency CheckB
Read-onlyIdempotent
Inspect

Reg E Remittance Disclosure Consistency Check: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-550-reg-e-remittance-disclosure-check.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: Deterministic recompute of the Reg E Subpart B (12 CFR 1005.31, implementing Dodd-Frank section 1073) remittance disclosure arithmetic identity: amount_received = (send_amount - total_fees) x exchange_rate. Outputs: amount_recipient_disclosed_cents, amount_recipient_recomputed_cents, amount_recipient_recomputed_display, as_of, disclosure_consistent, discrepancy_amount_cents, discrepancy_amount_display, exchange_rate_disclosed_display, exchange_rate_disclosed_e6, note, rationale, regulatory_basis, rejected_inputs, send_amount_cents, total_fees_disclosed_cents. Output schema: call describe_tool("check_reg_e_remittance_disclosure").

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: amount_recipient_disclosed_cents, as_of, exchange_rate_disclosed_e6, send_amount_cents, total_fees_disclosed_cents. Unknown keys are refused.

TDQS

B3.2/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 the description adds genuinely useful behavior beyond them: server-vs-browser delegation semantics, transient processing with no storage or logging, the synthetic-input requirement, and an AP2 artifact carrying execution_hash for provenance. It loses a point because the compute-mode paragraph largely duplicates the schema's own compute description and the FV-status/link material is boilerplate rather than behavior an agent must act on.

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?

The opening repeats itself ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.'), and the compute-mode explanation duplicates the schema verbatim. Two long URLs plus an FV-status receipt discussion precede the actual purpose statement, so the genuinely informative sentence is buried rather than front-loaded.

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

Completeness3/5

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

For a deterministic calculator with no output schema, enumerating return fields is defensible and the regulatory basis and identity are given, which is the core of what an agent needs. But the definition never states the units/scaling of exchange_rate_disclosed_e6 nor what a 'disclosure_consistent: false' result implies for a caller, and the near-duplicate sibling remains unaddressed.

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 carries the parameter burden and a baseline 3 applies. The description adds a little by naming the mathematical role of send_amount_cents, total_fees_disclosed_cents, exchange_rate_disclosed_e6 and amount_recipient_disclosed_cents. It does not explain the _e6 scaling convention or expected units, which is the one thing a caller could plausibly get wrong.

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 summary states a specific verb and resource: a deterministic recompute of the 12 CFR 1005.31 remittance arithmetic identity amount_received = (send_amount - total_fees) x exchange_rate. That is far more than a restatement of the name. However, the sibling set contains a near-identical tool (compute_remittance_disclosure), and the description never distinguishes this 'check' variant from that 'compute' variant, so an agent has no stated basis for choosing between them.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no named alternative, which matters given the duplicate-looking sibling. The only constraint offered is 'Use synthetic or anonymised inputs only', which is a safety caveat rather than routing guidance. Compute-mode text explains parameter values, not selection between tools.

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

check_retail_installment_disclosuresRetail Installment Contract TILA Disclosure CheckerA
Read-onlyIdempotent
Inspect

Retail Installment Contract TILA Disclosure Checker: OpenChainGraph compute node (compliance_mandate). 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-332-build-amortization-schedule, art-324-tvm-npv. Open at: https://ainumbers.co/chaingraph/art-404-check-retail-installment-disclosures.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: Ties declared retail-installment-contract Amount Financed, Finance Charge, and Total of Payments (12 CFR 1026.18) against a REUSED amortization schedule -- compose by feeding build_amortization_schedule's (art-332) output_payload straight in, or by reference via its totals and schedule_digest. Outputs: amortization_provenance, amount_financed, compliant, dealer_participation, disambiguation, finance_charge, regulatory_basis, tie_outs, tolerance_cents, total_of_payments. Output schema: call describe_tool("check_retail_installment_disclosures").

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". Unknown keys are refused.

TDQS

A4/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses that inputs are processed transiently and never stored or logged, that gpu:false nodes run server-side on Cloudflare Workers unless compute:"browser" returns a delegation URL, and that an AP2 artifact with execution_hash is exported for provenance. The FV-status snapshot receipt adds a verify-offline guarantee. None of this contradicts 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.

Conciseness2/5

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

The purpose is buried mid-description behind a title restatement, OpenChainGraph node boilerplate, and a compute-mode paragraph that duplicates the compute enum's schema text nearly verbatim. The FV-status sentence, with a 64-character hash and offline-verification note, earns no place in a tool-selection description. Sizing is inflated and not front-loaded.

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?

With no output schema, listing the outputs (tie_outs, tolerance_cents, compliant, amortization_provenance, regulatory_basis) is genuinely useful, and the upstream artifact IDs plus AP2 export cover provenance. Gaps remain around what 'compliant' means numerically and the shape of the policy_parameters keys, but an agent has enough to call it 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 meaning to the otherwise generic policy_parameters object by naming the fields that must be supplied (Amount Financed, Finance Charge, Total of Payments) and the exact upstream payload/digest shape to pass in. It still does not enumerate the accepted key names or the tolerance_cents default, so it is not exhaustive.

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 summary sentence names a specific verb and resource: it ties declared retail-installment-contract Amount Financed, Finance Charge and Total of Payments against a reused amortization schedule under 12 CFR 1026.18. It also explicitly names its upstream sibling (build_amortization_schedule / art-332), which lets an agent place it in a chain. It is not differentiated from nearby checkers such as check_private_student_loan_disclosures or verify_trid_apr_accuracy, so it stops short of a 5.

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?

Clear composition guidance: feed build_amortization_schedule's output_payload straight in, or reference it via its totals and schedule_digest, plus the constraint to use synthetic or anonymised inputs only. That is actionable context for invocation. There are no exclusions or when-not-to-use conditions against the many sibling disclosure checkers, so it is not a 5.

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

check_safeguarding_reconciliationCASS 15 Safeguarding Reconciliation CheckA
Read-onlyIdempotent
Inspect

CASS 15 Safeguarding Reconciliation Check: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-499-check-safeguarding-reconciliation.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: Compares a UK payment or e-money firm's safeguarding requirement (CASS 15.8.29G) against the components of its safeguarding resource (CASS 15.8.26R) for one caller-declared as-of date, and classifies the arithmetic outcome as reconciled, shortfall, or excess against a caller-declared tolerance. Outputs: as_of_date, citations, component_count, components, currency, difference_direction, difference_display, difference_minor_units, minor_unit_exponent, note, rationale, reconciliation_type, rejected_inputs, ruleset, safeguarding_requirement_display, safeguarding_requirement_minor_units, safeguarding_resource_display, safeguarding_resource_minor_units, subtotals_by_component_type, tolerance_display, tolerance_minor_units, verdict, within_tolerance. Output schema: call describe_tool("check_safeguarding_reconciliation").

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: as_of_date, component_breakdown, currency, reconciliation_type, relevant_funds_total, relevant_funds_total_minor_units, safeguarding_requirement_minor_units, safeguarding_resource_components, tolerance_minor_units. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already establish the read-only, idempotent, closed-world profile, and the description adds material context beyond them: server-side vs browser compute, that inputs are processed transiently and not retained, and that an AP2 artifact with execution_hash is exported. The FV-status snapshot note is marginal but the data-retention and delegation behavior are real additions.

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?

The actual purpose is buried behind compute-binding boilerplate, a documentation URL, and a long FV-status hash path, so the useful sentence is not front-loaded. Several sentences (URL, offline receipt verification) do not earn their place for tool selection.

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?

No output schema exists, but the description enumerates the returned fields (verdict, difference_minor_units, subtotals_by_component_type, within_tolerance, etc.) and points to describe_tool for the full schema, which is adequate for a compute node of this complexity. The main remaining gap is the absence of routing guidance among the many safeguarding/compliance siblings.

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 nested policy_parameters block documents required keys, so the schema carries the load and baseline 3 applies. The description hints at semantics ('caller-declared as-of date', 'caller-declared tolerance') but adds no format or unit detail beyond what the schema already supplies.

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 summary sentence states a precise verb and resource: it compares a CASS 15.8.29G safeguarding requirement against CASS 15.8.26R resource components for one as-of date and classifies the result as reconciled/shortfall/excess. That is genuinely specific. It only fails to name the adjacent siblings (classify_safeguarding_method, build_safeguarding_audit_evidence) so an agent can't route between them from the text alone.

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?

There is a real usage constraint ('Use synthetic or anonymised inputs only') and an implied trigger from the summary, but no explicit when-to-use/when-not statement and no pointer to the alternative safeguarding tools. Usage has to be inferred from the purpose sentence.

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

check_sb53_frontier_scopeSB 53 Frontier Scope CheckerB
Read-onlyIdempotent
Inspect

SB 53 Frontier Scope Checker: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-316-sb53-frontier-scope-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: Routes supplied model compute (FLOPs, as a decimal string above the 2^53 safe-integer range) and developer annual revenue through the California SB 53 Transparency in Frontier Artificial Intelligence Act (eff. Outputs: compute_flops, flop_threshold, is_frontier_model, is_large_frontier_developer, large_developer_revenue_threshold_usd, obligation_set, statute_citation. Output schema: call describe_tool("check_sb53_frontier_scope").

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: annual_revenue_usd, compute_flops. Unknown keys are refused.

TDQS

B3.1/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), and the description adds genuinely new behavior: inputs are processed transiently and not stored or retained, gpu:true nodes always delegate to the browser, and an AP2 artifact with execution_hash is exported for chain provenance. The compute-mode paragraph largely restates the schema's compute parameter, which dilutes rather than extends the disclosure.

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?

The text opens with boilerplate about OpenChainGraph compute nodes and Cloudflare Workers rather than the tool's actual decision function, then interleaves a documentation URL, a 64-character FV-status hash, and a mid-sentence truncation. The trailing output-field list plus "call describe_tool" instruction is redundant overhead on top of an already bloated paragraph.

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

Completeness3/5

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

With no output schema, listing the return fields is valuable, and the privacy/no-retention statement plus chaining parameters cover most of what an agent needs. However, the truncated statute sentence leaves obligation_set and statute_citation semantics undefined, and the nested policy_parameters required keys are only documented inside the schema.

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 earns credit by warning that compute_flops arrives as a decimal string above the 2^53 safe-integer range — a real trap the schema does not surface. parent_hashes/parent_tool_ids chaining semantics are left entirely to the schema.

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

Purpose3/5

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

The core purpose appears only in the second half — "Routes supplied model compute (FLOPs...) and developer annual revenue through the California SB 53... Act" — and that sentence is truncated mid-clause at "(eff.", so what the statute does with those inputs is left dangling. The output list (is_frontier_model, is_large_frontier_developer, obligation_set) partially repairs this, but the agent must reconstruct intent. No sibling differentiation is offered despite dozens of overlapping compliance-scope checkers.

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

Usage Guidelines2/5

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

There is no statement of when to select this tool versus alternatives such as assess_traiga_exposure or classify_ai_system_governance, and no exclusions. The only directive is the safety constraint "Use synthetic or anonymised inputs only," which governs input hygiene rather than tool selection.

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

check_screening_list_coverageScreening List-Coverage CheckerB
Read-onlyIdempotent
Inspect

Screening List-Coverage Checker: OpenChainGraph compute node (compliance_mandate). 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-90-sanctions-screening-fit-diagnostic, art-91-ownership-50pct-aggregator. Output feeds: art-97-sanctions-screening-quality-scorer, cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-92-screening-list-coverage-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: Conformance check: validates a screening config against the required-coverage matrix for EU consolidated + UN + UK Sanctions List (post-OFSI-closure 28 Jan 2026) + OFAC SDN with correct jurisdictional-nexus gating. Outputs: coverage_grade, coverage_pct, missing_lists, nexus_gaps, note, ofsi_migration_note, reference_version, refresh_adequate, refresh_frequency_assessed, required_lists, sectoral_lists_screened. Output schema: call describe_tool("check_screening_list_coverage").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower, and the description still adds real behavior: default server-side compute on Cloudflare Workers, compute:'browser' returning a delegation URL, gpu:true always delegating, transient non-stored inputs, and an AP2 artifact export with execution_hash. This is substantive context beyond annotations, though it is largely generic node boilerplate rather than specific to this check.

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?

Far too much boilerplate: compute-mode rules, retention disclaimers, an FV-status hash URL, and artifact lineage precede the actual purpose, which surfaces only in the final 'Summary' sentence. The genuinely tool-specific content is a small fraction of the text and is not front-loaded.

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

Completeness3/5

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

The tool is complex (nested policy_parameters, compute binding, chaining) and has no output schema, and the description does list the return fields, which compensates partially. However it never explains what config content the coverage check expects, so an agent knows the shape of the result but not how to supply a valid configuration.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates compute's modes but adds no meaning to policy_parameters.config, which is an untyped empty object; baseline 3 applies when the schema carries the load.

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 'Summary' sentence gives a specific verb+resource: validates a screening config against a required-coverage matrix for EU consolidated, UN, UK, and OFAC SDN lists with jurisdictional-nexus gating. Downstream/upstream artifact references (art-90, art-97) and the concrete output field list plausibly separate it from siblings like run_sanctions_screening_fit or score_sanctions_screening_quality, but the useful statement is buried mid-paragraph and no sibling is named directly.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not guidance is given; the reader must infer its position in a pipeline from the 'Consumes upstream' / 'Output feeds' lines. The only actionable constraint is 'Use synthetic or anonymised inputs only', which governs inputs, not tool selection.

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

check_securitization_risk_retentionSecuritization Risk Retention CheckB
Read-onlyIdempotent
Inspect

Securitization Risk Retention Check: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-447-securitization-risk-retention-check.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: EU Securitisation Regulation (EU) 2017/2402 Art.6 and U.S. Outputs: actual_retention_pct, breach_reasons, compliant, jurisdiction, note, qrm_exemption_applied, regulatory_basis, required_retention_pct, retained_amount_musd, retained_interest_hedged_or_sold, retainer_is_sole_purpose_entity, retention_method, retention_method_valid, total_securitized_exposure_musd. Output schema: call describe_tool("check_securitization_risk_retention").

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: all_exposures_qrm_qualified, jurisdiction, retained_interest_hedged_or_sold, retainer_is_sole_purpose_entity, retention_method. Unknown keys are refused.

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description goes further by explaining compute routing ('auto' vs 'browser' delegation, gpu:true always delegating), transient non-retained processing of inputs, and emission of an AP2 artifact with execution_hash for provenance. This is real context beyond the annotations and does not contradict them; the only reservation is that much of it is node-generic boilerplate rather than specific to this check.

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?

The prose is heavily padded with infrastructure boilerplate ('OpenChainGraph compute node' restated twice), a raw FV-status SHA-256 URL, and repeated compute-mode wording that duplicates the schema. The actual regulatory substance is buried mid-paragraph and cut off mid-sentence, so the description is not front-loaded on what matters.

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

Completeness2/5

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

For a nested-policy compliance check with required keys (jurisdiction, retention_method, all_exposures_qrm_qualified, etc.) and no output schema, the description should explain the retention test itself (5% baseline, QRM exemption, valid methods, hedging/sale restriction). Instead the regulatory basis sentence is incomplete, and the output list is delegated to describe_tool, leaving the decision logic undocumented.

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 compute, parent_hashes/parent_tool_ids, and the policy_parameters sub-fields including the required-key list. The description adds no meaning beyond that (it does not explain jurisdiction values, retention_method options, or QRM semantics), 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?

The opening line names a specific verb+resource ('Securitization Risk Retention Check') and ties it to EU Securitisation Regulation 2017/2402 Art.6, which an agent can match to a retention-compliance task. However, the regulatory summary is literally truncated ('Art.6 and U.S.') and nothing distinguishes it from the many other regulatory-check siblings (e.g. check_mica_reserve_disclosure, check_genius_reserve_disclosure).

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

Usage Guidelines2/5

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

There is no statement of when to use this tool, when not to, or which sibling (e.g. check_mica_reserve_disclosure, assess_* fit tools) covers an adjacent case. The only usage-adjacent content is the boilerplate compute-mode guidance and 'Use synthetic or anonymised inputs only', which constrains inputs rather than selection.

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

check_sod_matrixSegregation-of-Duties Matrix CheckerA
Read-onlyIdempotent
Inspect

Segregation-of-Duties Matrix Checker: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-459-sod-matrix-check.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: Evaluates a caller-declared role-assignment set against a caller-declared SoD conflict ruleset for SOX 404 / ICFR access controls. Outputs: clean, conflict_count, conflict_rules_evaluated, conflicts, ruleset_version, users_evaluated, users_with_conflicts. Output schema: call describe_tool("check_sod_matrix").

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: assignments, conflict_ruleset, ruleset_version. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), yet the description still adds meaningful behavior: deterministic computation, server-side execution on Cloudflare Workers vs. a browser delegation URL for compute:"browser", gpu:true always delegating, and that inputs are processed transiently and not stored or logged. It also discloses that an AP2 artifact with execution_hash is exported, which an agent needs to know before chaining.

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?

The opening repeats itself ('OpenChainGraph compute node (compliance_control). Deterministic OpenChainGraph compute node.'), and the actual purpose appears only in the trailing 'Summary:' line after a long URL and a raw FV-status hash. The genuinely useful content is real but is not front-loaded and the hash/URL padding costs readability.

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?

There is no output schema, and the description compensates by enumerating the return fields (clean, conflict_count, conflict_rules_evaluated, conflicts, ruleset_version, users_evaluated, users_with_conflicts). Combined with the compute/provenance behavior, an agent has enough to call it correctly; only the linkage semantics between parent_hashes and parent_tool_ids remain thin.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description restates the compute-mode semantics and the required policy_parameters keys but adds no format, ordering, or validation detail beyond what the schema says (e.g. how parent_hashes must align with parent_tool_ids). Baseline 3.

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 Summary sentence gives a specific verb and resource: 'Evaluates a caller-declared role-assignment set against a caller-declared SoD conflict ruleset for SOX 404 / ICFR access controls.' That is far more precise than the title alone. However, the purpose statement is buried near the end behind compute-node boilerplate, and nothing explicitly separates it from the many sibling check_* control tools.

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?

There is one real usage constraint ('Use synthetic or anonymised inputs only') plus the compute-mode routing rules, which tell the agent how the call will be executed. But there is no when-to-use / when-not-to-use guidance and no named alternative for related control-testing tasks.

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

check_ssi_conformanceSSI Conformance CheckerB
Read-onlyIdempotent
Inspect

SSI Conformance Checker: OpenChainGraph compute node (compliance_mandate). 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-77-t1-settlement-readiness-diagnostic. Output feeds: art-79-settlement-fail-predictor, art-84-settlement-efficiency-kpi. Open at: https://ainumbers.co/chaingraph/art-80-ssi-conformance-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: Lints standing settlement instructions for completeness, staleness, and format (~30%-of-fails root cause). Outputs: clean_records, format_errors, golden_source_coverage_pct, incomplete_records, match_rate, non_golden_source_count, note, records_flagged, reference, staleness_breaches, staleness_threshold_days, total_records. Output schema: call describe_tool("check_ssi_conformance").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive. Description adds substantial context beyond them: server-vs-browser compute delegation, transient non-stored processing, synthetic-input advisory, and AP2 artifact emission with execution_hash. The main deduction is that much of this is generic ChainGraph boilerplate rather than tool-specific 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?

The critical purpose sentence ('Summary: Lints...') is buried near the end behind compute-binding, URL, and FV-status hash boilerplate. This is not front-loaded and contains machinery an agent doesn't need to decide whether to invoke it.

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?

No output schema exists, but the description enumerates the output fields (clean_records, format_errors, staleness_breaches, etc.) and points to describe_tool for the full schema. Upstream/downstream artifact chaining is disclosed. Complete enough for correct invocation, with only the generic boilerplate diluting the signal.

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%, so baseline is 3. The description reinforces the compute modes and names ssi_records/staleness_threshold_days in the policy_parameters context, but adds no syntax or format detail beyond what the schema already documents.

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 Summary line states a specific verb+resource: 'Lints standing settlement instructions for completeness, staleness, and format (~30%-of-fails root cause).' That is precise. However it is front-buried after large boilerplate, and it does not differentiate from near-siblings like lint_securities_settlement_message or check_mt101_coexistence_readiness.

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

Usage Guidelines2/5

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

No statement of when to choose this over the many settlement lint tools. The compute-mode details explain how execution happens, not when the tool should be selected. There is only a faint implicit 'use for SSI records' via the ssi_records parameter.

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

check_tokenized_collateral_eligibilityTokenized Collateral Eligibility CheckerA
Read-onlyIdempotent
Inspect

Tokenized Collateral Eligibility Checker: OpenChainGraph compute node (collateral_mandate). 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. Output feeds: 506-onchain-cash-leg-finality-checker, 513-margin-call-collateral-mobilizer, 514-tokenized-fund-collateral-validator. Open at: https://ainumbers.co/tools/505-tokenized-collateral-eligibility-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: Classify tokenized assets for DTC/Fed eligibility, Basel HQLA tier, and transfer restrictions. Outputs: dtc_status, hqla_tier, final_haircut_pct, adjusted_value, compliance_flags, mandate_type. Output schema: call describe_tool("check_tokenized_collateral_eligibility").

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: asset_type, notional, currency. Unknown keys are refused.

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, but the description adds real context beyond them: default server-side computation on Cloudflare Workers, browser delegation behavior for gpu:true nodes, transient processing with no storage/logging/retention, a 'use synthetic or anonymised inputs only' warning, and AP2 artifact export with execution_hash. These are genuine behavioral disclosures not derivable 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.

Conciseness2/5

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

The body is dominated by reusable platform boilerplate (compute-node routing, transient-processing policy, an FV-status hash URL, a tool URL) that is not specific to this tool, and the actual purpose statement arrives only in the final 'Summary' line. Front-loading is poor and several sentences do not earn their place for this decision function.

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?

With no output schema, the description compensates well by enumerating the return fields (dtc_status, hqla_tier, final_haircut_pct, adjusted_value, compliance_flags, mandate_type) and pointing to describe_tool for the full schema. The nested policy_parameters object is thin in documentation, but the required-key note covers the essential calling information.

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 baseline is 3. The compute-mode explanation and the 'Required: asset_type, notional, currency / unknown keys are refused' note are both already present in the input schema, so the description adds essentially no parameter semantics beyond structured data.

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 description does state a specific verb+resource: 'Classify tokenized assets for DTC/Fed eligibility, Basel HQLA tier, and transfer restrictions', with named outputs (dtc_status, hqla_tier, final_haircut_pct). However, that sentence is buried near the end behind platform boilerplate, and nothing distinguishes it from close siblings like compute_stock_token_collateral_haircut, validate_dtc_tokenized_treasury, or validate_fund_collateral.

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 the 'Output feeds: 506..., 513..., 514...' pipeline note, which hints at workflow position but never says when to choose this tool over the multiple collateral/haircut siblings. There are no explicit when-not conditions or prerequisite statements.

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

check_tsv_stoppage_concurrencyTSV Stoppage ConcurrencyC
Read-onlyIdempotent
Inspect

TSV Stoppage Concurrency: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-710-tsv-stoppage-concurrency.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: Checks a tokenized-stock venue (TSV) against condition H of the SEC TSV Exemption (FR 2026-19388, 91 Fed. Outputs: assumptions, concurrency_tolerance_ms, counts, detail, domain_errors, error, per_stoppage, violations. Output schema: call describe_tool("check_tsv_stoppage_concurrency").

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: stoppages, tsv_trades, tsv_halt_records, participant_notices. Unknown keys are refused.

TDQS

C2.9/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), and the description adds genuinely useful behavioral context: inputs are processed transiently and not stored or logged, synthetic/anonymised inputs are required, gpu:true nodes always delegate to the browser with a delegation URL returned, and an AP2 artifact with execution_hash is exported for provenance. This goes meaningfully beyond the annotations, though the 'receipt verifies offline' and FV-status URL passages are boilerplate noise rather than behavioral clarity.

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?

The text is heavily front-loaded with generic platform boilerplate (compute binding, privacy statement, artifact export, FV-status URL and a long hash) before the actual purpose appears near the end, and two sentences are visibly truncated ('91 Fed.' and the 'Summary:' sentence). The signal-to-noise ratio is poor for a tool whose description should lead with what the check does.

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

Completeness3/5

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

With no output schema, the description does helpfully enumerate the return fields (assumptions, concurrency_tolerance_ms, counts, detail, domain_errors, per_stoppage, violations) and points to describe_tool for the full schema. But the truncated regulatory citation leaves the actual condition-H criterion and the meaning of stoppage concurrency undefined, which is the substantive gap for a nested-input compliance check.

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 enum for compute, the parent_hashes/parent_tool_ids pairing, and the required policy_parameters keys are already fully documented in the schema. The description reinforces the compute-mode semantics and lists output field names, but adds no new meaning about how individual parameters like concurrency_tolerance_ms affect the decision. Baseline 3 applies.

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

Purpose3/5

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

The description does name a specific verb and resource late in the text: it 'Checks a tokenized-stock venue (TSV) against condition H of the SEC TSV Exemption', with per-stoppage concurrency outputs. However, the purpose is buried after several sentences of platform boilerplate, the regulatory citation is truncated mid-sentence ('FR 2026-19388, 91 Fed.'), and nothing distinguishes it from the close sibling check_tsv_tier_cap_ladder.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of the sibling TSV checks (e.g. check_tsv_tier_cap_ladder) that an agent would need to disambiguate between. The only conditional guidance present is about compute mode, which is operational rather than selection guidance.

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

check_tsv_tier_cap_ladderTSV Tier-Cap LadderA
Read-onlyIdempotent
Inspect

TSV Tier-Cap Ladder: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-707-tsv-tier-cap-ladder.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: Replays a tokenized-stock venue's daily volume and symbol counts (aggregated across affiliated TSVs) against the SEC TSV Exemption tier caps and the condition F stepped-compliance ladder, and emits pause windows. Outputs: affiliated_tsv_ids, as_of_date, assumptions, detail, domain_errors, error, note, obligations, per_stock, status_as_of, symbol_count, tsv_id. Output schema: call describe_tool("check_tsv_tier_cap_ladder").

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: tsv_id, stocks, as_of_date. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, the description discloses that inputs are processed transiently and not stored or logged, that synthetic or anonymised inputs should be used, that gpu:true nodes always delegate to the browser, and that an AP2 artifact with execution_hash is exported for provenance. This is meaningful behavioral context an agent could not infer 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.

Conciseness3/5

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

The definition is long and not front-loaded: the compute-node and privacy boilerplate precedes the one sentence that actually says what the tool does. The FV-status URL plus hash and the 'snapshot, not a subscription' aside consume substantial space for marginal decision value, though the outputs list and describe_tool pointer are useful.

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?

Given no output schema, the description compensates by enumerating the returned fields (affiliated_tsv_ids, per_stock, obligations, pause-window related status_as_of, domain_errors) and by explaining compute modes, provenance chaining via parent_hashes, and data handling. An agent has enough to decide whether to call it and what to expect back, with describe_tool pointed to for the full shape.

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 value by restating the compute-mode semantics ('auto' computed server-side for gpu:false nodes with a registered kernel, 'browser' returns a delegation URL) and by noting that tsv_id, stocks and as_of_date are required and unknown keys are refused — details the schema only encodes implicitly via the nested object.

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 Summary states a specific verb and resource: it replays a tokenized-stock venue's daily volume and symbol counts against SEC TSV Exemption tier caps and the condition F stepped-compliance ladder and emits pause windows. However, this crisp statement is buried after several sentences of compute-node boilerplate, and no sibling (e.g. check_tsv_stoppage_concurrency) is named to differentiate it.

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?

There is no explicit when-to-use / when-not-to-use guidance and no named alternative among the many check_* siblings. The only actionable usage direction is the compute-mode selection (auto vs server vs browser), which is parameter guidance rather than tool selection guidance. Implied context only.

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

check_v4_hook_fee_conformanceV4 Hook Fee ConformanceB
Read-onlyIdempotent
Inspect

V4 Hook Fee Conformance: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-709-v4-hook-fee-conformance.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: Recomputes a Uniswap v4 pool’s per-swap fee from v4-core’s own rules at pinned a7cf038cd568801a79a9b4cf92cd5b52c95c8585 (calculateSwapFee composition), validates the packed protocol fee and LP-fee bounds, decodes the 0x400000 override, and checks each emitted fee: CONFORMS, OUT_OF_BOUNDS, FEE_MIS... Outputs: assumptions, counts, declared_hook_charge, declared_lp_fee_bounds, declared_total_fee_cap_pips, detail, domain_errors, error, fee_story_explained, per_swap, pool_fee, pool_fee_is_dynamic, protocol_fee, protocol_fee_one_for_zero_pips, protocol_fee_valid, protocol_fee_zero_for_one_pips, splits_ok, splits_sum_bps, total_cap_ok, totals, v4_core_commit. Output schema: call describe_tool("check_v4_hook_fee_conformance").

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: protocol_fee, pool_fee, declared_lp_fee_bounds, declared_hook_charge, swaps. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive, so the description earns credit for adding genuinely new behavioral facts: auto vs server vs browser execution, browser delegation returning a URL instead of a result, transient non-retention of inputs, and an AP2 artifact export with execution_hash for provenance. It does not describe pagination or result format beyond the output list, but that is a minor gap given the annotation coverage.

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?

The definition opens with generic compute-node and privacy boilerplate that applies to every sibling in this family, then delivers the actual purpose mid-paragraph. The output list is a flat dump cut off with an ellipsis ('FEE_MIS...'), and the front-loaded content is the least tool-specific part.

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

Completeness3/5

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

There is no output schema, so the description's enumerated outputs (pool_fee, protocol_fee, per_swap, totals, domain_errors, v4_core_commit) do useful work, and the provenance/privacy behavior is covered. But the truncated conformance-status enumeration and the absence of usage context leave an agent unable to tell what verdicts it will receive or when to reach for this tool.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description reinforces compute-mode behavior and lists the required policy_parameters keys, which adds some routing value, but it largely restates the schema. The claim of required keys also sits awkwardly against required=0 in the schema.

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 Summary sentence gives a specific verb and resource: recomputes a Uniswap v4 pool's per-swap fee from v4-core rules at a pinned commit, validating protocol fee, LP-fee bounds, and the 0x400000 override. That is distinguishable from the sibling reconcile_v4_hook_permissions. However, the purpose is buried after several sentences of compute-node boilerplate, and the clause list is truncated mid-sentence ('FEE_MIS...'), so it is not front-loaded.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. The only constraints given are data-handling ones ('Use synthetic or anonymised inputs only') and compute-mode routing, neither of which helps an agent choose between this and neighbouring v4 or fee-recompute tools.

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

check_webbotauth_nonce_replayWeb Bot Auth Nonce & Replay-Window CheckerB
Read-onlyIdempotent
Inspect

Web Bot Auth Nonce & Replay-Window Checker: OpenChainGraph compute node (compliance_control). 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. Output feeds: art-130-signature-directory-validator. Open at: https://ainumbers.co/chaingraph/art-593-webbotauth-nonce-replay-check.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: Check a Visa TAP-shaped nonce for format (minimum entropy, base64url), freshness against the created/expires window (capped at TAP's 8-minute spread), and an optional caller-supplied seen-nonce record. Outputs: format_ok, spread_ok, fresh, already_used, nonce_valid, verdict. Output schema: call describe_tool("check_webbotauth_nonce_replay").

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: nonce, created, expires, now_unix. Unknown keys are refused.

TDQS

B3.3/5.0
Behavior4/5

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

Beyond the annotations, the description discloses useful behavioral traits: deterministic computation, server-side versus browser execution, transient processing with no storage or logging, and export of an AP2 artifact with execution_hash. This is solid context, though much of it is generic infrastructure boilerplate rather than specific to the nonce checker.

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?

The description is badly front-loaded with OpenChainGraph compute-node details, FV-status URL text, and provenance boilerplate before reaching the actual purpose in the Summary sentence. Much of the text does not help an agent decide whether or how to invoke this specific tool.

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

Completeness3/5

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

There is no output schema, and the description compensates by listing output fields such as format_ok, spread_ok, fresh, already_used, nonce_valid, and verdict. However, it does not explain how to interpret the verdict or clarify the role of parameters like max_age_s and nonce_already_used beyond what the schema already says.

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 domain meaning by identifying the nonce as Visa TAP-shaped, explaining the created/expires freshness window capped at TAP's 8-minute spread, and noting the optional caller-supplied seen-nonce record. It does not cover every nested parameter, but it adds useful semantics beyond the schema.

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 description eventually states a specific verb and resource: checking a Visa TAP-shaped nonce for format, freshness, and seen-nonce replay. However, the actual purpose is buried under generic compute-node boilerplate and it does not explicitly distinguish itself from nearby siblings like verify_webbotauth_signature or inspect_visa_tap_signature.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives. It mentions compute modes and downstream output feeding art-130-signature-directory-validator, but not the conditions that should select this checker over a signature verifier or TAP inspector.

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

check_x402_domain_nonce_windowx402 Domain & Nonce Window CheckerB
Read-onlyIdempotent
Inspect

x402 Domain & Nonce Window Checker: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-592-x402-domain-nonce-window-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: Checks an EIP-3009 TransferWithAuthorization's domain separation and replay-defense-adjacent fields against caller-supplied expectations. Outputs: verdict, reasons, expected, signed_domain, domain_chain_match, domain_contract_match, window, authorization_within_window, authorization_expired, authorization_not_yet_valid, nonce, nonce_well_formed, nonce_already_used, disclosure. Output schema: call describe_tool("check_x402_domain_nonce_window").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds useful context beyond annotations: deterministic server/browser compute delegation, transient processing with no retention/logging, and AP2 artifact export with execution_hash for provenance. No contradictions with annotations.

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?

The definition is bloated with repeated platform boilerplate, a long URL, and FV-status provenance text before reaching the actual tool purpose. The core check is deferred to the end, and several sentences do not help an agent select or invoke the tool.

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?

Given the tool's complexity, annotations, nested parameters, and absence of an output schema, the description provides enough context: compute modes, privacy behavior, provenance export, and enumerated output fields. It stops short of explaining the semantics of outputs like verdict or reasons, but the input schema and annotations carry much of the remaining burden.

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 the parameters. The description adds conceptual meaning by naming the checked fields (domain separation, nonce, window), but it does not map these concepts to specific nested policy_parameters keys or clarify caller-supplied expectation semantics beyond the schema.

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 core purpose is stated specifically: it checks an EIP-3009 TransferWithAuthorization's domain separation and replay-defense-adjacent fields against caller-supplied expectations. However, this clear statement is buried after extensive platform boilerplate and does not explicitly differentiate the tool from nearby x402-related siblings such as recompute_x402_eip712_digest or check_webbotauth_nonce_replay.

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

Usage Guidelines2/5

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

The description does not say when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. It includes a data-handling constraint ('Use synthetic or anonymised inputs only') and compute-mode mechanics, but no actionable selection guidance.

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

choose_cc_licenseCreative Commons License ChooserB
Read-onlyIdempotent
Inspect

Creative Commons License Chooser: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-195-creative-commons-license-chooser.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: Deterministic two-question decision tree mapping creator answers (waive all rights, allow commercial, allow adaptations) to the matching Creative Commons 4.0 license (CC0, CC BY, BY-SA, BY-ND, BY-NC, BY-NC-SA, BY-NC-ND). Outputs: attribution_required, disclaimer, license_id, license_name, license_url, required_elements, source, spdx_id. Output schema: call describe_tool("choose_cc_license").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive and closed-world, so the description properly spends its words elsewhere: it discloses that gpu:true nodes always delegate to a browser URL, that inputs are processed transiently and not logged or retained, that an AP2 artifact with execution_hash is exported for chain provenance, and that the FV-status file is a snapshot rather than a subscription. These are genuinely non-obvious operational traits not derivable from annotations or schema.

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?

The genuinely useful content (decision tree, license set, outputs) is buried behind roughly 100 words of repeated platform boilerplate ('OpenChainGraph compute node', a full FV-status hash path, and a documentation URL). The opening two sentences restate the name and add no information, so the description is far from front-loaded on what an agent needs to decide.

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?

There is no output schema, but the description compensates by enumerating every returned field (attribution_required, disclaimer, license_id, license_name, license_url, required_elements, source, spdx_id). Combined with the compute-mode and provenance explanation, an agent has enough to call it correctly; only the semantics of contradictory elections are left unstated.

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% at the top level, so baseline is 3; the description adds some meaning by naming the three decision inputs behind policy_parameters (waive_all_rights, allow_commercial, allow_adaptations) whose nested properties have no schema descriptions at all. However, it calls the logic a 'two-question' tree while three inputs are listed, and it never states evaluation order or which combination yields which license_id.

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 description states a specific verb+resource: a deterministic decision tree mapping creator elections (waive rights, commercial use, adaptations) to a Creative Commons 4.0 license, and enumerates the exact license set (CC0, BY, BY-SA, BY-ND, BY-NC, BY-NC-SA, BY-NC-ND). That is precise enough to distinguish it from nearby license siblings such as select_cbe_license, select_embedded_license, or assemble_license_terms, though it never names an alternative explicitly.

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

Usage Guidelines2/5

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

The description explains compute-mode mechanics but never says when this tool should be chosen over sibling licensing tools (select_cbe_license, check_license_compatibility, certify_license_election). The only usage directive is a data-handling rule ('Use synthetic or anonymised inputs only'), which is a constraint, not selection guidance.

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

classify_agentic_ai_riskAgentic AI Risk & GPAI Governance ClassifierB
Read-onlyIdempotent
Inspect

Agentic AI Risk & GPAI Governance Classifier: OpenChainGraph compute node (model_governance). 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-64-ai-act-highrisk-fit-diagnostic. Output feeds: art-04-agent-identity-attestation-checker, art-33-mcp-server-self-attestation-pack, art-62-ap2-payment-receipt-verifier. Open at: https://ainumbers.co/chaingraph/art-67-agentic-ai-risk-classifier.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: Co-flagship and strongest in-force anchor: classifies autonomy tier and GPAI/systemic-risk obligations (Arts 53-55, IN FORCE since 2 Aug 2025, explicitly unchanged by the Digital Omnibus) for agentic and foundation-model AI in financial services. Outputs: applicable_obligations, autonomy_oversight_verdict, dim_scores, governance_tier, gpai_class, highrisk_interaction, in_force_status, note, overall_grade, overall_score, recommendation. Output schema: call describe_tool("classify_agentic_ai_risk").

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". Unknown keys are refused.

TDQS

B3.4/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 the description adds genuinely useful context beyond them: transient non-retained processing, synthetic-input requirement, compute delegation semantics on gpu:true nodes, and AP2 artifact export with execution_hash. These are substantive behavioral facts not encoded in 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.

Conciseness2/5

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

The definition is bloated with infrastructure boilerplate (compute-node kernel routing, FV-status hash, URL) that precedes the actual function, which only appears in the final 'Summary' sentence. The core purpose is buried rather than front-loaded, forcing the agent to read past substantial compute-plumbing noise.

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

Completeness3/5

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

It enumerates the output fields (applicable_obligations, autonomy_oversight_verdict, dim_scores, etc.) and provides chain placement, which is helpful given there is no output schema. But the opaque nested policy_parameters contract — the actual decision inputs — is left undefined, so an agent cannot fully reason about what to pass.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters, making baseline 3 appropriate. The description adds chain-provenance context for parent_hashes via the AP2 export/upstream artifact discussion, but leaves the policy_parameters object keys (agent/model/obligations/downstream_highrisk) entirely unexplained.

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 description states a specific verb and resource: it 'classifies autonomy tier and GPAI/systemic-risk obligations (Arts 53-55)' for agentic and foundation-model AI in financial services. That is far more specific than the tool name alone, though it never explicitly contrasts itself with near neighbours like classify_ai_system_governance or check_gpai_code_conformance.

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 implied through the pipeline references (consumes art-64-ai-act-highrisk-fit-diagnostic, feeds art-04/art-33/art-62), which tells an agent where it sits in a chain. However, there is no explicit 'use this when... do not use when...' guidance and no routing away from the many overlapping AI-Act sibling tools.

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

classify_ai_system_governanceAI System Governance ClassifierB
Read-onlyIdempotent
Inspect

AI System Governance Classifier: OpenChainGraph compute node (compliance_mandate). 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-172-ai-risk-impact-assessment-validator. Open at: https://ainumbers.co/chaingraph/art-173-ai-system-governance-classifier.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: Classify an AI system to its governance tier across EU AI Act (prohibited/high-risk/limited-risk/minimal-risk), NIST AI RMF profile (T1 basic/T2 standard/T3 enhanced), and ISO/IEC 42001 control set (light/standard/enhanced). Outputs: deployment_context, eu_ai_act_tier, gpai_obligations, iso42001_control_set, nist_rmf_profile, use_case. Output schema: call describe_tool("classify_ai_system_governance").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the bar is lower, and the description still adds real behavioral context: deterministic compute, transient non-stored processing, compute:'browser' delegation URL behavior, and an exported AP2 artifact carrying execution_hash for chain provenance. The privacy and provenance disclosures are genuinely beyond what the structured fields convey, though the compute-mode paragraphs largely restate the 'compute' schema description.

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?

The actual purpose is buried at the very end behind compute-node boilerplate, a rendered URL, and a full FV-status hash path, so the description is poorly front-loaded. Several sentences (compute mode restatement, receipt/offline verification clause) duplicate schema or annotations and do not earn their space.

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

Completeness3/5

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

With no output schema, the description usefully enumerates the returned fields (eu_ai_act_tier, nist_rmf_profile, iso42001_control_set, gpai_obligations, deployment_context, use_case) and notes the AP2/chaining behavior. However, for a classifier whose accuracy depends on the input system description, it says nothing about what policy_parameters.system should contain, leaving the core invocation under-specified.

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 baseline is 3; the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters. The description adds a small amount by naming the specific upstream artifact (art-172-ai-risk-impact-assessment-validator) that supplies parent hashes, but it gives no guidance on what 'system' fields to put inside policy_parameters, which is the decision-critical input.

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 final 'Summary' sentence states a specific verb and outcome: classify an AI system to its governance tier across EU AI Act, NIST AI RMF and ISO/IEC 42001, with enumerated tier values. That is clear and actionable, but the description never distinguishes this from sibling classifiers such as run_ai_governance_fit, run_ai_act_highrisk_fit or classify_annex3_decisioning_obligations, so an agent cannot tell which one to pick from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use / when-not-to-use guidance and no named alternative, despite many overlapping siblings (run_ai_governance_fit, assess_ai_act_conformity, classify_agentic_ai_risk). The only implied precondition is that upstream artifacts from art-172-ai-risk-impact-assessment-validator are consumed, which is a chaining constraint rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_annex3_decisioning_obligationsEU AI Act Annex III FS Decisioning Obligations ClassifierB
Read-onlyIdempotent
Inspect

EU AI Act Annex III FS Decisioning Obligations Classifier: OpenChainGraph compute node (compliance_mandate). 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-64-ai-act-highrisk-fit-diagnostic. Open at: https://ainumbers.co/chaingraph/art-238-classify-annex3-decisioning-obligations.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: EXTENDS run_ai_act_highrisk_fit (art-64). Outputs: all_obligations_met, annex3_category, art12_logging_required, art26_deployer_duties_apply, compliance_gaps, db_registration_required, do_now, enforcement_dates, enforcement_readiness, extends_note, extends_tool, fria_required, is_5b_creditworthiness, is_5c_life_health_insurance, is_high_risk, obligations, regulatory_basis, scope_verdict, table_version. Output schema: call describe_tool("classify_annex3_decisioning_obligations").

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: annex3_category, db_registered, deployer_role, fria_completed, has_human_oversight, is_high_risk, logging_implemented. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds genuinely non-schema behavior: server vs browser compute delegation, transient no-retention processing, synthetic-input requirement, and AP2 execution_hash provenance export. The compute-mode semantics and data-handling guarantees are exactly the kind of context annotations cannot express.

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?

Purpose is front-loaded, but the text is heavily padded: 'OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.' repeats the same fact, and a 64-character FV-status hash URL plus an 19-item output list consume a large share of the payload. Several sentences do not earn their place relative to invocation decisions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description at least enumerates the returned fields (annex3_category, art12_logging_required, is_5b_creditworthiness, etc.), which is helpful. But it never explains the decision logic or what the policy inputs should contain, and it delegates the return-shape detail to describe_tool, leaving real gaps for a compliance classifier.

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 parameter meaning is already carried by the schema. The description adds only marginal value by implying the artifact-chaining path (consumes art-64 output → parent_hashes/parent_tool_ids) and listing derived output fields; it does not explain the policy_parameters decision inputs such as deployer_role or fria_completed.

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 title and opening sentence name a specific verb+resource: classifying EU AI Act Annex III obligations for financial-services decisioning, and 'EXTENDS run_ai_act_highrisk_fit (art-64)' distinguishes it from that sibling. However, the bulk of the opening is generic OpenChainGraph compute-node boilerplate that dilutes the purpose statement.

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 'EXTENDS run_ai_act_highrisk_fit' line and the 'Consumes upstream artifacts from art-64...' note imply this is a downstream follow-on to that diagnostic, which is useful routing. But there is no explicit when-to-use / when-not guidance, and no reference to alternatives such as assess_ai_act_conformity or classify_agentic_ai_risk.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_avax_permissioning_controlsEvergreen Permissioning-Control ClassifierB
Read-onlyIdempotent
Inspect

Evergreen Permissioning-Control Classifier: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-495-avax-permissioning-control-classifier.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: Classifies six Evergreen supervisory controls -- transaction permissioning, contract deployment permissioning, native asset issuance, fee policy, reward distribution, and validator set membership -- as protocol-enforced, application-enforced, or absent, from caller-transcribed genesis precompile... Outputs: absent_count, application_enforced_count, controls, controls_evaluated, gap_register, judgment_required, judgment_required_count, protocol_enforced_count. Output schema: call describe_tool("classify_avax_permissioning_controls").

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: application_controls, precompiles, validator_manager_mode. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior, but the description adds meaningful execution context: auto/server/browser compute modes, browser delegation, transient processing with no storage or logging, AP2 artifact export with execution_hash, and offline-verifiable FV status. This goes well beyond the annotations without contradicting them.

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?

The description is long and poorly front-loaded: the core classification purpose appears late under 'Summary:', after repeated boilerplate such as 'OpenChainGraph compute node' and a long FV-status hash/URL. Several sentences do not earn their place relative to the tool-selection task.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has nested policy_parameters and no output schema, but the description lists the output fields and explains compute/artifact behavior. However, it leaves the structure of nested policy_parameters largely to describe_tool, so it is adequate but not fully complete for a complex nested input.

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 top-level parameters are already documented in the schema and the baseline is 3. The description repeats compute-mode behavior but does not add much clarity about the nested policy_parameters payload beyond the schema's required-key note.

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 description states a specific classification task: six Evergreen supervisory controls are classified as protocol-enforced, application-enforced, or absent. The verb and resource are clear, though it does not explicitly differentiate itself from any similarly named classify_* sibling.

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 implied by the summary and by the instruction to use synthetic or anonymised inputs, and compute modes are explained. There is no explicit when-to-use/when-not-to-use guidance or named alternative sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_blockchain_quantum_riskBlockchain / Stablecoin Quantum-Risk ClassifierA
Read-onlyIdempotent
Inspect

Blockchain / Stablecoin Quantum-Risk Classifier: OpenChainGraph compute node (model_governance). 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-85-pqc-timeline-fit-diagnostic, 499-crypto-asset-inventory-classifier. Output feeds: cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-89-blockchain-quantum-risk-classifier.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: Classifies quantum-exposure risk for blockchain/stablecoin assets: exposed public-key percentage, address reuse, and migration-path maturity (BIP-360/XRPL/Ethereum roadmaps). Outputs: address_reuse_pct, asset_type, bip360_status, exposed_pct, exposure_thresholds, migration_readiness, note, quantum_risk_tier, reference_version, reuse_risk, roadmap_ref, signature_scheme. Output schema: call describe_tool("classify_blockchain_quantum_risk").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behaviour, so the description earns credit for adding genuinely new context: transient non-logged processing, the compute:auto/server/browser execution model and browser delegation URL, and an AP2 artifact export carrying execution_hash for chain provenance. It does not contradict any annotation, though the compute-mode text largely restates the schema.

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?

The definition is badly front-loaded: five sentences of OpenChainGraph platform boilerplate, a hash-URL receipt, and an output enumeration precede the single sentence that actually says what the tool does. The FV-status and artifact-URL material is arguably irrelevant to an agent deciding whether to call the tool.

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?

Without an output schema, the description compensates by enumerating return fields (quantum_risk_tier, exposed_pct, reuse_risk, migration_readiness, etc.) and pointing to describe_tool for the full contract, plus upstream/downstream chaining and privacy posture. An agent has enough to call it correctly; only the missing use-case routing keeps it from a 5.

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 baseline is 3. The description adds no syntax or format detail for parent_hashes, parent_tool_ids, or policy_parameters beyond what the schema already says; the compute-mode explanation duplicates the parameter's own description rather than extending it.

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 Summary sentence names a specific verb and resource: 'Classifies quantum-exposure risk for blockchain/stablecoin assets' with the three drivers (exposed public-key percentage, address reuse, migration-path maturity) and roadmap references. It is precise, but the statement is buried after several paragraphs of platform boilerplate and never names a sibling tool it should be chosen over.

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 context: it declares the upstream artifacts it consumes (art-85-pqc-timeline-fit-diagnostic, 499-crypto-asset-inventory-classifier) and the downstream consumer (cry-04-merkle-batch-verifier). There is no explicit 'use this when…' or exclusion versus nearby tools like run_pqc_timeline_fit or compute_pqc_deadline_ladder, and the only hard constraint given is 'use synthetic or anonymised inputs only.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_bold_challenge_finalityBoLD Challenge-Window Finality ClassifierA
Read-onlyIdempotent
Inspect

BoLD Challenge-Window Finality Classifier: OpenChainGraph compute node (settlement_finality_mandate). 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-59-settlement-asset-finality-classifier. Open at: https://ainumbers.co/chaingraph/art-321-rhc-bold-finality-classifier.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: Classifies a settlement-finality claim on Robinhood Chain, an Arbitrum Orbit dedicated blockchain using BoLD interactive fraud proofs, into soft, posted, challengeable, or final. Outputs: challenge_window_seconds, claim_verdict, earliest_final_at, finality_claim, finality_class, verdict. Output schema: call describe_tool("classify_bold_challenge_finality").

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". Unknown keys are refused.

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, and closed-world, so the safety profile is covered. The description still adds real behavior: deterministic execution, the server-vs-browser delegation split, transient processing with no retention plus a 'synthetic or anonymised inputs only' instruction, and that it exports an AP2 artifact carrying an execution_hash. The compute-mode passage largely restates the `compute` schema field, which dilutes the value somewhat.

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?

The purpose statement — the most valuable sentence — is deferred to near the end, behind a repeated compute-mode paragraph already covered by the schema and a long FV-status hash/receipt passage that an agent cannot act on. Roughly half the text is redundant or navigational noise, though the tool name and mandate label are front-loaded.

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?

With no output schema, the description correctly enumerates the return fields (challenge_window_seconds, claim_verdict, earliest_final_at, finality_class, verdict) and points to describe_tool for full schema. It also discloses the AP2 provenance export and the upstream artifact dependency. The main gaps are error behavior and the semantics of the individual policy_parameters timestamp keys.

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 baseline of 3 applies. The description adds little about the four parameters beyond duplicating the `compute` enum semantics that already appear in the schema, and the listed 'Outputs' (finality_claim, challenge_window_seconds) overlap with input keys in policy_parameters without clarifying which is which. The nested policy_parameters properties are undocumented in both places.

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 summary sentence gives a specific verb, resource, and outcome set: it classifies a settlement-finality claim on Robinhood Chain (Arbitrum Orbit with BoLD fraud proofs) into soft, posted, challengeable, or final. It also names the upstream artifact (art-59-settlement-asset-finality-classifier), which hints at its pipeline position relative to siblings like classify_settlement_asset_finality. However, the idea is buried after several sentences of boilerplate, and no sibling such as classify_settlement_finality or check_linea_l2_finality_window is explicitly contrasted.

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 implied by the chain-specific scope (Robinhood Chain / BoLD) and by the statement that it consumes upstream artifacts from one named classifier, which tells the agent where this fits in a chain. But there is no explicit 'use this when X, use that instead' guidance, nor any stated prerequisites or exclusions relative to the many other finality tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_carf_reportableCARF / DAC8 Reportable User ClassifierB
Read-onlyIdempotent
Inspect

CARF / DAC8 Reportable User Classifier: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-505-dispose-carf-status-message. Open at: https://ainumbers.co/chaingraph/art-504-classify-carf-reportable.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: Classifies crypto-asset user records and their transactions for Crypto-Asset Reporting Framework and DAC8 purposes, against a policy set the caller declares rather than one this node asserts: which residence jurisdictions the reporting jurisdiction treats as reportable, which transaction classes... Outputs: judgment_required, judgment_required_count, note, record_count, record_verdicts, reportable_residence_jurisdictions, reportable_transaction_classes, reporting_jurisdiction, reporting_period, schema_version, suppressed_rule_codes, suppressed_step_count, transaction_counts_by_class, unsatisfied_step_count, user_counts. Output schema: call describe_tool("classify_carf_reportable").

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: due_diligence_rules, judgment_owner_role, records, reportable_residence_jurisdictions, reportable_transaction_classes, reporting_jurisdiction, reporting_period, schema_version, suppressed_rule_codes. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent and non-destructive, so the burden is lighter. The description adds genuine context: transient processing with no retention, server vs browser delegation rules for gpu nodes, and an AP2 artifact with execution_hash for provenance. Much of this is platform-level rather than tool-specific, so it adds only moderate value.

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?

The actual purpose appears roughly two-thirds of the way in, after duplicated framing ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node'), compute binding details, a privacy statement, and an FV-status hash URL. Multiple sentences do not earn their place, and the key sentence trails off mid-clause ('which transaction classes...').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by enumerating the output field names (record_verdicts, judgment_required, suppressed_rule_codes, etc.), which is helpful. However the policy-set explanation is truncated and the 9 required nested keys are left entirely to the schema, leaving an agent without a clear picture of what the classifier actually decides.

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%, so all parameters including the 9 required policy_parameters keys are already documented in the schema. The description restates the compute:"auto"/"browser" behaviour and mentions policy sets but adds no syntax, format, or error semantics beyond the structured fields. 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?

The description names a specific verb and resource: it classifies crypto-asset user records and their transactions for CARF and DAC8 purposes against a caller-declared policy. It distinguishes itself from the sibling dispose_carf_status_message by framing that tool as a downstream consumer, though the useful sentence is buried after boilerplate.

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?

It gives one real usage constraint ('Use synthetic or anonymised inputs only') and explains the compute-mode choice. It never states when to pick this over alternatives such as check_fatca_crs_submission_conformance or when the classifier is inappropriate, so guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_codm_expense_significanceCODM Significant Expense ClassifierB
Read-onlyIdempotent
Inspect

CODM Significant Expense Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-634-codm-expense-significance-classifier.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: Classifies one candidate segment expense under the significant expense principle that ASU 2023-07 added to ASC 280. Outputs: included_in_segment_profit_measure, regularly_provided_to_codm, easily_computable_from_codm_information, assessed_significant, specified_item_50_22, input_outside_declared_domain, evaluated_under_50_26A, must_disclose_separately_50_26A, folds_into_other_segment_items_50_26B, other_segment_items_buckets, outside_significant_expense_principle, separate_disclosure_required_50_22, citation, basis, segment_level_duties_not_decided_here, bucket_c_scope_note. Output schema: call describe_tool("classify_codm_expense_significance").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context beyond them: transient non-retention of inputs, deterministic server-side kernel execution, GPU nodes always delegating to browser, and export of an AP2 artifact with execution_hash for chain provenance. This is substantive disclosure that annotations alone would not convey.

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?

The description is heavily padded with boilerplate (repeated "Deterministic OpenChainGraph compute node", FV-status URL, offline-receipt note) that does not help an agent select or invoke the tool. The genuinely useful purpose statement is not front-loaded, appearing after several paragraphs of framing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because there is no output schema, listing the output fields is a helpful stand-in for return description, and the privacy/compute notes are useful. But it omits any guidance on when a candidate expense qualifies for this classifier versus related tools, leaving an agent to infer applicability for a financial-reporting decision node.

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 all four parameters are already documented in-schema; baseline 3 applies. The description lists the tool's outputs rather than adding syntax or meaning to inputs like policy_parameters or parent_hashes, so it doesn't materially enrich parameter semantics beyond the schema.

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 summary states a specific verb+resource: "Classifies one candidate segment expense under the significant expense principle that ASU 2023-07 added to ASC 280." This is far more precise than the name alone and distinguishes it from audit-style siblings. However, this clarity is buried after paragraphs of compute-node boilerplate, and it doesn't explicitly contrast with a near sibling like test_asc280_reportable_segment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance or naming of alternatives. The only conditional language concerns the compute mode ("auto"/"server"/"browser") and the "Use synthetic or anonymised inputs only" constraint, which are input constraints rather than usage routing between this and other ASC 280 / segment tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_digital_asset_regulatoryDigital Asset Regulatory ClassifierC
Read-onlyIdempotent
Inspect

Digital Asset Regulatory Classifier: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: 512-tokenized-security-lifecycle-validator. Open at: https://ainumbers.co/tools/510-digital-asset-regulatory-classifier.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: Classify a tokenized asset under GENIUS Act, MiCA, MiFID II, and EU DLT Pilot Regime. Outputs: classification_results, compliance_flags, iso20022_party_identification. Output schema: call describe_tool("classify_digital_asset_regulatory").

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: asset_name, asset_type, issuer_jurisdiction. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds meaningful context beyond annotations — deterministic compute, server-side vs browser delegation, transient non-retained processing, and an AP2 artifact with execution_hash — but much of the compute explanation merely repeats the 100%-covered 'compute' schema field, and the remaining text is platform boilerplate.

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?

The description is heavily bloated with platform boilerplate (OpenChainGraph compute node stated twice, compute binding details, an FV-status hash URL, offline receipt language). The single sentence that actually describes the tool's purpose appears last, so the content is badly back-loaded rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description does list the returned fields (classification_results, compliance_flags, iso20022_party_identification) and points to describe_tool for the output schema. It also covers compute routing and provenance chaining, but says nothing about what the classification logic evaluates or how inputs map to flags, leaving a meaningful gap for a four-regime classifier.

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 the schema already documents compute modes, parent chaining hashes, and the policy_parameters fields including the required asset_name, asset_type, and issuer_jurisdiction. The description adds almost no parameter-specific meaning beyond noting that inputs are processed transiently and that synthetic/anonymised inputs should be used.

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 a specific verb and resource: classify a tokenized asset under GENIUS Act, MiCA, MiFID II, and EU DLT Pilot Regime. That distinguishes it from narrower siblings like scope_mica_token_and_service or check_genius_reserve_disclosure, but the actual purpose is buried at the end after platform boilerplate, and only one sibling is implicitly differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance against the many related MiCA/GENIUS/DLT siblings. The only usage constraints given are 'Use synthetic or anonymised inputs only' and an implied pipeline role via 'Output feeds: 512-tokenized-security-lifecycle-validator'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_dora_ict_incident_and_clock_deadlinesDORA ICT Incident Classifier & Reporting ClockB
Read-onlyIdempotent
Inspect

DORA ICT Incident Classifier & Reporting Clock: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-467-dora-incident-classifier.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: Classifies an ICT-related incident as major or non-major under DORA (EU 2022/2554) Art. Outputs: criteria_detail, incident_id, major_incident, note, qualifying_criteria, reporting_clock, table_source, table_version, verdict. Output schema: call describe_tool("classify_dora_ict_incident_and_clock_deadlines").

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: classification_at, clients_affected_pct, critical_services_affected, data_losses, duration_minutes, economic_impact_amount, geographical_spread_countries_count, incident_id, reputational_impact. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds meaningful context beyond them: transient processing with no storage/logging, a requirement to use synthetic or anonymised inputs, deterministic execution, server vs browser delegation rules, and an AP2 execution_hash artifact for provenance. It is generic node boilerplate rather than classification-specific behaviour, but it is materially useful.

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?

The actual purpose sentence is buried at the end behind compute-binding boilerplate, a marketing URL, an FV-status JSON path and a describe_tool pointer. Large blocks are copy-paste infrastructure text that does not help an agent decide whether to call this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The outputs are enumerated and an output schema can be fetched via describe_tool, which compensates partly. But for a complex two-part task (major/non-major classification plus reporting clock deadlines) the description says nothing about the criteria applied, the deadline windows produced, or how it relates to sibling DORA tools.

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 nominally 100%, so baseline 3 applies, and the compute/parent_hashes descriptions are thorough. But the nested policy_parameters properties (duration_minutes, clients_affected_pct, classification_at) mostly lack types and any unit/format explanation in both schema and description, which is a real gap for the tool's core 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 summary line states a specific verb and resource: 'Classifies an ICT-related incident as major or non-major under DORA (EU 2022/2554)' with the clock output. However, it gives no differentiation from the close sibling classify_dora_incident, and the 'Art.' reference is truncated so the operative article is lost.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance at all: nothing says when to pick this over classify_dora_incident, run_dora_readiness_diagnostic, or build_dora_roi_register. The only 'guidance' present is about compute modes, which is parameter-level behaviour, not tool routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_dora_incidentDORA Major-Incident Reporting Threshold ClassifierA
Read-onlyIdempotent
Inspect

DORA Major-Incident Reporting Threshold Classifier: OpenChainGraph compute node (infrastructure_mandate). 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-29-dora-readiness-diagnostic. Output feeds: pnr-01-dora-ict-cascade-simulator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-09-dora-incident-classifier.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: DORA Article 19/20 reporting determination and reporting-clock start. Outputs: major_incident, determination_code, qualifying_criteria, reporting_clock, entity_type, incident_type, cross_border, third_party_ict, competent_authority_note, regulatory_framework. Output schema: call describe_tool("classify_dora_incident").

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: detection_datetime, clients_affected, total_clients, outage_duration_minutes. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond the annotations: compute mode behavior (auto/server/browser and gpu delegation), transient processing with no logging or retention, a requirement to use synthetic or anonymised inputs, and AP2 artifact export with execution_hash for provenance. These details materially help an agent understand execution and data-handling traits.

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?

The description is a long wall of text that front-loads redundant infrastructure boilerplate ('OpenChainGraph compute node' repeated) before the actual purpose appears near the end. Many sentences do not earn their place for an agent selecting and invoking the tool.

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?

Given the nested policy parameters and many outputs, the description lists the output fields and explains compute and provenance behavior. With annotations covering safety and schema covering inputs at 100%, it is largely complete, though it lacks usage guidance and is cluttered.

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 all parameters thoroughly. The description adds little parameter-specific meaning beyond what the schema provides, only reiterating the compute mode default and listing outputs rather than input semantics.

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 description eventually states a specific verb and resource: 'DORA Article 19/20 reporting determination and reporting-clock start', and lists the outputs. It is clear what the tool does, but it is buried under infrastructure boilerplate and does not differentiate itself from the similar sibling classify_dora_ict_incident_and_clock_deadlines.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives, nor any exclusions. Upstream and downstream artifact references provide context but do not tell an agent when this classifier is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_eccn_dual_useECCN / Dual-Use ClassifierB
Read-onlyIdempotent
Inspect

ECCN / Dual-Use Classifier: OpenChainGraph compute node (compliance_mandate). 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-90-sanctions-screening-fit-diagnostic. Output feeds: art-95-circumvention-diligence-assessor, cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-94-eccn-dual-use-classifier.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: Decision-tree from product attributes to ECCN (EAR) + EU Annex I category + controlling regime (Wassenaar/MTCR/AG/NSG) + licence-requirement logic, including 2025 emerging-tech controls (quantum/semiconductor/AM/peptide). Outputs: classification_basis, controlling_regime, eccn, emerging_tech_note, eu_annex_i_category, key_dates, licence_required, note, red_flags, reference_version. Output schema: call describe_tool("classify_eccn_dual_use").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely new behaviour: server-vs-browser compute resolution, that gpu:true nodes always delegate and return a browser delegation URL, that inputs are processed transiently and not retained, and that an AP2 artifact with execution_hash is exported. That is well beyond the annotation set. It falls short of 5 because the compute-mode text largely restates the `compute` enum already in the schema.

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?

Badly structured: the sentence 'OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.' is immediately self-duplicative, and the FV-status SHA-256 path plus the marketing URL consume substantial space without helping an agent decide or call. The one sentence that matters (the Summary) appears after all of it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the right thing by enumerating output fields (eccn, controlling_regime, licence_required, red_flags, reference_version) and by giving upstream/downstream chain provenance. However, for a decision-tree tool whose only substantive input is an opaque `product` object, the omission of what attributes to supply is a real completeness gap.

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 baseline is 3 and the schema already documents compute, parent_hashes and parent_tool_ids. The description adds one useful hint — that product attributes drive the decision tree — but never explains what shape `policy_parameters.product` should take, which is the one parameter the schema leaves as an open object (`{}`).

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 'Summary' clause gives a specific verb+resource: a decision tree mapping product attributes to ECCN (EAR), EU Annex I category, controlling regime (Wassenaar/MTCR/AG/NSG) and licence-requirement logic. That is unmistakably different from the many classification siblings (classify_eudr_commodity_scope, classify_digital_asset_regulatory). It loses a point only because this crisp statement is buried mid-document behind compute-node boilerplate rather than opening the description.

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?

There is no explicit when-to-use/when-not-to-use statement and no named alternative. Usage context is only implied through the chain wiring: it consumes art-90-sanctions-screening-fit-diagnostic and feeds art-95-circumvention-diligence-assessor and cry-04-merkle-batch-verifier, which tells an agent where it sits in a pipeline but not when to pick it over another classifier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_emir3_active_account_statusEMIR 3.0 Active Account Representativeness ClassifierB
Read-onlyIdempotent
Inspect

EMIR 3.0 Active Account Representativeness Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-576-emir3-active-account-representativeness-classifier.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: Classifies an EU counterparty's posture under EMIR Article 7a (the Active Account Requirement, inserted by Regulation (EU) 2024/2987) across three obligations: whether the active-account obligation applies and is met at an Article-14-authorised CCP; whether the Article 7a(4) representativeness ob... Outputs: as_of_date, bucket_counts, citations, counterparty_ref, fence, in_scope, not_proven, note, obligations, rationale, rejected_inputs, subcategory_designations, trades_classified. Output schema: call describe_tool("classify_emir3_active_account_status").

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: active_account, as_of_date, clearing_threshold_exceeded, counterparty_ref, notional_clearing_volume_minor_units, reference_period_months, reporting_submission_date, subcategory_designations, trades. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read-only, idempotent, non-destructive operation, but the description adds useful behavioral context: deterministic server/browser compute modes, transient processing with no storage or logging, synthetic-input requirement, and an AP2 artifact with execution_hash for provenance. These details go beyond the annotations without contradicting them.

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?

The opening repeats the title and then repeats 'OpenChainGraph compute node' twice before reaching the actual classification summary. Large sections on compute binding, FV-status snapshots, and data retention are front-loaded ahead of the core purpose, and the central obligation summary is cut off mid-sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists output fields and provides some context for a complex EMIR Article 7a classifier, but the core three-obligation summary is truncated. With a nested policy_parameters object and no output schema, the description leaves the agent to infer important input semantics from the schema alone.

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 compute, parent_hashes, parent_tool_ids, and the nested policy_parameters object. The description does not explain the meaning or expected shape of the individual policy_parameters entries, so it adds little beyond the schema baseline.

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 description states a specific verb and resource: 'Classifies an EU counterparty's posture under EMIR Article 7a (the Active Account Requirement) across three obligations.' This distinguishes it from siblings such as classify_emir3_simm_approval_scope and run_emir_reporting_fit. However, the purpose statement is buried after compute-node boilerplate and the third obligation is truncated mid-sentence, slightly weakening clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit when-to-use or when-not-to-use guidance relative to the many EMIR and classification siblings. It only mentions execution guidance (compute modes) and an input constraint ('Use synthetic or anonymised inputs only'), neither of which helps an agent choose this classifier over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_emir3_simm_approval_scopeEMIR 3 SIMM Approval-Scope ClassifierC
Read-onlyIdempotent
Inspect

EMIR 3 SIMM Approval-Scope Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-581-emir3-simm-approval-scope-classifier.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: Classifies which EMIR 3 initial-margin model-approval obligations apply to a caller-declared counterparty profile across four items: prior competent-authority (NCA) authorisation before using or changing an initial-margin model under Article 11(12a) (inserted by Regulation (EU) 2024/2987); EBA ce... Outputs: as_of_date, competent_authority_declared, counterparty_type, isda_endorsement, methodology_verification, model_status, model_type, obligations, subject_to_bilateral_im. Output schema: call describe_tool("classify_emir3_simm_approval_scope").

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". Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/closed-world), the description discloses concrete behavior: compute:"auto" runs server-side on Cloudflare Workers when a kernel is registered, "browser" returns a delegation URL, gpu:true always delegates, inputs are transient and not logged, and an AP2 artifact with execution_hash is exported. This is genuinely useful, though much of it is shared platform boilerplate rather than tool-specific 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?

The first half is infrastructure marketing (compute binding, retention policy, AP2 provenance, a public URL, a 64-char FV receipt hash) before any statement of what the tool decides. The one sentence that actually matters is truncated ("EBA ce..."), so the noise displaces the signal rather than preceding it efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does list output fields and points to describe_tool, which is helpful for a tool with a nested policy_parameters object. But the substantive summary of the four approval-scope items is truncated, leaving an agent without the actual decision logic it needs to supply correct inputs.

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 baseline is 3; the compute-mode text in the description largely duplicates the schema's own compute description. The policy_parameters sub-fields are named in the schema but unexplained there, and the description's attempt to explain them is cut off mid-sentence, so no meaningful semantics are added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The core verb+resource is present ("Classifies which EMIR 3 initial-margin model-approval obligations apply to a caller-declared counterparty profile"), but it appears only after several sentences of platform boilerplate and then trails off mid-enumeration ("EBA ce..."). It never distinguishes itself from nearby tools such as classify_emir3_active_account_status or compute_eba_im_model_validation_tracker.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage constraint given is "Use synthetic or anonymised inputs only", which is a data-handling rule, not guidance on when to pick this classifier versus alternatives. There is no statement of the scenario, thresholds, or sibling tools that would make this the wrong choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_erc1967_proxy_slotERC-1967 Proxy Slot ClassifierB
Read-onlyIdempotent
Inspect

ERC-1967 Proxy Slot Classifier: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-607-erc1967-proxy-slot-classifier.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: Recomputes the four canonical EIP-1967 storage slots (bytes32(uint256(keccak256(label)) - 1) for the implementation, admin, beacon, and rollback labels) fresh on every call using the vendored keccak256 bundle already pinned in this repository, then classifies a caller-supplied (declared_slot, sto... Outputs: classification_summary, declared_slot, embedded_address, embedded_address_checksummed, findings, known_eip1967_slots, matched_role, not_proven, overall_determination, scope_note, storage_value. Output schema: call describe_tool("classify_erc1967_proxy_slot").

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: declared_slot, storage_value. Unknown keys are refused.

TDQS

B3.2/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 behavior, so the baseline is lower. The description adds useful context beyond annotations: deterministic recomputation using a vendored keccak256 bundle, server-vs-browser delegation behavior, transient non-retained input processing, and AP2 artifact chaining with execution_hash.

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?

The description is long and front-loaded with OpenChainGraph compute-node boilerplate, privacy language, a URL, and an FV-status hash rather than the core classification behavior. The actual purpose appears only in a truncated Summary near the end, and the text is not structured for quick agent scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description enumerates output fields and explains compute routing, privacy, and provenance chaining. However, the truncated summary leaves the classification decision logic unclear, and an agent must call describe_tool for the output schema; this is adequate but not fully complete.

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 all four parameters and the nested policy_parameters object. The description mentions declared_slot, storage_value, compute modes, and parent chaining, but adds no syntax, format, or constraint detail beyond what the schema provides; baseline 3 is appropriate.

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 Summary states a specific verb and resource: recomputing the four canonical EIP-1967 storage slots and classifying a caller-supplied declared_slot/storage_value. That is enough for an agent to know what the tool does, though the core purpose is buried behind infrastructure boilerplate and the description does not explicitly differentiate it from the many other ERC/classify siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and says to use synthetic or anonymised inputs, but gives no guidance on when this tool should be chosen over alternatives. There is no explicit exclusion, prerequisite, or condition that selects this classifier rather than another ERC or classify_* tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_eudr_commodity_scopeEUDR Commodity Scope ClassifierB
Read-onlyIdempotent
Inspect

EUDR Commodity Scope Classifier: OpenChainGraph compute node (compliance_mandate). 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-166-eudr-geolocation-plot-validator. Open at: https://ainumbers.co/chaingraph/art-167-eudr-commodity-scope-classifier.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: Classify an HS code against EUDR Annex I to determine commodity scope (cattle, cocoa, coffee, oil palm, rubber, soya, wood, or out-of-scope), operator/trader role, SME status, DDS filing obligation, and enforcement deadline (large/medium 2026-12-30; micro/SME 2027-06-30). Outputs: commodity, dds_filing_required, deadline, due_diligence_required, entity_role, geo_exemption_eligible, hs4_matched, in_scope, is_micro, is_sme, obligations. Output schema: call describe_tool("classify_eudr_commodity_scope").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: compute modes (auto/server/browser), GPU delegation, transient processing with no storage or logging, and AP2 artifact export with execution_hash. This is substantial extra context, though much of it is generic ChainGraph boilerplate.

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?

The description is heavily bloated with ChainGraph provenance, compute-binding, FV-status, and artifact boilerplate before reaching the actual summary. The key functional information is buried near the end rather than front-loaded. Several sentences do not help an agent select or invoke the tool correctly.

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?

Given the complexity of EUDR scoping, the description lists the output fields, the specific commodities, operator/trader role, SME status, DDS obligation, and enforcement deadlines. It also notes upstream artifact consumption. With no output schema, this level of return-value explanation is sufficient for correct invocation, though some boilerplate obscures the core.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds only indirect parameter meaning by mentioning HS code classification and entity role; it does not explain how to populate policy_parameters.entity or policy_parameters.hs_code. Baseline 3 is appropriate when the schema does the heavy lifting.

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 summary clearly states a specific verb and resource: 'Classify an HS code against EUDR Annex I to determine commodity scope.' It lists the exact commodities and decision outputs, so an agent can immediately tell what the tool does. However, it does not distinguish this classifier from sibling EUDR tools such as run_eudr_readiness_fit, validate_eudr_due_diligence_statement, or score_eudr_country_risk.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives. It mentions consuming an upstream artifact, but that is context about chaining, not usage selection. An agent must infer that this is the HS-code scoping classifier among several EUDR-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_ifrs17_measurement_modelIFRS 17 Measurement Model ClassifierB
Read-onlyIdempotent
Inspect

IFRS 17 Measurement Model Classifier: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-178-ifrs17-csm-rollforward-validator. Open at: https://ainumbers.co/chaingraph/art-177-ifrs17-measurement-model-classifier.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: Classify insurance contracts to their IFRS 17 measurement model: Premium Allocation Approach (PAA) for coverage periods of 12 months or less, Variable Fee Approach (VFA) for direct-participating contracts with investment-linked features (not reinsurance), or General Measurement Model/BBA as the d... Outputs: coverage_period_months, direct_participating, eligible_models, is_reinsurance, measurement_model, paa_eligible, vfa_eligible. Output schema: call describe_tool("classify_ifrs17_measurement_model").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered and the description only needs to add on top. It does add meaningful behavioral context: transient server-side processing with no retention, an explicit "use synthetic or anonymised inputs only" constraint, AP2 artifact emission with execution_hash, and parent_hashes chaining for provenance. Some of this duplicates the schema's own compute-mode description, but the data-handling and input-sanitisation caveats are real added value.

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?

Roughly the first third of the text is shared platform boilerplate (compute binding, Cloudflare Workers, FV-status receipt hash URL) that precedes and obscures the actual purpose. The core statement is also truncated, and output field names are dumped inline instead of being left to the referenced output schema. The information is not front-loaded on the agent's decision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter classifier with annotations covering safety, the description supplies the decision logic, the enumerated outputs, and a pointer to describe_tool for the output schema, which is mostly sufficient. The remaining gap is the shape of policy_parameters.contract, which neither the schema nor the description pins down, so an agent cannot know which keys to send without further exploration.

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 baseline is 3 and the schema itself documents compute, parent_hashes and parent_tool_ids well. However the description does not explain the one input that actually matters, policy_parameters.contract — it lists coverage_period_months, direct_participating, is_reinsurance and the like under the label "Outputs", leaving ambiguous whether those are the expected input keys or the return fields, for a schema that refuses unknown keys.

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 description eventually states a specific verb and resource: classify insurance contracts into IFRS 17 measurement models (PAA, VFA, GMM/BBA) with the qualifying criteria for each. It is buried under infrastructure boilerplate and the summary sentence is even truncated mid-word ("as the d..."), but an agent can still distinguish it from siblings like check_ifrs17_risk_adjustment or track_ifrs17_loss_component_rollforward.

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: the classification rules (PAA for coverage <= 12 months, VFA for direct-participating investment-linked contracts that are not reinsurance) tell the agent what decision the tool performs, and "Output feeds: art-178-ifrs17-csm-rollforward-validator" gives downstream context. There is no explicit when-to-use, when-not-to-use, or comparison against the four other IFRS 17 siblings, so the agent must infer placement in a workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_ledger_consensus_finalityLedger Consensus Finality ClassifierB
Read-onlyIdempotent
Inspect

Ledger Consensus Finality Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-527-classify-ledger-consensus-finality.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: Classifies a ledger-consensus position under a deadline-bounded-inclusion model (XRPL) or a federated-BFT model (Stellar SCP), each expressed as terminal outcome branches rather than a monotone tier ladder. Outputs: settlement_model, outcome, finality_tier, reorg_exposure, required_tier, meets_required_tier, claimed_tier, claim_verdict, chain_label, as_of_ts, draft_pinned, rationale, submitted_at_ledger, included_in_ledger, highest_validated_ledger, result_class, time_bounds_max. Output schema: call describe_tool("classify_ledger_consensus_finality").

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: as_of_ts, chain_label, claimed_outcome, claimed_tier, continuous_history_ok, externalized, highest_validated_ledger, included_in_ledger, issuer_clawback_enabled, last_ledger_sequence, ledger_validated, quorum_slice_trust_ok, required_tier, result_class, settlement_model, submitted_at_ledger, time_bounds_max. Unknown keys are refused.

TDQS

B3.2/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 the safety profile is covered. The description adds real behavioral context the annotations cannot: server-side vs browser delegation semantics, the gpu:true always-delegate rule, transient non-retention of inputs, and the AP2 execution_hash export for chain provenance. It also warns about synthetic-only inputs, which is a genuine usage constraint.

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?

The definition is long and not front-loaded: the actual purpose appears only after compute-node, privacy, AP2 and a raw FV-status URL with a 64-character hash. The literal URL and hash snapshot text do not help an agent decide or invoke, and they dilute the genuinely useful summary and output list.

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?

Given the complexity (nested policy_parameters, dual settlement models) and the absence of an output schema, the description does supply the output field names and the compute-mode/determinism model. An agent knows it gets a terminal outcome branch plus finality and reorg fields and that results can be produced server-side or delegated to the browser. It stops short of explaining how required_tier and claim_verdict are derived, but it covers enough to call the tool 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 description coverage is 100%, so compute, parent_hashes, parent_tool_ids and the nested policy_parameters are all documented in the schema. The description adds little for the parameters themselves beyond repeating the compute modes. It does note the AP2 chaining semantics of parent_hashes indirectly via the execution_hash provenance sentence, but the baseline of 3 is appropriate when the schema does the heavy lifting.

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 Summary sentence states a specific verb and resource: it classifies a ledger-consensus position under either a deadline-bounded-inclusion model (XRPL) or a federated-BFT model (Stellar SCP). Naming those two settlement models distinguishes it from nearby siblings like classify_settlement_finality and classify_bold_challenge_finality. The purpose is however buried behind two paragraphs of compute-node and receipt boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or named alternative tool. The settlement-model mention implies the domain, but nothing tells an agent to prefer this over the many sibling finality classifiers (classify_settlement_finality, classify_settlement_asset_finality, check_linea_l2_finality_window). The caller must infer selection from the model names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_mla_charge_inclusionMLA Charge-Inclusion ClassifierA
Read-onlyIdempotent
Inspect

MLA Charge-Inclusion Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-615-mla-charge-inclusion-classifier.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: Closed-set lookup of whether a charge type must be included in the Military Lending Act MAPR under 32 CFR 232.4(c) and 232.4(d). Outputs: charge_type, is_credit_card_account, short_term_exception_claimed, included_in_mapr, citation, basis, conditional_limit_usd, manual_review_required, manual_review_reason. Output schema: call describe_tool("classify_mla_charge_inclusion").

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: charge_type. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false. The description adds meaningful context beyond annotations: deterministic compute behavior, server-side vs browser delegation, transient non-retention of inputs, AP2 artifact generation with execution_hash, and an offline-verifiable FV-status receipt.

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?

The core purpose is buried after several lines of platform boilerplate about OpenChainGraph, Cloudflare Workers, compute modes, and FV-status receipts. Repeated statements such as 'Deterministic OpenChainGraph compute node' and long provenance URLs make it much longer than necessary for tool selection.

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?

Given the absence of an output schema, the description usefully lists all output fields and directs the caller to describe_tool for the schema. It also covers compute-mode behavior, privacy, artifact export, and legal citations, leaving only minor gaps around alternatives and parameter-level guidance.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description repeats some compute-mode behavior and lists outputs, but adds little parameter-level meaning beyond the schema baseline.

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?

The summary states a very specific verb and resource: a closed-set lookup of whether a charge type must be included in the Military Lending Act MAPR under 32 CFR 232.4(c) and 232.4(d). This is clearly distinguishable from adjacent MAPR computation or actuarial tools, even though the description does not name those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does but does not say when to use it instead of alternatives such as compute_mla_mapr or recompute_mla_mapr_actuarial. There is no when-not guidance or prerequisite context beyond the general compute-mode boilerplate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_nis2_entityNIS2 Entity Scope Classifier (Essential / Important / Out-of-Scope)B
Read-onlyIdempotent
Inspect

NIS2 Entity Scope Classifier (Essential / Important / Out-of-Scope): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-142-nis2-art21-gap-checker. Open at: https://ainumbers.co/chaingraph/art-141-nis2-entity-scope-classifier.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: Classify an entity as Essential, Important, or Out-of-Scope under NIS2 Directive 2022/2555 Annex I and II, applying sector codes, employee/turnover size thresholds, and automatic-essential carve-outs (DNS providers, qualified trust service providers, public electronic communications networks). Outputs: annex, annual_turnover_eur, applicable_penalties, automatic_essential, classification_basis, employee_count, entity_classification, sector_code. Output schema: call describe_tool("classify_nis2_entity").

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". Unknown keys are refused.

TDQS

B3.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), and the description adds genuinely useful behaviour: it is a deterministic compute node, compute:"auto" runs server-side on Workers while compute:"browser" returns a delegation URL, gpu:true always delegates, and inputs are processed transiently without storage or logging so synthetic/anonymised inputs are required. It also discloses the AP2 artifact with execution_hash. The only loss is that this value is diluted by verbose platform boilerplate.

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?

Roughly the first two-thirds of the text is OpenChainGraph/AP2/FV-status plumbing and a URL, while the actual task definition arrives last as a 'Summary'. The ordering inverts what an agent needs first, and several phrases ('Deterministic OpenChainGraph compute node' twice) are redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The enumerated outputs (annex, entity_classification, automatic_essential, applicable_penalties, etc.) and the downstream link make the tool callable, but because all four parameters are optional and the nested policy_parameters object carries no per-field types or descriptions, an agent cannot tell which inputs are mandatory to obtain a valid classification.

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%, so the parameter names are already documented, and the description adds real meaning by tying sector_code, employee_count, annual_turnover_eur, is_dns_provider, is_qualified_trust_service_provider and is_public_electronic_comms_network to a decision function with size thresholds and automatic-essential carve-outs. However, it never says which of these are actually needed (0 required params) or how missing values are treated, so it does not fully compensate.

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 'Summary' sentence names a specific verb and resource — classify an entity as Essential/Important/Out-of-Scope under NIS2 2022/2555 Annex I and II — and names the exact decision inputs. It is clearly distinguishable from siblings like calculate_nis2_penalty_exposure or score_nis2_incident_significance, but the useful content is buried behind ~120 words of platform boilerplate, so the purpose is not front-loaded.

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?

'Output feeds: art-142-nis2-art21-gap-checker' implies where this sits in a chain (a scope determination that precedes the Art 21 gap check), but there is no explicit when-to-use, no exclusions, and no statement of prerequisites. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_qm_apr_apor_spreadQM APR-APOR Spread ClassifierA
Read-onlyIdempotent
Inspect

QM APR-APOR Spread Classifier: OpenChainGraph compute node (compliance_mandate). 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-218-qm-points-and-fees. Open at: https://ainumbers.co/chaingraph/art-219-qm-apr-apor-spread.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: QM APR-APOR spread test per Reg Z §1026.43(e)(2)(vi) and §1026.43(b)(4). Outputs: apor_pct, applicable_threshold_pct, apr_pct, fr_citation, general_qm_pass, headroom_pct, hpct_threshold_pct, is_hpct, is_manufactured_housing, lien_type, loan_amount, note, qm_status, regulatory_basis, spread_pct, threshold_basis, year. Output schema: call describe_tool("classify_qm_apr_apor_spread").

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: is_manufactured_housing, lien_type. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses real behavior: server-side vs browser-delegated execution, gpu:true always delegating, transient non-logged input handling, AP2 artifact export with execution_hash, and an upstream dependency on art-218-qm-points-and-fees. It loses a point for burying provenance/verification details in boilerplate rather than stating what the returned artifact guarantees.

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?

The opening is redundant ('QM APR-APOR Spread Classifier: OpenChainGraph compute node... Deterministic OpenChainGraph compute node'), and a full FV-status URL containing a 64-character hash plus a spec landing-page URL consume significant space with no selection or invocation value. The actual purpose statement and regulatory basis are pushed to the end, behind infrastructure boilerplate, so the description is neither front-loaded nor tight.

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?

For a chained compute node with four parameters and no output schema, the description supplies the regulation, the full output field list, the upstream artifact to chain from, and a describe_tool pointer for the schema — enough to invoke it correctly. Gaps are that the decision inputs (apr_pct, apor_pct, lien_type, loan_amount) are never explained and no sibling distinguishing guidance is given.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds nothing parameter-specific beyond restating compute-mode rules that already live in the schema, and the nested fields (year, apr_pct, apor_pct, lien_type) remain untyped/undescribed in both places — baseline 3.

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 description names a specific computation — the QM APR-APOR spread test under Reg Z §1026.43(e)(2)(vi) and §1026.43(b)(4) — and enumerates the exact outputs (spread_pct, general_qm_pass, hpct_threshold_pct, etc.), so an agent can tell what it computes. It falls short of 5 because it never contrasts itself with close siblings like check_qm_points_and_fees, compute_reg_z_appendix_j_apr, or lookup_reg_z_thresholds.

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: the Reg Z citation and output list signal when the tool is relevant, and 'Use synthetic or anonymised inputs only' constrains input handling. There is no explicit when-to-use/when-not-to-use statement and no routing to the sibling QM tools that an agent could easily confuse with this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_rate_rec_5pct_thresholdRate Reconciliation 5% Threshold ClassifierA
Read-onlyIdempotent
Inspect

Rate Reconciliation 5% Threshold Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-635-rate-rec-5pct-threshold-classifier.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: Applies the quantitative 5 percent threshold of ASC 740-10-50-12A(b), as amended by FASB Accounting Standards Update No. Outputs: reconciling_item_category, category_recognized, reconciling_item_amount, pretax_income, statutory_rate_pct, entity_is_public_business_entity, threshold_base_amount, threshold_amount, pct_of_threshold_base, crosses_5pct_threshold, must_disclose_separately, required_disaggregation, disaggregation_citation, denominator_near_zero_caveat, management_judgment_required, not_assessable_reason, break_even_judgment_note, citation, basis. Output schema: call describe_tool("classify_rate_rec_5pct_threshold").

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: reconciling_item_amount, pretax_income, statutory_rate_pct. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses server-side versus browser delegation behavior, GPU delegation semantics, transient processing and non-retention of inputs, and provenance/export behavior via execution_hash. These are meaningful operational traits for an agent to know before invoking the tool. It does not contradict the readOnly/idempotent/non-destructive annotations.

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?

The description is bloated with repeated ChainGraph boilerplate, a long URL, a FV-status hash, and a directive to call describe_tool. The actual purpose appears after generic compute-node language, so it is not front-loaded. Much of the text does not help an agent select or invoke the tool correctly.

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?

For a complex compliance classifier with nested policy inputs and no output schema, the description usefully lists output fields and explains execution/provenance behavior. The schema covers the required input structure, so the main remaining gap is interpretive usage guidance rather than missing invocation context. Overall it is substantively complete, though not polished.

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 input schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters in detail. The description adds little parameter-specific meaning beyond repeating compute defaults and listing output fields. Baseline 3 is appropriate when the schema carries parameter semantics.

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 description identifies a specific regulatory computation: applying the ASC 740-10-50-12A(b) quantitative 5 percent threshold. That is substantially clearer than the name alone, and the tool can be distinguished from generic classify tools. It does not explicitly contrast itself with the many sibling classifiers, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and a privacy constraint, but gives no when-to-use or when-not-to-use guidance relative to alternatives. There is no indication of what inputs are appropriate, what decisions this classifier supports, or when another sibling tool should be selected instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_redline_round_changesRedline Round ClassifierB
Read-onlyIdempotent
Inspect

Redline Round Classifier: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-589-redline-round-classifier.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: Classifies per-segment changes between two negotiation rounds of the same document (paragraph or clause-segmented structured text, pasted or pre-extracted; never parses DOCX or any other binary format). Outputs: verdict, reason, round_summary, round_chain, classifications, diff_transcript, rejected_inputs, scope_note, attribution_note. Output schema: call describe_tool("classify_redline_round_changes").

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: document_id, prior_round_digest, round, segments. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, but the description adds substantive context: deterministic computation, server-side vs browser-side execution, transient processing with no storage/logging, and export of an AP2 artifact with execution_hash. That is real behavioral disclosure beyond 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is boilerplate-heavy and poorly front-loaded: it opens by restating the title and node type, spends a long paragraph on compute binding, includes an FV-status hash URL, and only reaches the actual purpose in the 'Summary' near the end. Much of this does not help an agent select or invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It covers input shape, privacy constraints, compute modes, and enumerates output fields, which is adequate for a compute tool with no output schema and strong annotations. It still omits sibling differentiation and does not explain what the verdict values or round semantics actually mean.

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%, so the baseline is 3. The description adds the required policy_parameters keys and states 'unknown keys are refused' (though the schema shows additionalProperties: {}), but otherwise it largely repeats the compute-mode semantics already documented in the schema.

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 'Summary' sentence names a specific verb+resource: classifies per-segment changes between two negotiation rounds of a structured-text document. That is clear enough to distinguish the operation, but the purpose is buried near the end and the definition never distinguishes it from siblings such as redline_diff or redline_verify.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over redline_diff or redline_verify. The only usage-like statements are input constraints ('never parses DOCX', 'use synthetic or anonymised inputs') and a long explanation of the compute parameter, which is parameter semantics rather than tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_safeguarding_methodCASS 15 Safeguarding Method ClassifierC
Read-onlyIdempotent
Inspect

CASS 15 Safeguarding Method Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-500-classify-safeguarding-method.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: Classifies each caller-declared funds stream of a UK payment or e-money firm on three questions: whether the funds are relevant funds, whether the safeguarding method asserted for them (segregation under CASS 15.3, or an insurance policy or comparable guarantee under CASS 15.5) is coherent with t... Outputs: as_of_date, audit_exemption_indicator, citations, classification_verdict, coherent_count, determinations, incoherent_count, judgment_stream_count, minor_unit_exponent, note, open_judgment_count, rationale, ruleset, stream_count. Output schema: call describe_tool("classify_safeguarding_method").

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: as_of_date, relevant_funds_high_water_minor_units, streams, weeks_observed. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, non-destructive, idempotent, closed-world behavior, so the description correctly spends its words elsewhere: it discloses that inputs are processed transiently and not stored or logged, that synthetic/anonymised inputs are required, and that an AP2 artifact with execution_hash is exported for chain provenance. These are meaningful traits beyond the annotation set, though some of the compute-mode explanation duplicates the schema's compute description.

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?

The text is front-loaded with identity, hosting, compute-mode, and FV-status boilerplate before the actual purpose appears. It is also visibly truncated mid-sentence and appends a bare output-field list plus a redirect to describe_tool, so several sentences do not earn their place relative to the one paragraph that matters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by enumerating the returned fields (classification_verdict, determinations, coherent_count, etc.), which helps. However the substantive summary is cut off, so the third classification question and the treatment of the audit_exemption_indicator/open_judgment outputs are left unexplained for a tool with nested policy parameters.

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 explains compute, parent_hashes, parent_tool_ids, and the policy_parameters envelope including required keys. The description adds little parameter-level meaning beyond naming a few fields (streams, as_of_date) in passing, which is the expected baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The core statement — classifying each caller-declared funds stream of a UK payment/e-money firm on three questions (relevant funds, safeguarding-method coherence, and a third that is cut off mid-word as 'is coherent with t...') — is specific but incomplete. The first half of the description is generic OpenChainGraph/compute boilerplate rather than purpose. It never distinguishes itself from close siblings such as check_safeguarding_reconciliation or build_safeguarding_audit_evidence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to reach for this classifier versus the adjacent safeguarding tools, nor on prerequisites (e.g. what a 'caller-declared funds stream' record must contain). The only conditional language concerns compute routing ('auto'/'server'/'browser'), which is execution placement, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_sco60_exposureSCO60 Crypto-Asset Exposure ClassifierA
Read-onlyIdempotent
Inspect

SCO60 Crypto-Asset Exposure Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-281-sco60-crypto-asset-exposure-classifier.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: Classifies a crypto-asset position into Basel SCO60 Group 1a, 1b, 2a, or 2b (BCBS d545 Prudential treatment of cryptoasset exposures), applies the Group 1 infrastructure-risk capital add-on, and checks the Group 2 exposure limit of 1% of Tier 1 capital. Outputs: base_risk_weight_pct, classification, gaps, group, group2_exposure_pct_tier1, group2_limit_breached, infra_addon_capped, infra_addon_pct_applied, infra_addon_pct_input, pillar3_precheck_pass, risk_weight_applied_pct. Output schema: call describe_tool("classify_sco60_exposure").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses meaningful behavioral details: default server-side compute for `gpu:false` kernels, `browser` delegation behavior, `gpu:true` forced delegation, transient processing with no storage or logging, and an AP2 provenance artifact with `execution_hash`. It does not contradict the read-only, idempotent, non-destructive annotations.

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?

The definition is bloated with OpenChainGraph boilerplate, a long FV-status path with a full hash, and execution-environment details before the actual SCO60 classification summary. The core purpose is buried rather than front-loaded, and many sentences do not help an agent select or invoke the tool.

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?

Because there is no output schema, the description usefully enumerates output fields such as `classification`, `base_risk_weight_pct`, `group2_limit_breached`, and `risk_weight_applied_pct`. It also covers compute behavior and privacy, though it omits detail about the nested `policy_parameters` shape and the v1-vs-v2 distinction.

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 `compute`, `parent_hashes`, `parent_tool_ids`, and `policy_parameters`. The description restates the compute-mode semantics but adds little beyond the schema, and it does not clarify the expected shape of `policy_parameters.position`.

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 description states a specific verb and resource: it classifies a crypto-asset position into Basel SCO60 Groups 1a/1b/2a/2b, applies an infrastructure-risk add-on, and checks the Group 2 limit. That is much clearer than a generic classifier, but it never distinguishes itself from the sibling `classify_sco60_exposure_v2`, which is the most relevant alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives compute-mode guidance and a privacy constraint ('Use synthetic or anonymised inputs only'), but it does not say when to use this tool versus `classify_sco60_exposure_v2` or any other sibling. There is no explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_sco60_exposure_v2SCO60 Group 2 Exposure Limit V2B
Read-onlyIdempotent
Inspect

SCO60 Group 2 Exposure Limit V2: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-711-sco60-crypto-asset-exposure-classifier-v2.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: Book-level Group 2 exposure-limit assessor for banks' cryptoasset exposures (BCBS d545 Prudential treatment of cryptoasset exposures, SCO60.116-119; the corrected successor to the single-position classifier: the 1% figure is a general-expectation threshold, the must-not-exceed limit is 2% of Tier... Output schema: call describe_tool("classify_sco60_exposure_v2").

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: bank_tier1_capital, group2_positions. Unknown keys are refused.

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior, while the description adds meaningful context about deterministic server/browser compute delegation, transient processing without storage or logging, and AP2 artifact export with execution_hash. The disclosure is rich, though it remains boilerplate-heavy and the summary is truncated.

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?

The description repeats the title, spends substantial space on OpenChainGraph compute-node boilerplate, includes a long URL and FV-status hash, and buries the actual regulatory purpose. The final summary is also cut off mid-sentence, which harms structure rather than helping it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex regulatory classification tool with no output schema, the description should explain what the assessment returns, such as exposure ratio, limit status, or decision fields. Instead it only mentions an AP2 artifact and truncates the threshold summary, leaving the result contract unclear.

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 compute, parent hashes, parent tool IDs, and policy parameters. The description reinforces compute-mode behavior and AP2 provenance but adds little new meaning for the nested policy parameters beyond what the schema provides.

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 description identifies a specific book-level Group 2 exposure-limit assessor for banks' cryptoasset exposures under BCBS d545 SCO60.116-119. It also distinguishes itself from the single-position classifier by calling itself the corrected successor, though the repeated title and boilerplate delay the core purpose.

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 'corrected successor to the single-position classifier' wording implies when this tool should be preferred, and the compute modes give operational guidance. However, it never explicitly states when to use this versus classify_sco60_exposure or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_settlement_asset_finalitySettlement-Asset & Legal-Finality ClassifierA
Read-onlyIdempotent
Inspect

Settlement-Asset & Legal-Finality Classifier: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2026-Q3 (ECB Pontes pilot end-Q3 2026; DTCC Collateral AppChain production Oct 2026. Verify SFD/PFMI designations against current regulatory status before that date.). 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-56-tokenized-settlement-fit-diagnostic. Output feeds: art-58-cross-network-settlement-validator, 506-onchain-cash-leg-finality-checker, 510-digital-asset-regulatory-classifier. Open at: https://ainumbers.co/chaingraph/art-59-settlement-asset-finality-classifier.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: Classifies the settlement asset (CBM token / tokenized commercial bank deposit / regulated stablecoin / e-money token) against its legal-finality regime (EU SFD 98/26/EC / CPMI-IOSCO PFMI Principle 8 / UCC Article 12 control) -> finality tier 1-4 + singleness-of-money verdict. Outputs: applicable_regime, finality_gaps, finality_tier, note, recommendation, settlement_asset_class, singleness_verdict, status_asof. Output schema: call describe_tool("classify_settlement_asset_finality").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive, closed-world), the description discloses genuinely useful behaviour: deterministic server-side compute on Workers, the compute:"browser" delegation path, transient processing with no storage or logging, and an AP2 artifact export carrying execution_hash. That materially exceeds what the annotations convey. It stops short of describing failure modes or the cost/latency of browser delegation, so it is 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and poorly front-loaded: a regulatory deadline, a documentation URL, and an inline FV-status content hash precede any statement of what the tool does, and the actual purpose appears only in the trailing summary. Some content (data handling, compute modes, artifact chaining) earns its place, but the URL, hash, and 2026 deadline are noise for tool selection.

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?

There is no output schema, so the description carries the burden of return values, and it lists them explicitly (applicable_regime, finality_gaps, finality_tier, singleness_verdict, status_asof, etc.). Combined with the chaining information, compute-mode semantics, and data-handling disclosure, an agent has enough to call it correctly. The one gap is the meaning of the nested policy_parameters inputs, left entirely to the schema's empty properties.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters, and the baseline is 3. The description reinforces the compute-mode semantics and explains the upstream-artifact role of the parent hashes, but it adds nothing about the seven nested policy_parameters keys (issuer, jurisdiction, governing_law, singleness_test, settlement_asset, transfer_mechanism, finality_designation), which the schema leaves as untyped empty properties.

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 final summary sentence gives a specific verb and resource: it classifies the settlement asset (CBM token, tokenized deposit, stablecoin, e-money token) against named legal-finality regimes and returns a tier plus a singleness verdict. That is far more specific than a tautology. However, the key statement is buried at the end behind compute/provenance boilerplate, and the description never distinguishes this tool from close siblings such as classify_settlement_finality or check_cash_leg_finality.

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 the artifact chain: the description names the upstream artifact it consumes (art-56) and the downstream tools it feeds, which tells an agent where it sits in a workflow. It gives no explicit statement of when to choose this over classify_settlement_finality or check_cash_leg_finality, and the regulatory-deadline note is a timing warning rather than routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_settlement_finalitySettlement Finality ClassifierA
Read-onlyIdempotent
Inspect

Settlement Finality Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-492-classify-settlement-finality.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: Vendor-neutral settlement-finality classifier covering three settlement models, each on its own ordered tier ladder: an optimistic challenge window (soft, posted, challengeable, final), a validity proof (soft, committed, proven_unfinalized, final) and single-slot BFT consensus (soft, final). Outputs: as_of_ts, chain_label, claim_verdict, claimed_tier, draft_pinned, earliest_final_at, finality_tier, meets_required_tier, rationale, reorg_exposure, required_tier, settlement_model, tier_ladder, tier_rank. Output schema: call describe_tool("classify_settlement_finality").

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: as_of_ts, assertion_created_at, batch_committed_at, batch_posted, chain_label, challenge_window_seconds, claimed_tier, expected_proof_cadence_seconds, included_in_block, l1_finality_seconds, l1_finalized, proof_accepted, proof_submitted_at, quorum_committed, quorum_pct_of_stake, required_tier, settlement_model. Unknown keys are refused.

TDQS

A3.7/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). The description adds substantial behavioral context: compute modes (auto/server/browser), transient processing with no storage/logging, synthetic-input recommendation, and AP2 artifact export with execution_hash. This goes well beyond 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is cluttered with platform-specific boilerplate (OpenChainGraph compute node, FV-status receipt, chain provenance details) before reaching the core purpose. The purpose statement is buried after technical implementation details, making it harder to scan quickly.

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?

Given the absence of an output schema, the description helpfully lists all output fields. It also explains compute behavior and data handling. Combined with rich annotations and full schema descriptions, an agent has enough context to invoke the tool correctly, though explicit usage guidance 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%, so the schema already documents all parameters including the policy_parameters object. The description adds little parameter-level detail beyond what is in the schema; it does list output fields, but that is not parameter semantics.

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?

The description clearly identifies the tool as a vendor-neutral settlement-finality classifier covering three distinct settlement models with their tier ladders (optimistic challenge, validity proof, single-slot BFT). This specific verb+resource statement distinguishes it from other finality classification tools in the sibling list.

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 description implies usage (classify settlement finality across these models) but provides no explicit when-to-use/when-not guidance or named alternatives. With many similar-sounding finality tools available, an agent must infer selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_t1_posttrade_timingT+1 Post-Trade Timing ClassifierA
Read-onlyIdempotent
Inspect

T+1 Post-Trade Timing Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-506-classify-t1-posttrade-timing.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: Classifies the post-trade timings a caller supplies to answer the question a settlement readiness programme is actually trying to answer: which step breaches its cut-off under the shorter settlement cycle that did not breach under the longer one. Outputs: at_risk_count, at_risk_margin_seconds, baseline_cycle, baseline_not_compared_count, breached_count, cycle_compared, first_failing_step, first_newly_breaching_step, newly_breaching_count, note, on_time_count, rationale, step_count, steps, target_cycle, time_zone_offset_minutes, trade_ref, trade_timestamp, undetermined_count, venue_cutoff, verdict, verdict_reason. Output schema: call describe_tool("classify_t1_posttrade_timing").

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: at_risk_margin_seconds, baseline_cycle, steps, target_cycle, time_zone_offset_minutes, trade_ref, trade_timestamp, venue_cutoff. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world and non-destructive, so the bar is lower — yet the description still adds real behaviour: transient processing with no storage or logging, a synthetic-input requirement, forced browser delegation for gpu:true, and an AP2 artifact carrying execution_hash for chaining. Much of this is templated boilerplate shared with sibling nodes, and nothing discloses failure modes, keeping it at 4 rather than 5. No contradiction with 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is not front-loaded: it arrives only after repeated 'OpenChainGraph compute node' phrasing, compute-mode boilerplate, a privacy notice and two URLs including a long FV-status hash path. The output-field run-on adds bulk without structure. Substantive content exists, but the ordering and duplication waste the reader's attention.

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?

Outputs are enumerated and the agent is routed to describe_tool for the full output schema, so return values are adequately covered even without a formal output schema. Required policy keys are named in the description and schema. The remaining gap is the shape and semantics of the nested steps array, which is left entirely to the schema.

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 compute, parent_hashes, parent_tool_ids and policy_parameters — this sets the baseline at 3. The description adds nothing about input semantics: it lists output fields rather than explaining what a 'step' looks like, what units at_risk_margin_seconds takes, or the venue_cutoff format, so it neither compensates nor detracts.

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 summary sentence gives a specific verb and resource ('Classifies the post-trade timings a caller supplies') and frames the real question — which step breaches under the shorter cycle but not the longer one. That is far more than a restatement of the name. It does not name a sibling for contrast, and the purpose is buried after a paragraph of node boilerplate, so it stops short of a 5.

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 'settlement readiness programme' framing implies when the tool is relevant, and the compute-mode paragraph implicitly tells the agent about server vs browser routing. However, there is no explicit when-to-use/when-not guidance and no pointer to alternatives such as run_t1_readiness_diagnostic or compute_settlement_efficiency_kpi, leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_vida_platform_deemed_supplierViDA Platform Deemed Supplier ClassifierC
Read-onlyIdempotent
Inspect

ViDA Platform Deemed Supplier Classifier: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-163-vida-oss-registration-router. Open at: https://ainumbers.co/chaingraph/art-162-vida-platform-deemed-supplier-classifier.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.

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". See the tool's manifest for field names.

TDQS

C2.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world, so the bar is lower — yet the description still adds substantive context: the node is deterministic, gpu:true always delegates to the browser, inputs are processed transiently and never stored or logged, and an AP2 artifact with execution_hash is exported for chain provenance. The only weak spot is the opaque 'gpu:false nodes with a registered kernel' phrasing.

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?

It is front-loaded, but redundant ('OpenChainGraph compute node' then 'Deterministic OpenChainGraph compute node') and it trails off into a landing-page URL and a 64-character FV-status hash that an agent cannot act on. Roughly half the text is boilerplate that repeats across every node rather than telling this tool apart.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should describe what a deemed-supplier decision returns — the classification outcome, conditions, or rationale — but it only mentions an AP2 artifact wrapper and execution_hash. For a four-parameter compliance decision node, the essential input field names and the result shape are both absent.

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 reported at 100%, so the baseline is 3; the description adds nothing about compute or parent_hashes beyond what the schema already says. Critically, the one parameter that carries the actual business input (policy_parameters) is undocumented in both places, and the description only deflects with 'See the tool's manifest for field names'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name and title give a clear verb+resource ('classify ... deemed supplier' in the ViDA context), but the description body never restates what the classification actually decides — it spends its opening words on 'OpenChainGraph compute node (compliance_mandate)', which is infrastructure taxonomy, not purpose. Nothing distinguishes it from near siblings like assess_vida_drr_reporting_obligation, route_vida_oss_registration, or assess_vida_recapitulative_migration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only routing hint is 'Output feeds: art-163-vida-oss-registration-router', which tells an agent where the result goes but not when to choose this tool over the other ViDA tools. There are no prerequisites, no exclusions, and the compute-mode guidance merely re-states schema semantics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_agentic_payment_protocolsAgentic Payments Protocol Comparator & Field CrosswalkA
Read-onlyIdempotent
Inspect

Compare agentic payment protocols (AP2, ACP/Shared Payment Token, x402, Visa TAP, Mastercard Agent Pay) across credential, signing, scope, rail, identity, and audit dimensions; optionally recommend a fit for a scenario. Read-only local lookup and comparison — no state change, no keys held, nothing sent or registered anywhere. Use when a developer or strategist needs to orient across the fragmenting agentic-payments standards. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("compare_agentic_payment_protocols").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world, non-destructive, but the description adds real value beyond them: local lookup, no keys held, nothing sent or registered, client-side execution via the AIN Bridge, zero PII and zero network. The widget-rendering behavior is a disclosure the agent could not get from annotations alone, though return content is not characterized.

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?

Front-loaded with the scope sentence, and each following clause (read-only guarantees, usage context, widget mechanics, schema pointer) contributes information. Slightly verbose with promotional phrasing ('fragmenting') but no redundancy that costs the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description only redirects the agent to describe_tool rather than summarizing the comparison output shape, so the agent cannot anticipate what comes back. The execution model and safety posture are well covered, but the input key vocabulary and return structure remain unresolved for a widget-backed tool.

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%, so the baseline is 3, and the single `inputs` object is a free-form map of 'tool input element IDs' whose valid keys are not enumerated anywhere in the description. The description does point to describe_tool("compare_agentic_payment_protocols") and the manifest, which is helpful, but it adds no concrete key names or value formats.

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 concrete verb and resource (compare agentic payment protocols) and names the exact five protocols plus the six comparison dimensions. It does not differentiate from near-overlapping siblings like compare_agentic_rail_protocols, crosswalk_agent_payment_rail_trust, or select_agentic_checkout_protocol, so an agent must infer the boundary.

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 an implied audience/context ('when a developer or strategist needs to orient across the fragmenting agentic-payments standards') and mentions an optional recommend-a-fit mode, but never states when to pick this over the sibling comparator/crosswalk/selector tools. No exclusions or prerequisites are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_agentic_rail_protocolsAgentic Payments Protocol ComparatorB
Read-onlyIdempotent
Inspect

Agentic Payments Protocol Comparator: OpenChainGraph compute node (routing_policy). 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. Output feeds: art-16-google-ap2-mandate-builder, art-23-visa-trusted-agent-protocol-inspector, art-24-mastercard-agentic-token-builder, art-25-a2a-agent-card-validator, art-26-x402-payload-decoder-flow-simulator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-22-agentic-payments-protocol-comparator.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: Compares AP2, ACP, x402, Visa TAP, Mastercard Agentic Token, and Tempo MPP (Machine Payments Protocol) across 8 dimensions (backer, artifact, signing, scope, rail, identity, audit, status) and 6 agentic scenarios. Outputs: crosswalk, note, protocol_names, protocols_compared, protocols_detail, recommendation, scenario. Output schema: call describe_tool("compare_agentic_rail_protocols").

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: protocols. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint/idempotentHint, the description discloses that execution is deterministic, that compute:"auto" runs server-side on Cloudflare Workers for gpu:false kernels while compute:"browser" returns a delegation URL, and that gpu:true nodes always delegate. It also states inputs are processed transiently and not stored or logged, warns to use synthetic/anonymised inputs only, and notes the export carries execution_hash for chain provenance.

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?

The real purpose statement arrives after a long preamble of routing_policy, privacy, downstream-feed IDs, a raw URL, and an FV-status hash that an agent does not need in order to call the tool. Front-loading is inverted: the most useful sentence is last.

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?

Despite the clutter, the definition covers the essentials for a read-only comparison node: what is compared, the compute/delegation modes, privacy posture, provenance export, enumerated output fields (crosswalk, protocols_detail, recommendation, scenario), and a describe_tool pointer. Only the sibling disambiguation 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%, so the compute enum, parent_hashes chaining, and policy_parameters requirements are already documented. The description restates the compute default and the 'protocols is required, unknown keys refused' rule, plus the gpu:true delegation exception, but adds little syntax or format detail beyond the schema.

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 'Summary:' line gives a precise verb and resource: comparing AP2, ACP, x402, Visa TAP, Mastercard Agentic Token and Tempo MPP across 8 dimensions and 6 scenarios, with named outputs. However, it is buried at the end of infrastructure boilerplate, and no distinction is drawn against the near-identical sibling compare_agentic_payment_protocols or crosswalk_agent_payment_rail_trust.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to pick this comparator rather than compare_agentic_payment_protocols, select_agentic_checkout_protocol, or crosswalk_agent_payment_rail_trust. The only routing guidance is about compute mode (auto/server/browser), not about tool selection, so the agent must guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_basel_2023_vs_2026Basel 2023-vs-2026 Capital-Delta ComparatorA
Read-onlyIdempotent
Inspect

Basel 2023-vs-2026 Capital-Delta Comparator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-357-basel-2023-vs-2026-capital-delta-comparator.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: Runs the same portfolio through the 2023 Basel III Endgame NPR risk-weight framework and the 2026 reproposal (2026-03-19, three NPRs) framework, then reports the RWA and minimum-capital delta -- the 'reproduce the $87.7bn relief story on OUR book' tool. Outputs: business_indicator, constants_version, credit_rwa_2023, credit_rwa_2026, delta_capital, delta_capital_pct, delta_rwa, direction, disambiguation, op_capital_2023, op_capital_2026, op_rwa_2023, op_rwa_2026, portfolio_summary, referenced_tool_ids, rule_status, source, total_capital_2023, total_capital_2026, total_rwa_2023, total_rwa_2026, unrecognized_asset_class. Output schema: call describe_tool("compare_basel_2023_vs_2026").

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: business_indicator, exposures. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavior beyond the annotations: compute auto/server/browser semantics, GPU delegation, transient processing with no storage or logging, synthetic-only inputs, deterministic execution, and AP2 artifact export with execution_hash. It does not contradict the readOnly/idempotent/non-destructive annotations, though the AP2 export behavior could have been clarified further.

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?

The description is heavily bloated and not front-loaded: OpenChainGraph node boilerplate, Cloudflare Workers deployment detail, an FV-status URL, and offline-receipt commentary all precede the actual purpose. The core purpose and output list are valuable but buried, so many sentences do not earn their place for tool selection.

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?

For a complex comparator with no output schema, the description does list the return fields and provides key operational context such as compute modes, data handling, and artifact provenance. It remains incomplete on input requirements and when to choose this comparator over adjacent Basel/RWA tools, but an agent has enough to invoke it 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 description coverage is 100%, so the baseline is 3. The description repeats the compute-mode behavior already documented in the schema and does not add meaning for policy_parameters, business_indicator, exposures, parent_hashes, or parent_tool_ids.

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?

The description states a specific verb and resource: run the same portfolio through the 2023 Basel III Endgame NPR and 2026 reproposal frameworks, then report RWA and minimum-capital deltas. The 'reproduce the $87.7bn relief story on OUR book' framing makes the comparison purpose concrete and distinguishes it from generic Basel or RWA calculators in the sibling list.

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 description implies the use case ('reproduce the $87.7bn relief story on OUR book') but gives no explicit when-to-use vs when-not guidance and names no alternative sibling tools. It also does not say when an agent should choose this over compute_basel31_delta, compute_rwa_scenarios, or compute_rwa_erba_2026.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_corridor_costCorridor Cost Comparator (World Bank RPW)A
Read-onlyIdempotent
Inspect

Corridor Cost Comparator (World Bank RPW): OpenChainGraph compute node (analytics_mandate). 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-248-compute-remittance-disclosure, art-250-model-stablecoin-corridor-economics. Open at: https://ainumbers.co/chaingraph/art-249-compare-corridor-cost.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: Benchmarks a remittance corridor total cost (fee % + FX margin %) against the World Bank Remittance Prices Worldwide (RPW) Q1 2026 snapshot for the same origin-destination pair, the SmaRT global average (6.36%), and the SDG 10.c 3% target. Outputs: corridor, cost_at_200_usd, cost_at_500_usd, disambiguation, fee_pct, from_country, fx_margin_pct, meets_sdg_target, pii_note, regulatory_basis, rpw_benchmark_pct, rpw_corridor_avg_200, rpw_corridor_avg_500, rpw_service_count, sdg_target_pct, send_amount, service_name, smart_global_avg_pct, table_source, table_version, to_country, total_cost_pct, vs_rpw_benchmark, vs_sdg_target, vs_smart_avg. Output schema: call describe_tool("compare_corridor_cost").

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: from_country, fx_rate_mid, fx_rate_used, provider_fee, send_amount, service_name, to_country. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive and closed-world, and the description adds real behavioral context beyond them: compute:'auto'/'server' resolve server-side only for gpu:false nodes with a registered kernel, compute:'browser' returns a delegation URL instead, gpu:true always delegates, inputs are transient and not stored or logged, and an AP2 artifact with execution_hash is exported. It does not describe pagination/response shape, but with annotations covering safety this is solid disclosure.

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?

Placeholder.

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?

No output schema exists, but the description enumerates the full output field set (corridor, total_cost_pct, vs_rpw_benchmark, vs_sdg_target, meets_sdg_target, pii_note, etc.), which compensates. Inputs are fully covered by the schema and compute/provenance behavior is explained, so an agent has enough to call it correctly; only the missing routing guidance to sibling tools leaves a gap.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters sub-fields, and the description adds only a light hint via the upstream-artifact sentence. The long 'Outputs:' list describes return values, not input parameters, so no additional input semantics are contributed.

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 'Summary:' clause states a specific verb and resource: benchmarks a remittance corridor total cost (fee % + FX margin %) against World Bank RPW, SmaRT and SDG 10.c. That is precise enough to differentiate from generic remittance tools, but it never names or contrasts the close siblings that exist (check_g20_corridor_cost_gap, compute_remittance_disclosure, model_stablecoin_corridor_economics), and the actual purpose is buried behind infrastructure boilerplate.

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: 'Consumes upstream artifacts from: art-248..., art-250...' suggests it belongs downstream of those steps, and 'Use synthetic or anonymised inputs only' gives an input constraint. There is no explicit when-to-use, when-not-to-use, or named alternative among the many sibling corridor/remittance tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_cross_ccp_pqd_fieldsCross-CCP PQD ComparatorA
Read-onlyIdempotent
Inspect

Cross-CCP PQD Comparator: OpenChainGraph compute node (regulatory_reporting). 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. Open at: https://ainumbers.co/chaingraph/art-528-cross-ccp-pqd-comparator.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: Compares a caller-selected set of CPMI-IOSCO public quantitative disclosure (PQD) fields across FICC and ICE using a manually-transcribed, source-cited fixture dataset -- backtest coverage and largest margin deficiency per FICC division (GSD, MBSD, NSCC), and default fund requirement, Cover-2 pea... Outputs: cross_ccp, entity_a, entity_b, fields, fully_available_field_count, note, partially_available_field_count, rationale, rejected_inputs, source_citations, threshold, unavailable_field_count. Output schema: call describe_tool("compare_cross_ccp_pqd_fields").

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: entity_a, entity_b, threshold. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds meaningful context beyond annotations: server-side versus browser delegation compute modes, transient input processing, no retention, and AP2 artifact export with execution_hash provenance.

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?

The purpose is buried after repeated boilerplate about OpenChainGraph compute nodes, compute binding, privacy, a URL, and FV-status receipt language. The summary itself is truncated, and redundant sentences reduce front-loading and scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the nested policy_parameters and absence of an output schema, the description is adequate but not complete: it lists output field names and compute behavior, yet leaves output semantics and when-to-use guidance underdeveloped.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds some semantic color by naming caller-selected fields and entities, but does not add much beyond the schema for most parameters.

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?

The description names a specific verb and resource: it compares caller-selected CPMI-IOSCO PQD fields across FICC and ICE, with concrete domains such as backtest coverage, largest margin deficiency, and default fund requirement. This is distinguishable from neighboring recompute or size CCP tools.

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 description implies regulatory-reporting use and explains compute-mode selection, but it does not explicitly say when to choose this comparator versus sibling tools like recompute_ccp_default_waterfall or size_ccp_default_fund_cover2. Usage is inferable from the name and summary, not fully guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_model_outcome_analysisModel Outcome-Analysis ComparisonB
Read-onlyIdempotent
Inspect

Model Outcome-Analysis Comparison: OpenChainGraph compute node (compliance_control). 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-450-model-inventory-entry. Output feeds: art-453-model-validation-status. Open at: https://ainumbers.co/chaingraph/art-451-model-outcome-analysis.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: SR 26-2 ongoing-monitoring backtest: compares a list of period predicted-vs-actual model outcomes, computes per-period absolute percent error, mean/max absolute percent error, and flags periods breaching a caller-declared error tolerance. Outputs: breach_periods, breach_rate_pct, error_threshold_pct, max_absolute_percent_error, max_breach_rate_pct, mean_absolute_percent_error, outcome_status, periods, total_periods, worst_period. Output schema: call describe_tool("compare_model_outcome_analysis").

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: error_threshold_pct, max_breach_rate_pct, observations. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses compute modes, server/browser execution behavior, transient no-storage processing, AP2 artifact export with execution_hash, and upstream/downstream artifact relationships. This is substantial behavioral context, though some of it is generic platform boilerplate rather than tool-specific 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?

The core purpose and behavior are buried after OpenChainGraph compute-node boilerplate, FV-status URL text, and artifact-chain details. Several sentences do not earn their place for an agent deciding whether and how to call the tool.

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?

For a compute node with no output schema, the description lists the output fields and points to describe_tool for the full output schema. It also covers execution modes, privacy constraints, and provenance, leaving little critical context missing aside from parameter-level observation formatting.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds only indirect mapping such as 'caller-declared error tolerance' and does not explain the observations structure beyond what the schema provides.

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 description states a specific verb and resource: compares predicted-vs-actual model outcomes, computes per-period absolute percent error, and flags tolerance breaches. It is clearly distinct from generic forecast scoring, but sibling differentiation is indirect via artifact-chain references rather than explicit alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance or comparison to alternatives such as compute_forecast_accuracy_score or assess_model_validation_status. The privacy instruction ('Use synthetic or anonymised inputs only') is a constraint, not selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_pension_lump_sum_annuityPension Lump-Sum vs. Annuity Decision EngineB
Read-onlyIdempotent
Inspect

Pension Lump-Sum vs. Annuity Decision Engine: OpenChainGraph compute node (compliance_mandate). 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-282-social-security-claiming-optimizer. Open at: https://ainumbers.co/chaingraph/art-283-pension-lump-sum-vs-annuity-decision-engine.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: Compares a defined-benefit pension lump-sum offer against the single-life and joint-survivor annuity streams: present value at the stated discount rate with an optional labeled COLA assumption, survivor-option monthly cost, break-even discount rate, and undiscounted break-even age. Outputs: annuityPV, breakEvenAge, breakEvenRate, colaApplied, lumpSum, recommendation, reinvestmentRequiredReturn, survivorOptionCostMonthly, survivorPct. Output schema: call describe_tool("compare_pension_lump_sum_annuity").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent and closed-world behaviour, and the description still adds real substance: deterministic server-side vs. browser compute routing, transient non-retained input handling, an AP2 artifact export with execution_hash for provenance, and the FV-status receipt semantics. Much of this is shared boilerplate rather than tool-specific, but it exceeds what the annotations convey.

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?

Roughly two-thirds of the text is platform boilerplate (compute mode, transient processing, artifact export, a long FV-status URL and hash) repeated ahead of the one paragraph that actually describes the tool. The useful content is back-loaded and the only sibling routing cue in the whole description is appended to the end.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output-field enumeration compensates for the absence of an output schema, and the upstream artifact plus execution_hash provenance are covered. However, for a decision engine the agent still cannot learn what to put inside policy_parameters.election from either the schema or the description, which is the one gap that directly blocks a correct call.

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 compute/parent_hashes/parent_tool_ids parameters are self-documenting and the baseline is 3. The description gestures at decision inputs ('the stated discount rate with an optional labeled COLA assumption') but the critical policy_parameters.election object has no declared properties, and the description never enumerates its keys, so no extra semantic lift is provided where it matters most.

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 functional sentence is precise: it compares a defined-benefit lump-sum offer against single-life and joint-survivor annuity streams with PV, survivor-option cost, break-even rate and break-even age. The verb+resource is unambiguous, but the specificity is buried after a paragraph of OpenChainGraph boilerplate, and it never distinguishes itself from near-neighbours like compute_annuity or estimate_hdhp_ppo_breakeven.

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: the sentence about comparing a lump-sum offer against annuity streams tells the agent the scenario, and the upstream artifact reference (art-282-social-security-claiming-optimizer) hints at chaining context. There is no explicit statement of when to choose this over compute_annuity, no prerequisites, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_receivables_finance_economicsForfaiting vs Factoring vs Invoice Discounting EconomicsB
Read-onlyIdempotent
Inspect

Forfaiting vs Factoring vs Invoice Discounting Economics: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-479-compare-receivables-finance-economics.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: Compares net proceeds and effective annual cost across forfaiting (medium/long-term trade receivables, non-recourse PV discount), factoring with recourse, factoring without recourse, and invoice discounting for a receivables portfolio. Outputs: cheapest_instrument, cost_ranking, highest_proceeds_instrument, portfolio, results. Output schema: call describe_tool("compare_receivables_finance_economics").

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: currency, factoring_advance_rate_pct, factoring_finance_charge_pct, factoring_service_fee_pct, forfaiting_arrangement_fee_pct, forfaiting_discount_rate_pct, id_advance_rate_pct, id_discount_charge_pct, id_service_fee_pct, invoice_value, nr_factoring_advance_rate_pct, nr_factoring_finance_charge_pct, nr_factoring_service_fee_pct, num_debtors, obligor_quality, tenor_days. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world, non-destructive, so the safety bar is low; the description still adds real value: deterministic kernel execution on Workers, transient processing with no storage or logging, and an exported AP2 artifact carrying execution_hash with chain provenance. What it does not cover is number of results, sensitivity of ranking ties, or units of the cost figures.

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?

Roughly two-thirds of the text is boilerplate shared across the node family (compute binding, gpu delegation, privacy boilerplate, a 64-character FV-status hash and URL) before the one sentence that actually describes the tool. The payload should be front-loaded; here it is buried at the end.

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?

With no output schema, listing the returned fields (cheapest_instrument, cost_ranking, highest_proceeds_instrument, portfolio, results) is genuinely necessary and is supplied. Combined with compute-mode semantics and chaining inputs (parent_hashes/parent_tool_ids), an agent has enough to call it correctly, though units and the four instrument definitions' assumptions remain implicit.

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 the schema itself enumerates every required policy parameter (forfaiting discount rate, factoring advance/finance/service fees, invoice value, tenor, num_debtors, obligor_quality). The description adds nothing about parameter meaning, units, or the interaction between obligor_quality and non-recourse pricing, so 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?

The final summary sentence gives a precise verb+resource: compares net proceeds and effective annual cost across forfaiting, recourse/non-recourse factoring and invoice discounting. The preceding boilerplate about compute binding and FV-status is generic to the whole node family and does nothing to distinguish this tool, and no sibling (e.g. model_clearing_access_economics, analyze_dc_vs_lc_cost_benefit) is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is technical execution routing (compute:"auto" vs "browser" vs gpu:true delegation) and 'use synthetic inputs only'. There is no statement of when an agent should pick this comparison versus the many other financing/cost comparison siblings, nor any prerequisite or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_rights_matrixCross-License Rights ComparatorB
Read-onlyIdempotent
Inspect

Cross-License Rights Comparator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-198-cross-license-rights-comparator.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: Compares any two licenses from the CC, CBE, and PIL families on a 9-dimension rights vector (copy, display, commercial, exclusive, modify, sublicense, share_alike, attribution, revocable). Outputs: checks, diff, dimensions, disclaimer, matrix_note, more_permissive_than, ref_a, ref_b, sources, vector_a, vector_b. Output schema: call describe_tool("compare_rights_matrix").

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: license_ref_a, license_ref_b. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, non-destructive, closed-world profile, so the bar is lower. The description still adds useful behavior: deterministic execution, transient processing with no storage or logging, a synthetic-input requirement, and an AP2 artifact export with execution_hash for provenance.

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?

The actual purpose is buried after roughly 120 words of OpenChainGraph boilerplate, a documentation URL and an FV-status hash. The list of output fields is useful, but the front-loading requirement is badly failed and much of the text does not earn its place for an agent choosing a tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations and full schema coverage carry most of the load, and the output-field list compensates for the absence of an output schema. What is missing is integration context: which sibling to call first to pick licenses, and what to do with the comparison result downstream.

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 baseline is 3 and the schema already explains compute, parent_hashes, parent_tool_ids and policy_parameters. The description restates the compute-mode rules and names license_ref_a/license_ref_b only in passing, adding little beyond the schema.

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 Summary states a specific verb and resource: it compares any two licenses from the CC, CBE and PIL families on a named 9-dimension rights vector. That is clear once reached, but it neither distinguishes this tool from close siblings such as check_license_compatibility or choose_cc_license nor front-loads the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no mention of the sibling license tools (check_license_compatibility, choose_cc_license, select_cbe_license, map_pil_flavor). The only conditional text concerns compute modes, which is execution mechanics rather than task selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compile_model_risk_lineage_packCompile Model Risk Lineage PackA
Read-onlyIdempotent
Inspect

Compile Model Risk Lineage Pack: OpenChainGraph compute node (compliance_mandate). 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-450-model-inventory-entry, art-451-model-outcome-analysis, art-453-model-validation-status, art-488-model-replication-diff, art-489-model-test-battery. Open at: https://ainumbers.co/chaingraph/art-562-compile-model-risk-lineage-pack.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.

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". See the tool's manifest for field names.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses deterministic compute behavior, server-side Cloudflare Workers execution, browser delegation via URL, gpu:true behavior, transient non-retention of inputs, synthetic-input requirements, and AP2 artifact export with execution_hash. These are substantive operational traits that materially help an agent invoke the tool correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded enough to identify the tool, but it repeats 'OpenChainGraph compute node' and includes long implementation URLs plus an FV-status hash that are not essential for tool selection. It is appropriately sized for a complex compute node, but several sentences do not earn their place in a selection-oriented description.

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?

Given the absence of an output schema, the description usefully states that the tool exports an AP2 artifact with execution_hash and can return a browser delegation URL. It covers compute modes, privacy constraints, and upstream artifact dependencies, though it does not fully describe the returned artifact shape or browser-delegation response fields.

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 input schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds compute-mode context and the synthetic-input constraint, but does not independently explain parent_hashes/parent_tool_ids ordering or policy_parameters fields beyond what the schema provides.

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 description identifies a specific compile operation and resource: a model risk lineage pack that exports an AP2 artifact with execution_hash and consumes named upstream artifacts. It is distinguishable from siblings such as publish_model_risk_head or record_model_input_lineage, but the opening repeats the title and uses OpenChainGraph jargon rather than plain-language purpose.

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?

It gives an important usage constraint, 'Use synthetic or anonymised inputs only,' and names the upstream artifact families it consumes, implying prerequisite context. However, it does not explicitly say when to choose this tool over alternatives such as publish_model_risk_head, emit_chaingraph_artifact, or record_model_input_lineage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compile_nav_error_evidence_packCompile NAV-Error Evidence PackA
Read-onlyIdempotent
Inspect

Compile NAV-Error Evidence Pack: OpenChainGraph compute node (compliance_mandate). 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-373-recompute-fund-nav, art-374-test-nav-error-materiality. Open at: https://ainumbers.co/chaingraph/art-660-compile-nav-error-evidence-pack.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: Packages one already-produced recompute_fund_nav receipt and one already-produced test_nav_error_materiality receipt into a CSSF Circular 24/856-shaped NAV-error disclosure bundle: what happened, when it was detected, the materiality threshold applied, the affected period, and the correction. Outputs: affected_period, cited_receipts, correction, declared_policy, detection_date, error, fence, fund_id, industry_convention, materiality_verdict, not_proven, notification, regulatory_framework, reprocessing_need_indicated, structural_error, warnings. Output schema: call describe_tool("compile_nav_error_evidence_pack").

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: affected_period, correction, detection_date, fund_id, materiality_ref, nav_ref, notification, supplementary_receipts. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses that compute defaults to server-side Workers for gpu:false nodes, that compute:'browser' returns a delegation URL rather than a result, that gpu:true always delegates, and that inputs are processed transiently and never stored or logged, with an instruction to use synthetic data only. It also discloses the AP2 execution_hash provenance export and that the FV-status file is a snapshot rather than a live subscription — real behavioral context an agent cannot infer from readOnlyHint/idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and the upstream-artifact pairing are front-loaded and clear, but a large fraction of the text is boilerplate shared across the tool family (compute-mode paragraph, transient-processing disclaimer, a long FV-status URL with a 64-hex hash) that crowds out the domain-specific content. Length is defensible but not tight.

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?

No output schema exists, and the description compensates by enumerating the output fields (affected_period, materiality_verdict, regulatory_framework, not_proven, reprocessing_need_indicated, warnings, etc.) and by stating the regulatory frame and upstream dependencies. Missing only explicit guidance on failure modes, e.g. what happens when a required upstream receipt is absent or the materiality verdict is 'not_proven'.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and the policy_parameters object including its required keys. The description's compute-mode sentences largely restate the schema's own description, and it adds no syntax or format detail for parent_hashes/parent_tool_ids pairing or for individual policy_parameters fields. Baseline 3.

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 and a precisely scoped resource: packaging one recompute_fund_nav receipt and one test_nav_error_materiality receipt into a CSSF 24/856 NAV-error disclosure bundle, and enumerates the resulting fields. It names upstream producers but does not explicitly contrast with near-siblings such as build_evidence_pack or assemble_ocg_evidence_bundle, keeping it just short of a 5.

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 phrase 'Packages one already-produced ... receipt and one already-produced ... receipt' implies a prerequisite (both upstream artifacts must exist first), which is useful routing. However there is no explicit when-to-use / when-not-to-use statement, no mention of alternatives, and no statement about what to do if the materiality receipt is missing or inconclusive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compile_rebalance_evidence_packCompile Rebalance Evidence PackB
Read-onlyIdempotent
Inspect

Compile Rebalance Evidence Pack: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-646-compile-rebalance-evidence-pack.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: Packages one rebalance event, the current period's constituent set and weight set, plus the prior period's for diffing, into a regulator-shaped bundle: what changed (additions/removals/weight deltas), citing the underlying art-557/art-645 receipts rather than recomputing them. Outputs: additions, cited_receipts, fence, index_id, not_proven, rebalance_date, regulatory_framework, removals, structural_error, weight_deltas. Output schema: call describe_tool("compile_rebalance_evidence_pack").

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: current, prior. Unknown keys are refused.

TDQS

B3.4/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 the safety profile is covered. The description adds real value beyond that: deterministic execution, transient processing with no storage/logging/retention, AP2 artifact export with execution_hash for chain provenance, and a note that the FV-status receipt verifies offline as a snapshot rather than a subscription. Return-field names are also enumerated, which matters given there is no output schema.

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?

The genuinely useful content is one trailing 'Summary' sentence, preceded by a duplicated 'OpenChainGraph compute node' phrase, a compute-mode paragraph that restates the schema verbatim, a marketing URL, and a long FV-status hash paragraph. The purpose should be front-loaded; instead the agent must read past boilerplate to learn what the tool does.

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?

For a nested-object tool with no output schema, the description is fairly complete: it enumerates all ten output fields, explains provenance chaining and the cite-don't-recompute contract, and covers data-handling constraints. Its gaps are the unexplained output fields (fence, not_proven, structural_error) and the absence of any guidance on composing policy_parameters payloads beyond naming current and prior.

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 earns a bump by explaining what the policy_parameters actually carry: the current period's constituent and weight sets plus the prior period's for diffing, which the schema leaves as empty `{}` placeholders. It also contextualises execution_hash provenance for parent_hashes. It does not explain index_id or rebalance_date as inputs, and the compute-mode recitation is redundant with the schema.

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 summary states a specific verb and resource: it packages one rebalance event plus current/prior constituent and weight sets into a regulator-shaped bundle capturing additions, removals and weight deltas with cited art-557/art-645 receipts. That is far more specific than the title. However, the purpose is buried at the very end, after generic compute-node boilerplate, and it never distinguishes itself from close siblings like compile_nav_error_evidence_pack, compile_model_risk_lineage_pack or build_evidence_pack.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. The compute-mode paragraph explains auto/server/browser mechanics but that is execution configuration, not selection guidance, and it duplicates the schema. The only usage-adjacent instruction is 'Use synthetic or anonymised inputs only', which is about input content, not tool choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compile_work_mandateWork Mandate CompilerA
Read-onlyIdempotent
Inspect

Work Mandate Compiler: OpenChainGraph compute node (governance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-274-compile-work-mandate.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: Compiles a §22 Work Mandate document into a deterministic §21.4 gated-chain config. Outputs: chain_config. Output schema: call describe_tool("compile_work_mandate").

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: mandate. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/non-destructive, consistent with the described behavior), the description discloses execution semantics: deterministic server-side computation on Cloudflare Workers for gpu:false nodes with registered kernels, browser delegation for gpu:true, transient no-store/no-log processing, and an AP2 artifact with execution_hash for chain provenance. That is exactly the behavioral context structured fields cannot carry.

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?

The payload is buried at the end while the opening twice repeats 'OpenChainGraph compute node,' and a 64-character FV-status file hash plus a raw URL consume substantial space for little selection value. The one sentence an agent actually needs (the compile summary) is last rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does cover the return shape briefly ('Outputs: chain_config') and points to describe_tool for the schema. However, for a compute tool with a nested `policy_parameters.mandate` payload it never indicates what a §22 Work Mandate document should contain, leaving the most likely source of miscalls unexplained.

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 compute modes, parent_hashes/parent_tool_ids chaining, and the required `mandate` key are already documented. The description restates the compute:'auto'/browser behavior without adding syntax or shape detail for the nested `mandate` object, so it does not exceed the schema.

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 final summary sentence is precise: 'Compiles a §22 Work Mandate document into a deterministic §21.4 gated-chain config,' naming a specific verb, input artifact, and output artifact. The opening repeats the tautological 'Work Mandate Compiler: OpenChainGraph compute node' framing, and no sibling (e.g. build_chaingraph, agentic_mandate_sandbox, build_ap2_cartmandate_hashchain) is named to differentiate.

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?

It gives a real constraint — 'Use synthetic or anonymised inputs only' — and explains the compute-mode choice, but offers no guidance on when to pick this tool over the many other mandate/chaingraph builders in the sibling list, and no exclusions or prerequisites for the input document.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compose_ap2_promptAP2 Prompt Template GeneratorB
Read-onlyIdempotent
Inspect

AP2 Prompt Template Generator: OpenChainGraph compute node (prompt_template). 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. Output feeds: ALL. Open at: https://ainumbers.co/chaingraph/ptg-01-ap2-prompt-template-generator.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: Transforms any OpenChainGraph artifact JSON into a structured, regulator-framed prompt for any external LLM. Outputs: audience, claude_deeplink, generated_prompt, generated_prompt_length, include_citations, mandate_type_matched, source_execution_hash, source_tool_id, task, tone. Output schema: call describe_tool("compose_ap2_prompt").

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: task, audience. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already covering read-only, idempotent, non-destructive, and closed-world behavior, the description adds useful execution context: server-side versus browser delegation, determinism, transient processing with no storage or logging, and export of an AP2 artifact with execution_hash. Some of this is boilerplate, but it goes meaningfully beyond 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is poorly front-loaded and repetitive, opening with "OpenChainGraph compute node" and "Deterministic OpenChainGraph compute node" before reaching the actual purpose near the end. The FV-status URL, external link, and "snapshot, not a subscription" caveat add clutter without helping an agent decide or invoke.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It lists the output fields and points agents to describe_tool for the output schema, which helps compensate for the missing output schema. However, it does not fully explain chaining semantics for parent_hashes/parent_tool_ids or when to use this prompt generator versus other AP2 tools.

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 baseline is 3. The description does not add much parameter-level meaning beyond the schema for parent_hashes, parent_tool_ids, or the policy_parameters subfields; it mainly restates compute behavior and lists output field names.

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 description ultimately states a specific verb and resource: "Transforms any OpenChainGraph artifact JSON into a structured, regulator-framed prompt for any external LLM." That is clear, but it is buried after boilerplate about compute nodes, and it does not differentiate this tool from AP2-related siblings such as ap2_aml_mandate_builder or draft_ap2_mandate_credential.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no exclusions, and no alternatives named beyond the vague "Output feeds: ALL." The compute-mode explanation is about parameter behavior, not about when an agent should select this tool over another.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compose_control_test_evidenceControl-Test Evidence ComposerC
Read-onlyIdempotent
Inspect

Control-Test Evidence Composer: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-461-control-test-evidence-composer.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: Composes a SOX 404 / ICFR control-test evidence artifact: reconciles a caller-declared attribute sample (item ids, e.g. Outputs: control_id, coverage_complete, deficiency, exception_count, exception_rate, extra_results, fail_count, gate_status, missing_results, not_a_severity_judgment, pass_count, population_hash, reporting_period, sample_size, test_conclusion, tested_count, tester_id, tester_role, tolerable_exception_count, within_tolerance. Output schema: call describe_tool("compose_control_test_evidence").

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: control_id, population_hash, reporting_period, sample, test_results, tester_id, tolerable_exception_count. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses genuinely useful behavior: compute:'auto' runs server-side on Workers for gpu:false nodes, 'browser' returns a delegation URL, gpu:true always delegates, inputs are processed transiently and not retained, and outputs carry an execution_hash for chain provenance. The 'use synthetic or anonymised inputs only' warning is non-obvious safety context. It stops short of clarifying what happens to nested policy_parameters and how the chain parent_hashes are applied at export time.

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?

The purpose statement appears only after a repeated 'Deterministic OpenChainGraph compute node' preamble, a Cloudflare Workers explanation, a data-retention disclaimer, an AP2 export note, and a raw FV-status URL — none of which is front-loaded toward selection. The summary sentence is truncated and the output-field list is dumped without structure, so the reader must reconstruct the point of the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the enumerated output fields (coverage_complete, deficiency, exception_rate, within_tolerance, test_conclusion, etc.) usefully convey the return shape, which compensates meaningfully. But for a nested, compliance-critical compute node the description never explains how the sample and test_results are reconciled, what makes a sample 'coverage_complete', or how tolerable_exception_count affects gate_status — the very semantics an agent needs to trust the call.

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 every parameter (compute, parent_hashes, parent_tool_ids, policy_parameters) is documented in the schema itself, including the required policy keys, so the baseline of 3 applies. The description's one attempt to add meaning is cut off at 'sample (item ids, e.g.' and therefore adds nothing the schema does not already say.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The sentence "Composes a SOX 404 / ICFR control-test evidence artifact: reconciles a caller-declared attribute sample (item ids, e.g." does name a specific verb and resource, but it is buried after several paragraphs of compute-infrastructure boilerplate and is cut off mid-clause, so the actual scope of the reconciliation is never stated. No sibling is named to distinguish it from build_agent_test_evidence, check_etr_control_evidence, or compute_control_attestation_campaign_roll_up. An agent can infer the domain but not the exact operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no pointer to an alternative tool. The only contextual hint is the 'SOX 404 / ICFR' domain label, which implies the compliance-audit context but leaves the agent to guess whether to reach for this versus the many neighboring evidence/control tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compose_eval_attestation_receiptEval Attestation Receipt ComposerC
Read-onlyIdempotent
Inspect

Eval Attestation Receipt Composer: OpenChainGraph compute node (governance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-438-eval-attestation-receipt-composer.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: Hashes a third-party eval log (e.g. Outputs: attestation_determination, claim_strength, eval_format, eval_id, eval_log_hash, mandate_reference, not_proven, verify_instructions. Output schema: call describe_tool("compose_eval_attestation_receipt").

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: eval_log, mandate_reference. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), but the description adds real context: inputs are processed transiently and never stored or logged, the node is deterministic, the export carries execution_hash for chain provenance, and the receipt verifies offline regardless of whether the FV-status file is fetched. That materially exceeds what the annotations declare.

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?

Badly front-loaded: a long boilerplate paragraph about Cloudflare Workers, a marketing URL, and a 64-character FV-status hash precede the actual purpose. The most important clause is cut off, and 'Output schema: call describe_tool(...)' is misplaced given no output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It does name the output fields (attestation_determination, claim_strength, eval_format, eval_log_hash, mandate_reference, not_proven) in lieu of an output schema, which is helpful, and it covers compute routing and chaining inputs. But the truncated summary and the undefined semantics of claim_strength/attestation_determination leave an agent unsure what the receipt actually asserts.

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 baseline is 3. The description restates the compute modes already documented in the schema and never explains how parent_hashes/parent_tool_ids chain, or what the eval_log and mandate_reference subkeys should contain — the truncated summary would have been the place to do so.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The actual purpose appears only at the end — 'Hashes a third-party eval log' into an AP2 attestation artifact — and that key sentence is truncated mid-thought ('e.g. Outputs:'). Most of the opening is generic OpenChainGraph compute-node boilerplate that would read identically on hundreds of siblings, so an agent must dig to find the verb+resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is about compute mode ('auto' vs 'browser') and the standing 'use synthetic or anonymised inputs only' privacy note. Nothing says when to reach for this tool versus the many adjacent receipt/attestation builders (build_*_receipt, aggregate_execution_receipts, verify_input_attestations), and no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compose_globe_girGloBE Information Return (GIR) ComposerB
Read-onlyIdempotent
Inspect

GloBE Information Return (GIR) Composer: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-457-globe-gir-composer.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: Assembles the OECD GloBE Information Return (GIR) data model for one MNE group / fiscal year by combining the outputs of art-454 (jurisdictional ETR), art-455 (SBIE / top-up), and art-456 (transitional safe harbour tests) into the GIR's jurisdictional-summary shape: per-jurisdiction ETR, SBIE, to... Outputs: fiscal_year, gir_schema_version, gir_xml_summary, jurisdiction_rows, jurisdictions_not_evaluated, jurisdictions_with_deemed_zero, mne_group_name, submittable, total_topup_tax. Output schema: call describe_tool("compose_globe_gir").

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: fiscal_year, gir_schema_version, jurisdictions, mne_group_name. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive, closed-world), the description discloses that inputs are processed transiently and not stored or logged, that synthetic/anonymised inputs are required, how compute modes resolve between server and browser, and that an AP2 artifact with execution_hash is exported. Much of this is reusable template text, but it is genuinely additive behavioral context.

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?

The bulk is chain-of-provenance boilerplate (compute-node preamble, privacy notice, a raw URL and a 64-hex FV-status path) that crowds out the actual purpose, which only appears near the end and is cut off mid-sentence. The key scoping sentence is neither front-loaded nor complete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The Outputs field list compensates for the absent output schema, and describe_tool is offered for the full schema. However, the truncated summary leaves the GIR shape incompletely described, and prerequisites (required upstream parent_hashes and the fiscal_year/schema/jurisdiction inputs) are not tied together for the caller.

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 compute, parent_hashes, parent_tool_ids and the nested policy_parameters fields. The description's compute-mode explanation duplicates the enum description rather than extending it, so 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?

The description eventually states a specific verb and resource: assembling the OECD GloBE Information Return data model for one MNE group / fiscal year from the outputs of art-454, art-455 and art-456. It is distinguishable from sibling compute tools like compute_globe_topup_tax, but the statement is buried behind boilerplate and truncated mid-sentence ('per-jurisdiction ETR, SBIE, to...'), and it never explicitly contrasts itself with siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no statement that upstream ETR/SBIE/safe-harbour artifacts must already exist before calling. An agent must infer from the sibling list that this is the aggregator rather than one of the component compute nodes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compose_workpaper_bundleWorkpaper Bundle ComposerA
Read-onlyIdempotent
Inspect

Workpaper Bundle Composer: OpenChainGraph compute node (attestation_mandate). 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-462-je-ruleset-screen, art-463-recalc-suite, art-464-confirmation-matcher. Open at: https://ainumbers.co/chaingraph/art-465-workpaper-bundle-composer.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: Terminal composer for a substantive-procedure evidence bundle: a procedure identifier, a caller-declared population hash, the prior substantive-recalculation kernels' execution-hash artifacts (art-462 JE rule screen, art-463 recalc suite, art-464 confirmation matcher, or any other procedure kerne... Outputs: disposed_exception_count, exception_count, exceptions, kernel_artifact_count, kernel_artifacts, malformed_kernel_artifacts, population_hash, procedure_id, roles, undisposed_exceptions. Output schema: call describe_tool("compose_workpaper_bundle").

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: exceptions, kernel_artifacts, partner, population_hash, preparer, procedure_id, reviewer. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, and the description adds substantial context beyond them. It discloses compute modes, browser delegation behavior for gpu:true nodes, transient non-retention of inputs, synthetic/anonymised input expectations, deterministic execution, and execution_hash provenance for the exported AP2 artifact.

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?

The description is long, repetitive, and not front-loaded: the actual purpose appears after operational and provenance details, and the title/name is restated unnecessarily. The truncated 'Summary' ending and lengthy FV-status hash/URL make it harder to scan than it needs to be.

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?

For a complex compute/export tool with rich annotations and a fully described input schema, the definition supplies enough context about execution modes, privacy constraints, provenance, and upstream dependencies. It also lists output field names, which compensates for the absence of an output schema, though the truncated summary and lack of explicit alternative-selection guidance keep it from being fully complete.

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 input schema already documents the four parameters thoroughly and establishes a baseline of 3. The description adds some useful semantic color, especially that population_hash is caller-declared and that kernel_artifacts represent prior substantive-recalculation execution-hash artifacts, though it does not add much about parent_hashes/parent_tool_ids ordering beyond the schema.

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 description eventually states a specific verb and resource: it composes a terminal substantive-procedure evidence bundle and exports an AP2 artifact. The role as a terminal composer consuming upstream kernel artifacts gives useful scope, but it does not clearly differentiate itself from similar evidence-pack and audit-suite siblings.

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 phrases like 'Terminal composer' and 'Consumes upstream artifacts,' which suggest this should run after the named upstream kernels. There is no explicit when-to-use guidance versus alternatives such as build_evidence_pack, assemble_ocg_evidence_bundle, or run_audit_recalc_suite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_15c3_3_reserve15c3-3 Customer Reserve Formula CalculatorB
Read-onlyIdempotent
Inspect

15c3-3 Customer Reserve Formula Calculator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-397-lint-trace-cat-reports. Open at: https://ainumbers.co/chaingraph/art-396-compute-15c3-3-reserve.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: SEC Rule 15c3-3 Exhibit A customer reserve formula: credit items (customer free credit balances, margin credit balances, payables) against allowable debit items (margin-account debits with the 1% collateral haircut, failed-to-deliver debits with the 30-day aging exclusion, other allowable debits)... Outputs: credit_items, debit_items, deposit_sufficient, note, pab_variant, regulatory_basis, reserve_account_balance_musd, reserve_requirement_musd, rules_version, surplus_shortfall_musd, total_credits_musd, total_debits_musd. Output schema: call describe_tool("compute_15c3_3_reserve").

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: credit_items, debit_items, pab_variant. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds real context beyond them: deterministic execution, server-side vs. browser-delegated compute, transient inputs that are not stored or logged, and an exported AP2 artifact carrying execution_hash for provenance. Most of this is shared template boilerplate, but it is genuinely useful behavioral information.

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?

The actual purpose is buried under infrastructure boilerplate, a long FV-status URL with a 64-character hash path, and retention policy text before reaching 'Summary:'. The front-loaded content an agent most needs is the last thing it reads, and the domain summary is cut off mid-sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does list the return fields (reserve_requirement_musd, surplus_shortfall_musd, deposit_sufficient, etc.), which compensates well. But the domain explanation is incomplete and the nesting of credit_items/debit_items is never fully specified, leaving gaps for a compliance computation whose correctness depends on input shape.

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 compute, parent_hashes, and parent_tool_ids thoroughly, and the baseline is 3. The description contributes some domain meaning by explaining what debit items contain (1% collateral haircut on margin debits, 30-day aging exclusion on fails), but that sentence is truncated with an ellipsis and never covers the four top-level parameters.

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 Summary section names a specific computation: SEC Rule 15c3-3 Exhibit A customer reserve formula, crediting customer free credit/margin credit balances against allowable debit items. That is far more specific than the near-tautological name/title. It does not, however, distinguish itself from adjacent reserve-related siblings such as precheck_reserve_attestation, verify_reserve_proof, or compute_note_h_margin_debit.

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: 'Output feeds: art-397-lint-trace-cat-reports' gives a downstream chaining hint, and the compute-mode sentence explains auto/server/browser selection. There is no explicit when-to-use-this-instead-of-X statement, and no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_aca_affordability_safe_harborACA Affordability Safe-Harbor CalculatorB
Read-onlyIdempotent
Inspect

ACA Affordability Safe-Harbor Calculator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-299-aca-esrp-exposure. Open at: https://ainumbers.co/chaingraph/art-298-aca-affordability-safe-harbor.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: Compute the ACA employer-mandate affordability percentage under each of the three IRC 4980H(a)(1)(B) safe harbors (W-2 wages, rate-of-pay, federal poverty line) against a supplied lowest-cost self-only monthly premium, using the version-pinned 2026 affordability threshold (9.96%, IRS Rev. Outputs: affordability_pct, error, harbors, harbors_satisfied, lowest_cost_self_only_monthly_premium, satisfies_any_harbor, tax_year. Output schema: call describe_tool("compute_aca_affordability_safe_harbor").

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: fpl_mainland_annual, hourly_rate, lowest_cost_self_only_monthly_premium, tax_year, w2_box1_wages_annual. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful non-annotation behavior: compute modes (auto/server/browser), transient non-stored processing, synthetic-input requirement, and an AP2 artifact with execution_hash for provenance. These details go meaningfully beyond structured fields, though the text is cluttered.

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?

The description is poorly front-loaded: multiple boilerplate sentences about OpenChainGraph compute nodes and FV-status precede the actual purpose. A key sentence is truncated ('9.96%, IRS Rev.') and the tool's core computation is buried in the Summary. Every sentence does not earn its place in this structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description helpfully lists output fields such as affordability_pct, harbors, and satisfies_any_harbor. It also covers compute modes and provenance behavior. However, the missing usage guidance, truncated citation, and contradiction around 'Output schema: call describe_tool' when no output schema exists leave gaps.

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 the compute, parent_hashes, parent_tool_ids, and policy_parameters fields in detail. The description names the economic inputs (W-2 wages, rate-of-pay, federal poverty line, lowest-cost premium) but adds little syntax or constraint detail beyond the schema. Baseline 3 is appropriate.

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 Summary section specifies a clear verb and resource: compute the ACA employer-mandate affordability percentage under the three IRC 4980H(a)(1)(B) safe harbors against a supplied lowest-cost self-only premium. It is distinguishable from sibling tools like build_traiga_safe_harbor_pack by naming the exact statutory safe harbors and downstream art-299-aca-esrp-exposure. However, the purpose is buried under boilerplate and a truncated 'IRS Rev.' citation, which weakens immediate clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says the output feeds art-299-aca-esrp-exposure and links to an external page, but never states when to use this tool versus alternatives or when not to use it. There is no explicit routing guidance among the many compliance-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_algo_execution_schedule_simulatorAlgo Execution Schedule SimulatorC
Read-onlyIdempotent
Inspect

Algo Execution Schedule Simulator: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/tools/669-algo-execution-schedule-simulator.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses meaningful behavior: deterministic computation, Cloudflare Workers execution, browser delegation for gpu:true, transient no-storage/no-logging processing, synthetic-input caution, and AP2 artifact export with execution_hash. These are substantive operational details, though auth/rate-limit behavior remains unstated.

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?

The description is a dense run-on paragraph with redundancy ('Deterministic OpenChainGraph compute node' appears twice) and low-value tail content about the FV-status receipt being a snapshot. It buries the sparse purpose information under platform mechanics and URL/receipt details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a nested arbitrary policy_parameters object and no output schema, the description never explains the decision function or what the simulation actually returns beyond an execution_hash artifact. The critical domain logic is absent, leaving the agent dependent on an external manifest.

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 carries the main parameter explanations. The description reiterates compute-mode semantics but adds nothing for parent_hashes, parent_tool_ids, or the nested policy_parameters payload, which it defers to 'the tool's manifest'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description essentially restates the title ('Algo Execution Schedule Simulator') and adds ecosystem metadata ('OpenChainGraph compute node (analytics_mandate)'), but never states what is actually simulated or computed, nor what an 'algo execution schedule' means here. It fails to distinguish this tool from the many other compute_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains compute-mode selection (auto/server/browser) and privacy constraints, but gives no guidance on when to choose this tool over alternatives such as compute_deterministic_amortization_schedule, run_chain, or build_chaingraph. There are no explicit when-to-use or when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_annuityAnnuity PV / FV / Payment SolverB
Read-onlyIdempotent
Inspect

Annuity PV / FV / Payment Solver: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-327-tvm-annuity.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: Solves present value, future value, or payment for an ordinary annuity or annuity-due, given the other two plus rate and number of periods, using the standard closed-form annuity factor. Outputs: annuity_factor, due, fv, note, nper, pmt, pv, rate_pct, regulatory_basis, solved_for. Output schema: call describe_tool("compute_annuity").

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: due, solve_for. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), yet the description still adds material context: deterministic computation, server-side execution on registered kernels vs browser delegation for gpu:true, transient non-retained processing of inputs, synthetic-data-only constraint, and AP2 artifact export with execution_hash. Some of it restates the compute parameter, but the data-handling and provenance disclosures are genuinely beyond 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional core — the annuity solver semantics — is buried after several paragraphs of chain-provenance, compute-binding, and FV-status link boilerplate. The actual job of the tool should lead; instead an agent must read to the second-to-last sentence to learn what it computes.

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?

With no output schema, the description steps up by enumerating the returned fields (annuity_factor, due, fv, pmt, pv, rate_pct, solved_for, regulatory_basis, note), which is what an agent needs to parse results. Remaining gaps are sign conventions for pv/pmt and behaviour when an inconsistent combination is supplied, but the essentials for a deterministic calculator are present.

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% for top-level parameters, so the baseline would be 3, but the description adds real semantics the nested policy_parameters properties lack: solve_for determines which of pv/fv/pmt is derived, the other two plus rate and nper are inputs, and due toggles ordinary vs annuity-due. That relationship logic is not expressed anywhere in the schema.

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 Summary block states a specific verb and resource: solves PV, FV, or payment for an ordinary annuity or annuity-due using the closed-form annuity factor. That is genuinely distinguishable work. However, it is buried at the end of a long boilerplate preamble, and it never contrasts itself with siblings like compute_npv, compute_irr, or compare_pension_lump_sum_annuity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to reach for this tool over compute_npv, compute_irr, compute_xirr, or compare_pension_lump_sum_annuity, all of which overlap in scope. The only conditional guidance concerns compute mode (auto vs browser), which is execution plumbing rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_apy_earned_recomputeAPY-Earned RecomputeC
Read-onlyIdempotent
Inspect

APY-Earned Recompute: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/663-apy-earned-recompute.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.

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". See the tool's manifest for field names.

TDQS

C2.6/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 the bar is lower, and the description still adds real behavior: inputs are processed transiently and not stored or logged, gpu:true nodes always delegate to the browser, and output is an AP2 artifact carrying an execution_hash for provenance. That is meaningful execution context beyond the structured hints.

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?

The text leads with infrastructure boilerplate and a repeated URL plus a long offline-verification hash before any statement of what the tool computes. Roughly half the content (transient-input policy, fv-status receipt URL, snapshot disclaimer) is generic to every node in this server and does not earn its place per-tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does not compensate: the actual decision function's input fields are undocumented in both schema and description, and the shape of the returned AP2 artifact is only gestured at. For a compliance compute tool with a nested free-form parameter, an agent still cannot tell what to put in or what it will get back.

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 baseline is 3; the description merely restates the compute enum semantics already in the schema. It adds nothing for policy_parameters, the parameter that actually carries the decision inputs, which the schema defers to an unlinked 'manifest'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Beyond the name, the description only restates that this is a 'deterministic OpenChainGraph compute node (compliance_control)'. It never says what APY-earned means, what inputs it consumes, or what it computes, and nothing distinguishes it from near-identical siblings like compute_interest_accrual_recompute or compute_gl_tieout_recompute.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only routing guidance concerns the compute transport mode ('auto'/'server'/'browser'), which is already documented in the schema. There is no statement of when to reach for this tool versus the many other *_recompute siblings, and no prerequisites or exclusions beyond 'use synthetic or anonymised inputs only'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_asset_liability_coverageAsset/Liability CoverageA
Read-onlyIdempotent
Inspect

Asset/Liability Coverage: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-539-asset-liability-coverage.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: General, jurisdiction-neutral solvency check: total_assets_musd / total_liabilities_musd, plus surplus_shortfall_musd = total_assets_musd - total_liabilities_musd, per asset-class and liability-class breakdown, rolled up. Outputs: asset_breakdown, coverage_ratio, formula, liability_breakdown, note, status, surplus_shortfall_musd, total_assets_musd, total_liabilities_musd. Output schema: call describe_tool("compute_asset_liability_coverage").

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: assets, liabilities. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive safety, and the description adds real value beyond them: server-vs-browser execution semantics, browser delegation URLs, transient processing with no storage or logging, refusal of unknown policy_parameters keys, and AP2 artifact export with execution_hash for provenance. This is substantive disclosure, diluted only by boilerplate about the FV-status receipt.

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?

The genuinely useful content (solvency formula, compute modes, exports, outputs) is buried between large boilerplate blocks: the compute-node preamble, a retention disclaimer, a raw FV-status URL with snapshot commentary, and a pointer to describe_tool. Front-loading the formula and trimming the infrastructure boilerplate would materially improve it.

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?

For a 4-parameter compute tool with a nested policy_parameters object and no output schema, the description enumerates the output fields (coverage_ratio, surplus_shortfall_musd, breakdowns, status, note) and explains chaining via parent_hashes into AP2 provenance. Only the missing inline output schema (deferred to describe_tool) keeps it from being fully self-contained.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description restates the compute-mode behavior and mentions assets/liabilities requirements but adds no syntax, format, or validation detail beyond the structured fields — baseline 3 is correct.

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 Summary section gives a precise verb+resource: a general, jurisdiction-neutral solvency check computing total_assets_musd / total_liabilities_musd, surplus_shortfall_musd, and per-class breakdowns. That clearly distinguishes it from jurisdiction-specific siblings like calculate_solvency2_scr_ratio or check_capital_adequacy_private, though no sibling is named explicitly.

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?

It signals the intended context ('general, jurisdiction-neutral solvency check') and a data-handling constraint ('Use synthetic or anonymised inputs only'), plus compute-mode selection guidance. However, it never says when to pick this over the many solvency/capital siblings, nor states exclusions or prerequisites beyond that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_authzen_conformance_fixtureAuthzen Conformance FixtureB
Read-onlyIdempotent
Inspect

Authzen Conformance Fixture: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-651-authzen-conformance-fixture.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: Evaluates the 8-decision AuthZEN Authorization API 1.0 certification fixture through the spec-mandated subject/action/resource/context request envelope, against a local hand-authored decision policy. Outputs: spec, decision_count, decisions, all_match_expected, all_context_invariant. Output schema: call describe_tool("compute_authzen_conformance_fixture").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/closed-world/idempotent/non-destructive, but the description adds real context beyond them: server vs browser compute delegation and the returned delegation URL, transient non-retained processing of inputs, and export of an AP2 artifact carrying execution_hash for chain provenance. It also explains the offline-verifiable FV-status receipt. The only gap is that it never describes what the decisions array contains or failure modes, but the read-only safety profile is well covered.

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?

The description is dominated by infrastructure boilerplate (Compute Binding modes), a raw URL, and a long FV-status hash path, while the actual purpose is deferred to a trailing 'Summary' paragraph. The compute-mode text substantially duplicates the input schema's own compute description. Front-loading is poor and several sentences do not earn their place for a single-purpose fixture evaluator.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description compensates by listing the returned fields (spec, decision_count, decisions, all_match_expected, all_context_invariant), which is enough for an agent to interpret results. Behavioral traits (delegation, retention, artifact export) are covered. The significant remaining hole is the core input: 'policy_parameters.requests' is an untyped array whose element structure is never described, forcing a describe_tool call to use the tool at all.

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%, so the baseline is 3, and the description largely repeats the compute-mode semantics already spelled out in the schema. It does add one piece of genuine value the schema lacks: the request envelope is described as subject/action/resource/context, which gives meaning to the otherwise untyped 'requests' array. However, the actual shape of entries in that array is still undocumented in both places.

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 'Summary' sentence states a specific verb and resource: it evaluates the 8-decision AuthZEN Authorization API 1.0 certification fixture through the subject/action/resource/context envelope against a local hand-authored policy. That is much more specific than the title restatement that opens the description. It does not explicitly differentiate itself from broadly similar siblings such as lint_authorization_payload or validate_mcp_authorization_metadata, so it stops short of a 5.

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 only explicit directive is an input-hygiene constraint ('Use synthetic or anonymised inputs only'), which is useful but not a when-to-use rule. There is no statement of when this tool is preferred over a sibling conformance/authz checker, and no prerequisites or exclusion conditions. Usage must be inferred from the purpose sentence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_automation_paybackAutomation PaybackA
Read-onlyIdempotent
Inspect

Automation Payback: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-771-automation-payback.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: Rank automation candidates by payback before you build: monthly reclaimable value (hours saved per week times the loaded hourly rate, plus the error cost the automation eliminates) against total cost of ownership (one-time build amortized over the horizon, the subscription, and a maintenance hair... Outputs: as_of, haircut_pct, horizon_months, weeks_per_month, candidates, ranked, keepers, droppers, net_keep_mo, net_all_mo, hours_reclaimed_wk, horizon_net_keep, horizon_net_all, best_candidate, fastest_breakeven_candidate, fastest_breakeven_months, verdict, regulatory_basis, note. Output schema: call describe_tool("compute_automation_payback").

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: maintenance_haircut_pct, horizon_months, weeks_per_month, candidates. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world execution, so the description adds real value elsewhere: determinism, server-vs-browser delegation semantics for compute:auto/browser and gpu:true, transient no-store/no-log processing, and an AP2 artifact export carrying execution_hash. The only shortfall is that the actual payback formula is truncated mid-word ("maintenance hair...").

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?

It opens with duplicated boilerplate ("OpenChainGraph compute node ..." is repeated as "Deterministic OpenChainGraph compute node") and the genuinely distinguishing purpose sentence sits in the middle. The summary is cut off mid-sentence, and the 20-field output list is partly redundant given it already points to describe_tool for the output schema.

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?

With no output schema, the description compensates by enumerating the returned fields (ranked, keepers, droppers, best_candidate, verdict, etc.), and it discloses the provenance artifact and FV-status receipt behaviour. What remains missing is the core economics — the haircut/horizon formula is truncated — which is the one thing an agent cannot recover from structured fields.

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 compute, parent_hashes, parent_tool_ids and policy_parameters in more detail than the description does. The description's compute-mode sentences largely restate the schema's enum description, and the required policy keys are listed in the schema rather than here. 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?

The middle of the description states a specific function: "Rank automation candidates by payback before you build: monthly reclaimable value ... against total cost of ownership." That is a concrete verb and resource. It does not name a sibling (e.g. compute_breakeven, workforce_board_roi_report) to differentiate itself, and the actual purpose is buried behind compute-mode boilerplate.

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?

"Rank automation candidates by payback before you build" implies the decision context, and "Use synthetic or anonymised inputs only" is an explicit input constraint. However, no alternative tool is named and no when-not-to-use condition is given, so the agent must infer selection from the sibling list alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_basel31_deltaBasel 3.1 Reporting Delta CalculatorC
Read-onlyIdempotent
Inspect

Basel 3.1 Reporting Delta Calculator: OpenChainGraph compute node (capital_assessment). Regulatory deadline: 2027-01-01 (UK PRA PS1/26 Basel 3.1 go-live — January 1, 2027). 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. Output feeds: sim-03-basel-rwa-scenario-modeler, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-07-basel31-reporting-delta-calculator.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.

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". See the tool's manifest for field names.

TDQS

C2.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile, so the description rightly spends its effort elsewhere: determinism, transient/no-retention processing of inputs, the server-vs-browser execution model for gpu:false and gpu:true nodes, AP2 artifact export with execution_hash, and an offline-verifiable FV-status receipt. That is substantial behavior an agent would not infer from readOnly/idempotent hints alone. It stops short of saying what happens on kernel failure or what the delegation URL returns.

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?

It opens by repeating the title verbatim, then devotes most of its length to platform boilerplate (Cloudflare Workers, compute binding, transient processing), a landing-page URL, and a long FV-status hash path. The genuinely tool-specific content — what the delta is — is absent while low-value infrastructure text dominates.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry return-value meaning; it only says an AP2 artifact with execution_hash is exported, and lists downstream consumers by opaque IDs. For a nested-object, kernel-backed financial calculation, the core semantics (what policy_parameters should contain, what the delta measures, units/conventions) are 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%, so the baseline is 3, and the description's explanation of compute:'auto'/'browser'/gpu:true largely restates the schema's own wording. It adds nothing for parent_hashes/parent_tool_ids chaining and gives no field-level guidance for policy_parameters, which the schema itself defers ('See the tool's manifest for field names').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a 'Basel 3.1 Reporting Delta Calculator' compute node in the capital_assessment family, but never states what is being differenced — RWA delta, capital requirement delta, or version delta — nor what the inputs/outputs represent. Siblings such as compute_rwa_erba_2026, compute_oprisk_sma_2026 and compare_basel_2023_vs_2026 are far more specific about the calculation performed. The verb 'compute' plus the resource label gives a rough idea, but an agent cannot tell from this text what the tool actually calculates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage context is downstream chaining ('Output feeds: sim-03-basel-rwa-scenario-modeler, ptg-01-ap2-prompt-template-generator') and an input-handling warning ('Use synthetic or anonymised inputs only'). There is no statement of when to choose this over compare_basel_2023_vs_2026, compute_rwa_erba_2026 or other Basel calculators in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_basel_haircut_adjusted_exposureCollateral Haircut Engine (Basel CRE22)A
Read-onlyIdempotent
Inspect

Collateral Haircut Engine (Basel CRE22): OpenChainGraph compute node (regulatory_reporting). 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. Open at: https://ainumbers.co/chaingraph/art-444-collateral-haircut-engine.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: Basel CRE22 comprehensive-approach collateral haircut engine for counterparty credit risk: applies a caller-supplied, versioned supervisory haircut table (policy input, not hardcoded) to each collateral item's asset class/maturity bucket, scales for a non-standard holding period via the CRE22.68... Outputs: collateral_adjusted_total, collateral_items, exposure_adjusted, exposure_amount, exposure_asset_class, exposure_currency, exposure_haircut_scaled_pct, haircut_table_version, holding_period_days, item_count, net_exposure, note, override_count, override_missing_reason_count, time_scale_factor, unclassified_count. Output schema: call describe_tool("compute_basel_haircut_adjusted_exposure").

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: collateral_items, exposure, haircut_table, haircut_table_version. Unknown keys are refused.

TDQS

A3.6/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 the description adds substantive traits: server-side vs browser delegation semantics for compute modes, that gpu:true nodes always delegate, transient non-retained input processing, and an AP2 artifact with execution_hash for provenance. This is meaningful behavior beyond the annotations, though it could say more about failure/refusal behavior when policy_parameters keys are unknown.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual purpose is buried after two sentences of generic compute-node boilerplate, a URL, and an FV-status hash receipt. The substantive CRE22 explanation is present but padded with repeated provenance boilerplate that could be moved or trimmed; front-loading the regulatory function would help an agent scanning the definition.

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?

No output schema exists, yet the description enumerates all 18 return fields (collateral_adjusted_total, exposure_haircut_scaled_pct, override counts, time_scale_factor, etc.) and points to describe_tool for the schema. For a complex nested-parameter compute tool, an agent has enough to invoke it 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 meaning: haircut_table is a caller-supplied, versioned policy input (not hardcoded), applied per asset class/maturity bucket and scaled via CRE22.68 for non-standard holding periods, and it names the required policy keys. That goes beyond the schema's terse field descriptions.

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 and resource: a Basel CRE22 comprehensive-approach collateral haircut engine that applies a caller-supplied supervisory haircut table to collateral items and scales by holding period. An agent can tell what it computes, though it never explicitly contrasts itself with siblings like calculate_repo_haircut or compute_stock_token_collateral_haircut, which the name alone must disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage directive is 'Use synthetic or anonymised inputs only' and the compute-mode mechanics. There is no statement of when to reach for this tool versus the many other haircut/collateral siblings, and no preconditions or exclusions beyond the data-handling constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_best_execution_evidence_packBest-Execution Evidence PackB
Read-onlyIdempotent
Inspect

Best-Execution Evidence Pack: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/681-best-execution-evidence-pack.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.

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". See the tool's manifest for field names.

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses real behavioral traits: determinism, server-side vs. browser-delegation execution including the gpu:true fallback, transient non-retention of inputs, and that it exports an AP2 artifact carrying execution_hash for chain provenance. This is meaningful added context an agent could not infer from the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operational sentences are dense and front-loaded, but the trailing tool URL and the full FV-status SHA-256 path clutter the definition with content that does not help an agent decide or invoke. The opening repeats the name/title before saying anything new.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a node with a nested policy_parameters object and a delegation mode, the description covers execution locus and data handling adequately and no output schema exists so return values need not be explained. However, it leaves the actual decision function, the meaning of the exported evidence, and policy_parameters structure to an external manifest, which is a gap for a compliance-evidence tool.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters thoroughly. The description adds only a light restatement of compute-mode semantics and defers policy_parameters field names to "the tool's manifest", so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

It labels itself a "Best-Execution Evidence Pack" OpenChainGraph compute node for compliance_control, but the body spends its words on compute-mode and retention mechanics rather than stating what it actually computes (a best-execution analysis) or what the exported artifact contains. It never distinguishes itself from close siblings like recompute_best_execution, build_evidence_pack, or assemble_ocg_evidence_bundle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only real guidance is the mode selection for the compute parameter (auto/server/browser) and the data-handling constraint "Use synthetic or anonymised inputs only". There is no statement of when to reach for this tool instead of the many sibling evidence-pack and recompute_* tools, and no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_bond_durationBond Macaulay / Modified DurationA
Read-onlyIdempotent
Inspect

Bond Macaulay / Modified Duration: OpenChainGraph compute node (analytics_mandate). 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. Output feeds: art-330-tvm-dv01, art-331-tvm-convexity. Open at: https://ainumbers.co/chaingraph/art-329-tvm-bond-duration.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: Macaulay and modified duration for a standard even-period bullet bond, given face value, coupon rate, yield to maturity, years to maturity, and compounding frequency. Outputs: coupon_rate_pct, day_count_convention, face_value, macaulay_duration_years, modified_duration_years, note, num_periods, periods_per_year, price, regulatory_basis, years_to_maturity, ytm_pct. Output schema: call describe_tool("compute_bond_duration").

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: day_count_convention. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/no-destructive, and the description adds real behavioral context beyond them: compute:'auto' vs 'browser' execution semantics, gpu:true always delegating, transient/no-retention data handling, synthetic-inputs-only guidance, and AP2 execution_hash provenance plus an offline-verifiable FV-status receipt.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but there is notable waste: 'deterministic OpenChainGraph compute node' repeats the opening phrase, and a long embedded FV-status hash bloats the text. The core callable info survives, but the padding dilutes it.

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?

For a nested-policy compute tool with no output schema, the description enumerates the return fields (macaulay_duration_years, modified_duration_years, price, etc.), which compensates for the missing output schema. A near-complete picture of inputs and outputs.

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%, so the schema already documents compute and parent_hashes/parent_tool_ids. The description restates the policy inputs (face value, coupon, YTM, years, compounding) but adds no syntax or format detail beyond the schema. 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?

The Summary clearly states it computes Macaulay and modified duration for a standard even-period bullet bond from face value, coupon rate, YTM, years to maturity, and compounding frequency. It distinguishes the calculation from generic nodes but does not explicitly differentiate from close siblings like compute_convexity or compute_dv01.

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 implied via 'Output feeds: art-330-tvm-dv01, art-331-tvm-convexity' and the compute-mode defaults, but there is no explicit when-to-use-this-vs-compute_convexity/compute_dv01 guidance. The agent must infer selection from domain knowledge.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_breakevenBreakeven / CVP AnalysisA
Read-onlyIdempotent
Inspect

Breakeven / CVP Analysis: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-328-tvm-breakeven.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: Standard cost-volume-profit breakeven analysis: breakeven units and revenue from fixed costs, price per unit, and variable cost per unit, plus contribution margin ratio and an optional margin-of-safety calculation against a supplied current volume. Outputs: breakeven_revenue, breakeven_units, contribution_margin_ratio, fixed_costs, margin_of_safety_pct, margin_of_safety_units, note, price_per_unit, regulatory_basis, unit_contribution, variable_cost_per_unit. Output schema: call describe_tool("compute_breakeven").

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". Unknown keys are refused.

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, but the description adds real context beyond them: transient processing with no storage/logging/retention, restricted input types, server-vs-browser delegation behavior, and an AP2 artifact with execution_hash for provenance. This is meaningful behavioral disclosure well above the annotation bar.

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?

Purpose is not front-loaded — the actual breakeven summary appears in a trailing 'Summary:' block after extensive infrastructure boilerplate (kernel registration, Cloudflare Workers, FV-status receipt, URL). Several sentences are cross-cutting chain-node boilerplate rather than tool-specific, increasing length without adding selectability value.

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?

Even without an output schema the description enumerates the returned fields (breakeven_revenue, breakeven_units, contribution_margin_ratio, margin_of_safety_pct, etc.) and covers compute-mode and data-handling behavior. An agent has enough to invoke it correctly, with only the formula/input mapping left implicit.

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%, so the schema already fully documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description echoes the policy inputs and lists outputs but adds no format or semantic detail beyond the schema; 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?

The 'Summary:' clause states a specific verb+resource: 'cost-volume-profit breakeven analysis: breakeven units and revenue from fixed costs, price per unit, and variable cost per unit, plus contribution margin ratio'. It's clear what computation happens, though it's buried behind boilerplate and does not differentiate from nearby siblings like estimate_hdhp_ppo_breakeven or model_scorp_break_even.

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 description gives operational guidance (compute modes, 'Use synthetic or anonymised inputs only') but says nothing about when to choose this tool versus related CVP/breakeven siblings. Usage context is implied by the summary, not explicitly framed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_canton_app_reward_estimateCanton App-Reward Estimator (CIP-0104)A
Read-onlyIdempotent
Inspect

Canton App-Reward Estimator (CIP-0104): OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-392-compute-canton-app-reward-estimate.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: Estimates a Canton Network app provider's Canton Coin reward for one round under CIP-0104 (approved 2026-02-12): app rewards are proportional to confirmed envelope bytes (traffic where the app-provider party appears as confirmer) against that round's app-reward pool share of the minting curve. Outputs: app_reward_pool_cc, app_reward_pool_share, cc_reward_estimate, confirmed_envelope_bytes, confirmed_share_of_traffic, disambiguation, pool_share_source, protocol_version, round_total_envelope_bytes, round_total_mint_cc. Output schema: call describe_tool("compute_canton_app_reward_estimate").

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: protocol_version. Unknown keys are refused.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that inputs are processed transiently and not stored/logged/retained, describes server-side versus browser delegation behavior, notes gpu:true handling, and states that an AP2 artifact with execution_hash is exported. These are substantive behavioral traits not covered by readOnly/idempotent/non-destructive hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is buried in the final "Summary" line after URL, FV-status hash, and repeated "OpenChainGraph compute node" phrases. The "Output schema: call describe_tool" meta-instruction and long provenance receipt reduce front-loading and efficiency.

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?

With no output schema provided, the description does list all output field names and covers compute-mode, privacy, and provenance context; the input schema carries the detailed parameter definitions. It is complete enough to call correctly, though explicit alternative-tool routing is still 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 already 100%, so the baseline is 3. The description repeats the compute mode semantics and conceptually mentions policy inputs, but it does not add per-parameter meaning for parent_hashes, parent_tool_ids, or the nested policy_parameters fields beyond what the schema provides.

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?

The description states a specific verb ("Estimates") and resource ("a Canton Network app provider's Canton Coin reward for one round under CIP-0104"), with enough scope detail around confirmed envelope bytes to distinguish it from adjacent Canton compute tools. Although no sibling is named explicitly, the narrow app-reward scope is clear.

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?

It gives useful guidance for the compute mode parameter (auto/server/browser) and a privacy constraint ("Use synthetic or anonymised inputs only"). However, it never explains when to use this tool instead of siblings such as compute_canton_traffic_cost or diagnose_canton_readiness, and it gives no explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_canton_traffic_costCanton Synchronizer Traffic-Cost CalculatorA
Read-onlyIdempotent
Inspect

Canton Synchronizer Traffic-Cost Calculator: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-391-compute-canton-traffic-cost.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: Computes Canton Network synchronizer traffic cost (CIP-0042/CIP-0084 regime): fee = message megabytes x the Tokenomics-Committee-set USD/MB rate, converted to Canton Coin burned at a caller-supplied CC/USD price. Outputs: cc_burned, cc_usd_price, disambiguation, effective_rate_usd_per_mb, envelope_mb, free_period_applies, free_period_days, free_period_source, is_transfer_preapproval, preapproval_age_days, protocol_version, rate_source, rate_usd_per_mb, usd_traffic_cost. Output schema: call describe_tool("compute_canton_traffic_cost").

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: is_transfer_preapproval, protocol_version. Unknown keys are refused.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses meaningful execution behavior: default server-side computation on Cloudflare Workers, browser delegation for compute:'browser' and gpu:true nodes, transient processing with no input storage or logging, and an exported AP2 artifact with execution_hash. These details materially help an agent understand what the tool does and what side effects to expect.

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?

The core purpose is buried after boilerplate about OpenChainGraph compute nodes, a long URL, and an FV-status hash. The output list and provenance details are useful, but the description is overlong and not front-loaded around the traffic-cost calculation.

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?

For a complex compute tool with no output schema, it lists the returned fields and explains compute modes, privacy handling, and artifact provenance. It is largely complete, though the description could more directly summarize required policy inputs and their relationship to the listed outputs.

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 high, but the description still adds real domain meaning by explaining the fee formula, the role of envelope_mb and rate_usd_per_mb, the caller-supplied cc_usd_price conversion, and related outputs such as free_period_applies and is_transfer_preapproval. It goes beyond simply restating parameter names.

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?

The description names the specific resource and calculation: Canton Network synchronizer traffic cost under the CIP-0042/CIP-0084 regime, including the fee formula and CC-burn conversion. This is distinguishable from broader Canton or fee-modeling siblings such as diagnose_canton_readiness or compute_canton_app_reward_estimate.

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?

It gives important usage constraints, notably 'Use synthetic or anonymised inputs only' and explains compute modes, but it does not explicitly say when to choose this tool over related Canton or traffic-fee alternatives. The usage context is implied by the narrow fee formula rather than stated as selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_cdd_ownership_25pctFinCEN CDD 25% Beneficial Ownership AttributionB
Read-onlyIdempotent
Inspect

FinCEN CDD 25% Beneficial Ownership Attribution: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-269-validate-w8-series-structural. Open at: https://ainumbers.co/chaingraph/art-268-compute-cdd-ownership-25pct.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: Recursive indirect natural-person beneficial ownership computation via ownership-tier multiplication. Outputs: below_threshold, below_threshold_count, beneficial_owner_count, beneficial_owners, entities_evaluated, is_beneficial_owner, methodology, not_legal_advice, pii_note, regime_note, regulatory_basis, table_source, table_version, threshold_pct. Output schema: call describe_tool("compute_cdd_ownership_25pct").

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". Unknown keys are refused.

TDQS

B3.4/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 the description adds real behavioral context beyond them: determinism, transient server-side processing with no storage/logging/retention, the AP2 artifact export carrying execution_hash for provenance, and the delegation rules for gpu:true nodes. Some of this (compute mode) duplicates the schema, but the data-handling and provenance disclosures are genuine additions.

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?

The text is bloated with cross-node boilerplate: 'OpenChainGraph compute node' is effectively stated twice, and a full spec URL plus a 64-character FV-status receipt URL are embedded before the actual domain explanation. The useful domain summary ('recursive indirect... ownership-tier multiplication') is buried late, so the definition is not front-loaded on what the agent most needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the outputs inline is helpful, and the behavioral disclosures are decent. But for a tool whose real input is an untyped nested policy_parameters object (natural_persons, ownership_tiers, target_entity_id have no schema types or descriptions), the description never specifies the expected structure, leaving the agent without enough to construct a valid call beyond trial and error.

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 compute, parent_hashes, and parent_tool_ids parameters are already fully documented and the baseline is 3. The description only adds indirect meaning for policy_parameters ('ownership-tier multiplication', threshold_pct in the output list) and does not explain the nested natural_persons / ownership_tiers / target_entity_id shapes, which the schema leaves as untyped empty objects.

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 summary line 'Recursive indirect natural-person beneficial ownership computation via ownership-tier multiplication' plus the title state a specific verb and resource (compute 25% FinCEN CDD beneficial ownership through tier multiplication). It does not explicitly contrast itself with nearby ownership siblings such as aggregate_ownership_50pct or aggregate_ownership_50pct-adjacent tools, so differentiation is left to the 25% threshold in the name rather than stated in prose.

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?

It gives a downstream routing hint ('Output feeds: art-269-validate-w8-series-structural') and an input constraint ('Use synthetic or anonymised inputs only'), plus compute-mode selection rules inherited from the schema. However, there is no explicit statement of when to choose this 25% computation over the 50% aggregation sibling, which is the main selection decision an agent faces here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_cfpb_1071_coverageCFPB 1071 Coverage Check & SBLAR Record ValidatorA
Read-onlyIdempotent
Inspect

CFPB 1071 Coverage Check & SBLAR Record Validator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-475-cfpb-1071-coverage-check.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: CFPB Section 1071 small business lending rule (Regulation B subpart B, revised final rule published 2026-05-01): determines whether a financial institution is a covered originator by checking its small-business-originations count against the 1,000-origination threshold for each of the two precedi... Outputs: compliance_dates, covered, note, originations_year1_count, originations_year2_count, regulatory_basis, required_sblar_fields, sblar_records, sblar_summary, threshold. Output schema: call describe_tool("compute_cfpb_1071_coverage").

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: required_sblar_fields, sblar_records. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is a read-only, idempotent, non-destructive, closed-world computation, and the description adds substantial behavioral context beyond that: compute modes, GPU delegation behavior, transient processing, no storage or logging, synthetic-input requirement, and AP2 artifact export with execution_hash. These details help an agent understand side effects and data-handling constraints.

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?

The description is bloated with generic OpenChainGraph boilerplate, privacy language, FV-status URL details, and artifact provenance before the actual CFPB 1071 purpose appears. The real tool purpose is buried in a truncated 'Summary' sentence, and several sentences do not help an agent select or invoke this specific tool.

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?

For a complex regulatory computation with no structured output schema, the description provides the core decision rule, compute behavior, privacy constraints, and an output field list. However, the rule summary is truncated with an ellipsis, and output field meanings are not explained beyond their names, leaving some completeness gaps.

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 compute, parent_hashes, parent_tool_ids, and the policy_parameters fields. The description restates key required policy fields and compute-mode behavior but does not add meaningful syntax, format, or validation detail beyond what the schema already provides, so the baseline 3 is appropriate.

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?

The description states a specific regulatory computation: it determines whether a financial institution is a covered originator under CFPB Section 1071 by comparing small-business origination counts against the 1,000-origination threshold across two prior years. It also identifies the tool as an SBLAR record validator, which gives a concrete verb-and-resource scope distinct from the many other compliance tools in the sibling list.

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 usage context is implied by the regulatory summary and the explicit constraint to use synthetic or anonymised inputs only, but the description does not say when to select this tool over alternatives or when not to use it. It gives no explicit routing guidance among sibling compliance tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_consolidation_ctaConsolidation with CTA and Minority InterestC
Read-onlyIdempotent
Inspect

Consolidation with CTA and Minority Interest: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/tools/683-consolidation-cta-minority-interest.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/non-destructive), the description adds real behavior: default server-side execution on Cloudflare Workers for gpu:false nodes, browser delegation for gpu:true, transient processing with no storage/logging/retention, and export of an AP2 artifact carrying execution_hash for chain provenance. The no-retention and provenance-artifact facts are genuinely beyond what the annotations convey.

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?

Most of the text is infrastructure boilerplate (compute binding, Cloudflare Workers, FV-status snapshot URL and 64-char hash) rather than task-relevant content. The one sentence that matters for the domain — what gets consolidated — never appears, so the length is poorly allocated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a specialized accounting computation with a nested, untyped policy_parameters object and no output schema, the description should at least sketch the inputs (FX rates, ownership percentages, elimination entries) and the result shape. Instead it documents platform mechanics, leaving the agent to fetch an external manifest to call it 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%, so baseline is 3, and the compute-mode narrative is consistent with the enum already documented in the schema. However, the most important parameter, policy_parameters, is left opaque ('See the tool's manifest for field names'), forcing an external lookup; the description adds no field-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens by restating the title ('Consolidation with CTA and Minority Interest') and then labels it a 'compute node (compliance_mandate)' / 'Deterministic OpenChainGraph compute node', which is tautological. It never says what the consolidation computation actually does or how it differs from close siblings such as compute_intercompany_elimination_netting or aggregate_ownership_50pct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no alternative sibling is named. The only routing-like content is about compute mode (auto/browser), which is execution plumbing rather than tool selection advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_consultation_response_trackerConsultation Response TrackerC
Read-onlyIdempotent
Inspect

Consultation Response Tracker: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/tools/678-consultation-response-tracker.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.

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". See the tool's manifest for field names.

TDQS

C2.4/5.0
Behavior3/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 the safety profile is covered. The description does add genuine behavioral context beyond that: transient processing with no storage or logging, a synthetic-data-only constraint, and an AP2 artifact export carrying execution_hash for provenance. However, the surrounding URL and FV-status receipt text is boilerplate that dilutes rather than informs.

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?

The sentences that matter (compute modes, transient processing, artifact export) are buried among redundant 'Deterministic OpenChainGraph compute node' repetition, a documentation URL, and an offline-receipt disclaimer about a snapshot file. Substantial text is spent on vendor metadata rather than tool-specific information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compute node with no output schema, the description should convey what the computation produces and how to populate policy_parameters. It covers the execution environment and provenance reasonably but leaves the actual analytical function and the field names of the primary input undocumented.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters fields are already documented in the schema, and the description largely restates the compute-mode semantics. Critically, for the only substantive input it says 'See the tool's manifest for field names', deferring documentation outside the tool definition rather than adding meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description labels the tool as an 'OpenChainGraph compute node (analytics_mandate)' and repeats that it is 'deterministic', but never says what a consultation response tracker computes or what question it answers. An agent reading only this text cannot distinguish its analytics function from the dozens of other compute_* siblings beyond the opaque name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains compute-mode selection ('auto' vs 'browser' vs gpu:true delegation), which is invocation mechanics, not when to choose this tool over alternatives. There is no statement of preconditions, suitable inputs, or which sibling tools compete with it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_control_attestation_campaign_roll_upControl Attestation Campaign Roll UpC
Read-onlyIdempotent
Inspect

Control Attestation Campaign Roll Up: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/680-control-attestation-campaign-roll-up.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.

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". See the tool's manifest for field names.

TDQS

C2.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, but the description adds meaningful context: server-side vs browser delegation, GPU node handling, transient data processing with no retention, and a recommendation to use synthetic inputs. It also discloses the AP2 artifact export with execution_hash, providing provenance transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the tool name but contains redundancy ('OpenChainGraph compute node' repeated) and includes a verbose FV-status URL block. It is readable but not tightly edited; several sentences could be merged or removed without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite rich annotations and full schema coverage, the description omits what the roll-up computation actually does—the central piece an agent needs to invoke it correctly. No output schema exists, and the description does not compensate by explaining the expected result beyond 'AP2 artifact with execution_hash', leaving a significant gap for a complex compute node.

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%, so the schema already documents all four parameters. The description largely repeats the compute parameter's enum semantics and mentions GPU delegation, but adds no new meaning for parent_hashes, parent_tool_ids, or policy_parameters beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the tool name and labels it a 'compute node (compliance_control)' but never states what computation 'roll up' actually performs or what a control attestation campaign is. It adds output details (exports AP2 artifact) but not the core action, leaving it effectively a tautology of the title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool instead of alternatives like compose_control_test_evidence or build_dual_control_certification. The only conditional language is about compute modes (auto/server/browser), which is behavioral, not usage selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_convexityBond ConvexityA
Read-onlyIdempotent
Inspect

Bond Convexity: OpenChainGraph compute node (analytics_mandate). 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-329-tvm-bond-duration. Open at: https://ainumbers.co/chaingraph/art-331-tvm-convexity.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: Standard closed-form convexity for a bullet bond, annualized by compounding frequency squared. Outputs: convexity, convexity_price_adjustment_pct, coupon_rate_pct, face_value, note, num_periods, periods_per_year, price, regulatory_basis, years_to_maturity, ytm_pct. Output schema: call describe_tool("compute_convexity").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds substantial behavioral context: deterministic execution, server-versus-browser compute routing, GPU delegation, transient data handling, AP2 artifact export with execution_hash, and upstream artifact chaining. These are material execution traits not covered by the readOnly/idempotent/destructive annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description contains useful details, but it is verbose and front-loads OpenChainGraph boilerplate before the actual tool summary. Long provenance URLs and FV-status hashes are not essential for tool selection or invocation.

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?

For a compute node with no output schema, the description does list the output fields and explains compute modes, privacy handling, and artifact chaining. It still omits explicit sibling selection guidance and deeper policy-parameter semantics, so it is not fully complete.

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%, so the baseline is 3. The description mentions compounding frequency and lists outputs, but it does not add parameter-level meaning for policy_parameters such as ytm_pct, face_value, yield_shock_bp, or periods_per_year beyond what the schema already provides.

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 description clearly identifies the metric and domain: closed-form convexity for a bullet bond, annualized by compounding frequency squared. It also lists output fields, but it does not explicitly distinguish this tool from closely related siblings such as compute_bond_duration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It describes compute-mode options and a privacy constraint, but gives no explicit guidance on when to use this tool versus alternatives like compute_bond_duration or compute_dv01. The agent must infer the use case from the title and summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_counterparty_limit_checkCounterparty Internal Limit CheckA
Read-onlyIdempotent
Inspect

Counterparty Internal Limit Check: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-446-counterparty-internal-limit-check.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: Counterparty internal credit-limit check: compares each counterparty's caller-supplied current exposure against its board-approved internal limit line (settlement, pre-settlement/PFE, or aggregate limit type), computes utilization percent and headroom, and flags each counterparty WITHIN_LIMIT, WA... Outputs: breach_list, counterparties, note, regulatory_basis, warning_list. Output schema: call describe_tool("compute_counterparty_limit_check").

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: counterparties. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses server-side versus browser delegation behavior, transient input handling with no storage or logging, AP2 artifact export with execution_hash, and the deterministic compute-node model. These are substantive behavioral traits that an agent would not get from the annotations alone.

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?

The useful purpose statement is buried after generic ChainGraph boilerplate, a URL, and an FV-status hash receipt. The repeated compute-node framing and provenance link dilute focus and make the definition less efficient than it should be.

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 covers the core decision logic, compute execution model, privacy behavior, artifact export, and output names. Since the schema is fully described and annotations cover safety, remaining gaps around parent-hash chaining are minor.

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%, so the schema already documents compute modes, parent hashes, and policy parameters. The description adds conceptual meaning around counterparties, limit types, and outputs, but it does not add parameter-level syntax or required-field guidance beyond the schema.

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 summary states a specific verb and resource: compares counterparty exposure against board-approved internal limits, computes utilization and headroom, and flags each counterparty. That is clear, but the description does not explicitly distinguish this tool from nearby siblings such as large-exposure or concentration checks.

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 description explains compute-mode behavior and says to use synthetic or anonymised inputs, which implies operational guidance. However, it does not explicitly say when to choose this tool versus alternative limit or exposure tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_cross_border_feesCross-Border B2B Fee CalculatorB
Read-onlyIdempotent
Inspect

Cross-Border B2B Fee Calculator: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-367-compute-cross-border-fees.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: Itemizes a single cross-border B2B invoice's total cost stack: FX spread cost, payment-method/correspondent fee, VAT or reverse-charge cost, documentary-credit cost, and reconciliation cost, plus total cost as a percentage of invoice value. Outputs: dest_country, disambiguation, doc_cost, fx_cost, fx_spread_bps, invoice_amount, method_fee, origin_country, pct_of_invoice, recon_cost, regulatory_basis, total_cost, vat_cost, vat_rate. Output schema: call describe_tool("compute_cross_border_fees").

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: dest_country, origin_country. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower, yet the description adds real value: server-side execution on Cloudflare Workers versus browser delegation, the gpu:true always-delegate rule, transient processing with no storage/logging/retention, and an AP2 artifact carrying execution_hash for chain provenance. The FV-status/timestamp-material caveat is also disclosed.

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?

Roughly two-thirds of the text is compute-node plumbing, a spec URL, and a long FV-status hash/receipt sentence, while the one genuinely useful sentence describing the calculation is placed near the end. The key purpose is not front-loaded and the artifact-provenance detail dilutes the call decision.

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?

With no output schema, the description compensates by enumerating all 14 returned fields, and the parameters are fully covered by the schema. Input units and the meaning of ambiguous outputs such as 'disambiguation' are left unexplained, but the definition is otherwise complete for calling the tool 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 description coverage is 100%, so the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters, including the required dest_country/origin_country. The description only restates the compute-mode behavior and enumerates output fields; it adds no meaning about units, formats, or acceptable ranges for the numeric policy_parameters (fx_spread_bps, vat_rate, method_fee).

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 summary sentence states a specific verb and resource: itemizes a single cross-border B2B invoice's total cost stack (FX spread, method/correspondent fee, VAT/reverse charge, documentary credit, reconciliation, and total cost as % of invoice). That is precise enough to distinguish it from generic siblings like compare_corridor_cost or compute_fx_netting_positions, though no sibling is named explicitly and the useful summary is buried after infrastructure boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is about inputs ('use synthetic or anonymised inputs only') and the compute-mode mechanics; there is no statement of when to reach for this tool versus the many adjacent corridor-cost, FX-netting, or stablecoin-corridor siblings. An agent must infer the selection criteria from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_custody_segregation_ratioCustody Segregation RatioB
Read-onlyIdempotent
Inspect

Custody Segregation Ratio: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-538-custody-segregation-ratio.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: Generic, jurisdiction-neutral custody-segregation check: segregated_custody_assets_musd / customer_claims_musd, per asset class and rolled up. Outputs: line_items, total_segregated_musd, total_claims_musd, segregation_ratio, status, over_segregation_ceiling, custody_location_breakdown, formula, note. Output schema: call describe_tool("compute_custody_segregation_ratio").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive. The description adds meaningful context beyond them: transient processing with no storage/logging/retention, the auto/server/browser compute distinction with gpu:true always delegating, and that an AP2 artifact with execution_hash is exported. The compute-mode text largely reiterates the schema's compute field, limiting it below 5.

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?

The real purpose is buried after compute-node boilerplate, a full FV-status snapshot URL and hash, and provenance disclaimers. Substantial text is redundant with the schema and annotations, and the key formula appears late rather than front-loaded.

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?

For a nested-object tool with no output schema, the description compensates by enumerating outputs (line_items, total_segregated_musd, total_claims_musd, segregation_ratio, status, over_segregation_ceiling, custody_location_breakdown) and explaining compute/delegation behavior. It's largely complete, with usage routing being the main gap.

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%, so parameters are fully documented in the input schema. The description adds only indirect meaning (naming segregated_assets/customer_claims inputs via the formula) without clarifying policy_parameters structure or over_segregation_ceiling behavior. Baseline 3 is appropriate.

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 'Summary' clause states a specific verb and resource with the formula: segregated_custody_assets_musd / customer_claims_musd per asset class, rolled up. It's specific enough to distinguish the computation, though the opening sentence only restates the title as an OpenChainGraph compute node, delaying real purpose until midway.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given, nor is any alternative sibling named. An agent cannot tell from the text whether to reach for this versus check_safeguarding_reconciliation, classify_safeguarding_method, or other safeguarding compliance tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_cyber_incident_notification_clockCyber Incident Notification ClockC
Read-onlyIdempotent
Inspect

Cyber Incident Notification Clock: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-428-cyber-incident-clock.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: Starts three parallel regulatory notification-deadline clocks from one hash-anchored cyber-incident determination timestamp: the 36-hour interagency banking-regulator rule (12 CFR 53/225/304), the 4-business-day SEC Form 8-K Item 1.05 notification (weekends-only business-day arithmetic; no federa... Outputs: determination_at, determination_at_parsed, determination_evidence_hash, determination_evidence_hash_well_formed, determinations, evaluated_at, incident_id, note. Output schema: call describe_tool("compute_cyber_incident_notification_clock").

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". Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnly/idempotent/non-destructive already declared in annotations, the description still adds real context: server-side compute on Cloudflare Workers with a kernel, browser delegation for gpu:true nodes, transient no-storage/no-logging processing, and an exported AP2 artifact carrying execution_hash for chain provenance. It does not say what happens when jurisdiction flags conflict, but the operational profile is well disclosed.

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?

Roughly half the text is reusable platform boilerplate about compute binding, privacy and FV-status receipts that says nothing about this tool's decision logic, and the one sentence that matters is truncated mid-word. The purpose statement should be first, not fourth.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description does list the output keys (determination_at, determination_at_parsed, determinations, evaluated_at, incident_id, note), which partly compensates. Against a nested policy_parameters object with 13 opaque fields and an interpolated regulatory rule set, the description leaves the agent guessing which flags drive which clock.

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 baseline of 3 applies. The description restates the compute:"auto"/"browser" semantics already documented in the schema and says nothing about the 13 keys inside policy_parameters (is_national_bank, nydfs_covered_entity, sec_rescission_petition_pending, etc.), which is where the real ambiguity lies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The actual purpose appears only after ~120 words of platform boilerplate and is cut off mid-word ("no federa..."), but what remains does state a specific verb and resource: starts three parallel regulatory notification-deadline clocks from a hash-anchored cyber-incident determination timestamp, naming the 36-hour interagency rule and SEC 8-K Item 1.05. No differentiation from near-neighbours such as classify_dora_ict_incident_and_clock_deadlines, servicing_compliance_clock or compute_whistleblowing_channel_clock.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Nothing tells the agent when to pick this over the other clock tools in the catalogue, and no prerequisites or exclusion conditions are stated. The only usage-adjacent line, "Use synthetic or anonymised inputs only", is a data-handling constraint, not tool selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_derivatives_margin_workbenchDerivatives Margin WorkbenchB
Read-onlyIdempotent
Inspect

Derivatives Margin Workbench: OpenChainGraph compute node (derivatives_margin_health). 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. Open at: https://ainumbers.co/tools/656-derivatives-margin-workbench.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.

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". See the tool's manifest for field names.

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds useful context: deterministic server-side versus browser execution, GPU delegation, transient non-retention of inputs, and AP2 artifact/execution_hash provenance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful identity and execution details are front-loaded, but the description also includes a tool URL and a lengthy FV-status receipt sentence that do not help an agent select or invoke the tool. Some provenance boilerplate is mixed into otherwise useful context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It covers compute modes, privacy behavior, and artifact provenance, which is meaningful for a compute node. However, with no output schema, it does not describe the returned artifact shape in enough detail and leaves policy_parameters content to the schema/manifest.

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 all four parameters are already documented in the schema. The description repeats compute-mode semantics but adds no meaning for parent_hashes, parent_tool_ids, or policy_parameters, so the baseline of 3 is appropriate.

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 description identifies the tool as an OpenChainGraph compute node for derivatives_margin_health, so its purpose is inferable. It does not explicitly differentiate it from nearby margin-related siblings such as compute_perp_margin, estimate_cross_margin_benefit, or estimate_ficc_margin_netting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and browser delegation behavior, but it never says when to use this tool versus margin-related alternatives or when not to use it. The only usage constraint is to use synthetic or anonymised inputs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_deterministic_amortization_scheduleDeterministic Amortization ScheduleB
Read-onlyIdempotent
Inspect

Deterministic Amortization Schedule: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-626-deterministic-amortization-schedule.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: Demonstrator node for the shared _amort.bundle.mjs kernel: a deterministic amortization-schedule engine over seven closed day-count conventions (six ISDA 2006 Definitions Section 4.16 calendar conventions plus UNIT_PERIOD for lease/revenue schedules). Outputs: convention, periods_per_year, schedule, rate_solve, final_plug, remeasurement, rounding_steps, bounds, day_count_source, note. Output schema: call describe_tool("compute_deterministic_amortization_schedule").

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: principal, convention, periods. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful context beyond the annotations: server-side vs browser execution routing, gpu:true delegation, transient processing with no storage or logging, synthetic-input guidance, and AP2 artifact export with execution_hash. These are useful behavioral details even though some repeat the compute parameter schema.

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?

The description is bloated and repetitive, starting with duplicate title/node phrasing and including a URL plus a long FV-status hash receipt that does not help an agent invoke the tool. The useful purpose statement is deferred to a late 'Summary' sentence.

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?

Given the nested policy_parameters object and absence of an output schema, the description provides useful completeness by listing output fields, explaining compute modes, privacy behavior, and artifact provenance. It still lacks usage routing, but the call-level information is largely present.

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 all four parameters. The description repeats the compute-mode behavior but does not add new meaning for policy_parameters or the parent hash fields beyond what the schema provides.

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 description eventually states a specific verb and resource: a deterministic amortization-schedule engine over seven day-count conventions. However, this is buried after repeated generic 'OpenChainGraph compute node' phrasing, and it does not distinguish itself from siblings such as build_amortization_schedule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives compute-mode behavior but no guidance on when to use this tool versus alternatives like build_amortization_schedule or recompute_lease_schedule_asc842_ifrs16. It also includes no exclusion criteria or situational routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_direct_indexing_fit_screenDirect Indexing Fit ScreenC
Read-onlyIdempotent
Inspect

Direct Indexing Fit Screen: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-685-direct-indexing-fit-screen.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.

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". See the tool's manifest for field names.

TDQS

C2.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context: server-side vs browser delegation semantics, gpu:true always delegating, transient non-retention of inputs, and an AP2 artifact export with execution_hash for chain provenance. It also flags the FV-status receipt as a snapshot that verifies offline. Nothing here contradicts the read-only annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It opens with a title restatement rather than the substantive purpose, and roughly half the text is generic node-infrastructure boilerplate (Workers, kernels, AP2 export, a URL and a long FV-status path) repeated across this family. The genuinely tool-specific content is minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a fit-screening tool with no output schema, the description never explains the shape of the result (score, pass/fail verdict, threshold bands) or what fields policy_parameters expects. It documents the compute/plumbing envelope well but leaves the actual decision function and its output undefined.

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 parameters are documented structurally and the description merely echoes the compute-mode semantics already in the schema. Critically, policy_parameters is opaque in both places — the description defers to "the tool's manifest for field names" rather than naming the decision-function inputs, so it does not compensate for the one real semantic gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence restates the title ("Direct Indexing Fit Screen") and labels it an "OpenChainGraph compute node (compliance_control)" without ever saying what the screen evaluates, what inputs define fit, or what verdict it produces. Compared with siblings like run_mica_casp_fit or run_eudr_readiness_fit, an agent cannot tell what domain criteria this tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to select this tool, what prerequisites exist, or which sibling fit-diagnostic to use instead. The only conditional guidance is about compute mode (auto/server/browser), which is an execution concern, not a task-selection one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_discount_window_capacityDiscount Window Borrowing-Capacity CalculatorB
Read-onlyIdempotent
Inspect

Discount Window Borrowing-Capacity Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-427-discount-window-capacity.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: Federal Reserve Discount Window borrowing-capacity calculator: lendable value = sum of pledged collateral positions x published Fed collateral margins (margin table effective date is caller-supplied policy input, not hardcoded) compared against a runnable-liability / uninsured-deposit coverage ta... Outputs: capacity_compliant, capacity_surplus_shortfall_musd, collateral_par_value_musd, coverage_pct, coverage_target_pct, lendable_value_musd, margin_table_version, note, runnable_liabilities_musd. Output schema: call describe_tool("compute_discount_window_capacity").

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: collateral_positions, margin_table_version, runnable_liabilities. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, and the description adds genuinely new context beyond that: inputs are processed transiently and not stored or logged, callers must use synthetic or anonymised inputs, an AP2 artifact with execution_hash is exported for provenance, and gpu:true nodes always delegate to the browser. The only gap is that the artifact export and the 'nothing is retained' claim sit together without explaining what the exported artifact contains.

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?

The front half is reusable platform boilerplate (compute-node lineage, a full FV-status URL with a 64-character hash, an artifact link) that pushes the actual tool purpose into the second half and then cuts it off mid-word. The output enumeration is useful, but the description is neither front-loaded nor free of padding.

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?

With no output schema, the description compensates by naming all nine outputs, which lets an agent interpret the return payload without a follow-up call to describe_tool. Required policy inputs and compute modes are covered, and the transient-processing caveat covers data-handling concerns. The truncated purpose sentence and the absence of units/interpretation for the returned metrics keep it short of complete.

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 the compute-mode and chaining parameters are fully documented in the schema, so the baseline of 3 applies. The description adds one useful semantic detail — that margin_table_version is a caller-supplied policy input rather than hardcoded — and confirms which policy_parameters are required, but nothing about the shape or units of collateral_positions or runnable_liabilities.

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?

Once past the boilerplate, the description gives a precise and specific formula: lendable value = pledged collateral positions x published Fed collateral margins, compared against a runnable-liability/uninsured-deposit coverage target. That is far more specific than the title alone and distinguishes it from generic ratio tools. However, the sentence is truncated mid-phrase ('coverage ta...') and the real purpose only appears after ~150 words of platform boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives among the many other capacity/liquidity compute tools (compute_asset_liability_coverage, run_liquidity_stress_test, check_capital_adequacy_private, etc.), and no prerequisites or preconditions. The compute:'auto'/'server'/'browser' explanation is about execution mode, not about when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_disparity_metricsCompute Disparate Impact MetricsA
Read-onlyIdempotent
Inspect

Compute Disparate Impact Metrics: OpenChainGraph compute node (compliance_mandate). 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-230-compute-hmda-rate-spread. Open at: https://ainumbers.co/chaingraph/art-229-compute-disparity-metrics.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: Computes three fair lending disparate impact metrics from aggregate lending counts: 4/5ths (80%) rule (adverse_impact_ratio) per EEOC 29 CFR §1607.4(D), z-statistic for statistical significance of the approval-rate difference, and standardised mean difference (Cohen's d). Outputs: adverse_impact_ratio, four_fifths_flag, four_fifths_result, four_fifths_threshold, group_a, group_b, n_total, odds_ratio, pii_note, pooled_proportion, regulatory_basis, standardized_mean_difference, table_source, table_version, two_proportion_z, z_critical_flag_onetail_05, z_critical_flag_twotail_05, zero_pii_confirmation. Output schema: call describe_tool("compute_disparity_metrics").

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: group_a_label, group_b_label. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the read-only/idempotent/closed-world profile, and the description adds real context beyond that: transient processing with no storage/logging, the compute-mode delegation semantics, and AP2 artifact export with execution_hash for provenance. This is meaningful behavioral disclosure that the annotations alone do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual purpose/summary is buried at the end, after compute-mode plumbing, a page URL, an FV-status URL, and a long output field list. The front-loaded material is the least useful for tool selection; it is informative but poorly ordered and somewhat padded.

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?

Given 100% schema coverage, annotations, no output schema, and nested params, the description supplies the regulatory basis, the metric outputs, data-handling policy, and upstream dependency — enough for correct invocation. Only the absence of sibling-selection guidance keeps it from a 5.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and the policy_parameters sub-fields. The description mostly restates the compute-mode behavior already in the schema and adds only lightly (upstream artifact source), 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 ('Compute Disparate Impact Metrics') and the summary specifies three concrete metrics (4/5ths rule, z-statistic, standardized mean difference) with the regulatory basis (EEOC 29 CFR §1607.4(D)). An agent can tell exactly what this produces without opening 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides some context: inputs must be synthetic/anonymised, and it consumes upstream artifacts from art-230-compute-hmda-rate-spread. But it never says when to choose this tool over near siblings (compute_hmda_rate_spread, test_bifsg_bias_thresholds, compute_cfpb_1071_coverage), leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_dora_roi_gleif_preflight_packDora Roi Gleif Preflight PackA
Read-onlyIdempotent
Inspect

Dora Roi Gleif Preflight Pack: OpenChainGraph compute node (compliance_control). 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-466-dora-roi-builder, art-599-gleif-snapshot-digest, art-600-lei-relationship-consistency. Open at: https://ainumbers.co/chaingraph/art-601-dora-roi-gleif-preflight-pack.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: DORA RoI GLEIF pre-submission evidence pack, terminal node of chain dora-roi-gleif-preflight-pack (art-466 -> art-599 x N -> art-600 x N -> art-601). Outputs: attestation, counterparties, counterparty_count, dora_roi_artifact_ref, error, rollup, scope_note. Output schema: call describe_tool("compute_dora_roi_gleif_preflight_pack").

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: attestation, counterparties, dora_roi_artifact. Unknown keys are refused.

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, but the description adds substantive context beyond them: transient processing with no storage/logging/retention, the requirement to use synthetic or anonymised inputs only, the compute-mode delegation behavior (server vs browser for gpu:true), and that an AP2 artifact with execution_hash is exported for provenance. These are real behavioral traits an agent needs.

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?

The definition is one dense run-on block that restates the title, embeds a raw URL and a 64-hex FV-status file path, and repeats the compute-mode explanation that also lives in the schema. Only the final 'Summary' sentence and the consumes-list earn their place; the structure buries the useful routing information at the end.

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?

For a nested-parameter compute node with no output schema, the description supplies the output field names (attestation, counterparties, counterparty_count, dora_roi_artifact_ref, error, rollup, scope_note), the chain provenance, the compute modes, and the data-handling policy. A pointer to describe_tool covers the return-schema gap, so only minor details are 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 the nested policy_parameters object documents its required keys, so the schema carries the parameter burden. The description restates the compute:'auto'/'browser' behavior and lists output fields but adds no new parameter semantics such as ordering constraints for parent_hashes/parent_tool_ids or format expectations for parent_hashes.

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 description identifies the tool as the DORA RoI GLEIF pre-submission evidence pack and terminal node of chain dora-roi-gleif-preflight-pack (art-466 -> art-599 x N -> art-600 x N -> art-601), which is specific enough for an agent to distinguish it from siblings like build_dora_roi_register or digest_gleif_snapshot. However, the actual verb is only implicit ('compute node') and the first several sentences are platform boilerplate before the real purpose appears in the final 'Summary'.

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?

It names the upstream artifacts it consumes (art-466, art-599 x N, art-600 x N) and identifies itself as the terminal node, which implies when in a chain it should be invoked. But there is no explicit when-to-use/when-not guidance, no mention of alternatives among the many sibling tools, and no statement of prerequisites for the upstream artifacts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_dscrDSCR & Interest Coverage Ratio CalculatorB
Read-onlyIdempotent
Inspect

DSCR & Interest Coverage Ratio Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-363-compute-dscr.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: Debt Service Coverage Ratio and Interest Coverage Ratio suite: Basic/Cash/FCF DSCR, Fixed Charge Coverage Ratio (FCCR), EBIT- and EBITDA-basis ICR, and Net/Gross Leverage, evaluated against a published lender threshold matrix (investment grade, leveraged loan, CRE, infrastructure, SME/mid-market). Outputs: basic_dscr, cash_dscr, fccr, fcf_dscr, gross_leverage, icr_ebit_basis, icr_ebitda_basis, lender_assessment, net_leverage, note, regulatory_basis, total_debt_service_musd. Output schema: call describe_tool("compute_dscr").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, yet the description adds real value beyond them: determinism, transient processing with no storage/logging/retention, and export of an AP2 artifact carrying execution_hash for chain provenance. That provenance side effect is material and is invisible in the annotations. Minor deduction for the FV-status receipt paragraph, which adds bulk but little operational guidance.

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?

The genuinely useful purpose statement is buried after several paragraphs of chain-platform boilerplate, a URL, and a long hash path with an offline-verification caveat. The compute-mode paragraph duplicates the schema's own parameter description nearly word for word. Front-loading is poor: an agent scanning this must read past irrelevant provenance text to learn what the tool computes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates all twelve return fields, which is the right compensation. It also covers privacy and artifact export. However, it never says what happens when policy_parameters is empty (all parameters are optional) or whether partial input yields null ratios versus an error, which is the main practical risk for a zero-required-parameter compute tool.

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 reported at 100%, so baseline is 3, and the description largely restates the compute-mode semantics already spelled out verbatim in the schema. It adds nothing about the twelve nested policy_parameters — no units (the output names hint '_musd', i.e. millions USD), no indication of which inputs feed which ratio, and no note that all four top-level parameters are optional. Nested numerics remain semantically thin in both places.

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 'Summary' sentence names the exact resource and scope: Basic/Cash/FCF DSCR, FCCR, EBIT- and EBITDA-basis ICR, and net/gross leverage against a lender threshold matrix segmented by investment grade, leveraged loan, CRE, infrastructure, and SME. That is a specific verb+resource that an agent can act on, and the enumerated output list reinforces it. It stops short of naming a sibling it is not (e.g. compute_ltv_ratios or compute_dti_ratios), so it does not reach a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to reach for this tool versus alternatives — not versus compute_dti_ratios/compute_ltv_ratios, nor versus the diagnostic tools like run_credit_readiness. The only directive given ('Use synthetic or anonymised inputs only') is an input-handling rule, not tool selection guidance. The compute-mode paragraph explains parameter choices, not when to invoke the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_dti_ratiosDTI Ratio CalculatorB
Read-onlyIdempotent
Inspect

DTI Ratio Calculator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-222-agency-eligibility-matrix. Open at: https://ainumbers.co/chaingraph/art-335-compute-dti-ratios.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: Front-end (housing) and back-end (total) debt-to-income ratios per Fannie Mae Selling Guide B3-6-02 and Freddie Mac Single-Family Seller/Servicer Guide 5401.2. Outputs: back_end_dti_pct, dti_tier, front_end_dti_pct, gross_monthly_income, housing_payment_pitia, max_dti_pct, note, other_monthly_debts, regulatory_basis, total_monthly_debt, underwriting_type, within_max. Output schema: call describe_tool("compute_dti_ratios").

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: underwriting_type. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behaviour, and the description still adds genuinely new context: deterministic computation, server-side vs browser delegation semantics, transient processing with no storage or logging, and emission of an AP2 artifact carrying execution_hash. These are real behavioural traits beyond the annotation set, though the FV-status hash snapshot and URL are operational noise rather than decision-relevant disclosure.

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?

The most useful sentence — the regulatory basis and the ratios computed — appears near the end, after repeated platform boilerplate ('OpenChainGraph compute node', 'Deterministic OpenChainGraph compute node'), a documentation URL, and a long verification hash. Front-loading is poor and multiple clauses are redundant with each other and with the schema.

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?

For a computation node with no output schema, the description lists all returned fields (back_end_dti_pct, dti_tier, front_end_dti_pct, within_max, regulatory_basis, etc.) and names the downstream consumer, which is enough for an agent to call and interpret it. The only gap is that the policy_parameters inputs required to get a meaningful result are not characterised.

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 compute, parent_hashes, parent_tool_ids and policy_parameters are all already documented structurally. The description restates the compute:'auto'/'browser'/gpu:true behaviour that the schema already covers and never explains underwriting_type or the required debt/income fields it lists only as outputs.

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 description states a specific verb and resource: computing front-end (housing) and back-end (total) debt-to-income ratios per Fannie Mae B3-6-02 and Freddie Mac 5401.2, which distinguishes it from siblings like compute_ltv_ratios or compute_dscr. The actual purpose is buried behind several sentences of platform boilerplate, so clarity is achieved but delayed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit statement of when to use this tool versus alternatives. It notes 'Output feeds: art-222-agency-eligibility-matrix' and that inputs should be synthetic or anonymised, but never names an alternative tool or a condition that would select a different DTI/loan-eligibility sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_dv01Bond DV01 (Price Value of a Basis Point)A
Read-onlyIdempotent
Inspect

Bond DV01 (Price Value of a Basis Point): OpenChainGraph compute node (analytics_mandate). 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-329-tvm-bond-duration. Open at: https://ainumbers.co/chaingraph/art-330-tvm-dv01.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: DV01 / price value of a basis point for a standard even-period bullet bond, computed by full central-difference reprice at yield plus and minus a declared basis-point shock, not the linear modified-duration approximation. Outputs: coupon_rate_pct, dv01, face_value, method, note, periods_per_year, price, price_down_shock, price_up_shock, regulatory_basis, shock_size_bp, years_to_maturity, ytm_pct. Output schema: call describe_tool("compute_dv01").

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". Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, the description discloses compute modes and server/browser delegation behavior, transient processing with no storage or logging, synthetic-input guidance, AP2 artifact export with execution_hash, and upstream artifact consumption. These are meaningful operational details for a compute tool that annotations alone do not convey.

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?

The description is heavily front-loaded with generic OpenChainGraph boilerplate, compute-mode text, privacy language, provenance details, and a URL before the actual purpose appears near the end. The key summary sentence is useful but buried, reducing scanability.

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?

For a compute node with no output schema, the description provides a useful output list, method summary, upstream dependency, and execution/privacy context. It is mostly complete, though it could more explicitly route users versus related bond analytics tools.

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 already high, so the baseline is 3. The description adds some meaning by explaining the central-difference basis-point shock and listing outputs, but it does not systematically explain all nested policy parameters or their units.

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 description clearly identifies the tool as computing DV01 / price value of a basis point for a standard even-period bullet bond using central-difference reprice. The method wording distinguishes it from the linear modified-duration approximation, though it does not explicitly name a sibling tool such as compute_bond_duration.

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 implied by the stated scope: DV01 for a standard even-period bullet bond, computed after an upstream duration artifact. There is no explicit when-to-use / when-not-to-use guidance or direct comparison with alternative bond analytics tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_eba_im_model_validation_trackerEBA IM-Model Validation TrackerC
Read-onlyIdempotent
Inspect

EBA IM-Model Validation Tracker: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/tools/674-eba-im-model-validation-tracker.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations: it discloses transient, non-retained input handling, the server-vs-browser delegation split for gpu:false vs gpu:true nodes, and that an AP2 artifact with execution_hash is exported for chain provenance. The FV-status receipt note adds verifiability context, though it is tangential to invocation.

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?

The front-loaded content is infrastructure boilerplate rather than the tool's purpose, and the closing FV-status paragraph is a long, low-value sentence about offline receipt verification. Substantial text is spent on generic compute-node policy that applies to every sibling in this family.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool whose core input is a free-form nested policy_parameters object with no properties enumerated and no output schema, the description never explains what fields the decision function expects or what the result looks like. An agent can construct compute and parent hashes but cannot meaningfully populate the decision inputs.

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%, so compute, parent_hashes, and parent_tool_ids are already documented; the description only adds the chaining/provenance framing for parent hashes. Critically, policy_parameters — the actual decision inputs — are left opaque ('See the tool's manifest for field names'), which the description does nothing to remedy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description essentially restates the name and title ('EBA IM-Model Validation Tracker: OpenChainGraph compute node (compliance_mandate)') without saying what is actually computed — no verb describing the validation-tracking decision function. It never distinguishes this from close siblings such as assess_model_validation_status, run_model_test_battery, or compare_model_outcome_analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance offered is about execution mode (compute:'auto' vs 'browser') and data hygiene ('Use synthetic or anonymised inputs only'). There is no statement of when an agent should pick this tool over the many model-risk siblings, and no prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_education_funding_gap_calculatorEducation Funding Gap CalculatorC
Read-onlyIdempotent
Inspect

Education Funding Gap Calculator: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/688-education-funding-gap-calculator.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.

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". See the tool's manifest for field names.

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description usefully adds that processing is transient with no storage or logging, recommends synthetic or anonymised inputs, and says it exports an AP2 artifact with execution_hash. However, these are largely generic platform traits rather than tool-specific behavioral details such as result format or calculation assumptions.

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?

The description is bloated with repeated generic phrases, a long URL, and an FV-status hash that do not help an agent decide how to invoke the calculator. It is not front-loaded with the actual calculation semantics, and several sentences duplicate platform information rather than earning their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The input schema exposes a nested policy_parameters object without field names, and the description does not compensate by explaining what inputs the funding-gap calculation needs. With no output schema and no domain-specific explanation of the result or assumptions, the definition is incomplete for correct invocation despite rich schema coverage on the wrapper fields.

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 baseline is 3. The description reiterates the compute-mode behavior already documented in the schema and mentions execution_hash provenance, but it adds no practical meaning for parent_hashes, parent_tool_ids, or especially policy_parameters, whose required field names remain opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the tool name as an 'Education Funding Gap Calculator' and adds only generic platform labels like 'OpenChainGraph compute node (compliance_control)' and 'deterministic compute node.' It never states what formula, inputs, or outputs define the education funding gap, so an agent cannot distinguish its actual function from similarly named compute tools beyond the title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The text explains compute execution modes (auto/server/browser) and delegation behavior, but gives no guidance on when to select this calculator versus any of the many sibling compute or funding-related tools. There are no exclusions, prerequisites, or alternative routing instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_escrow_analysisRESPA Aggregate Escrow AnalysisB
Read-onlyIdempotent
Inspect

RESPA Aggregate Escrow Analysis: OpenChainGraph compute node (compliance_mandate). 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-235-test-hpml-escrow. Open at: https://ainumbers.co/chaingraph/art-342-compute-escrow-analysis.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: 12 CFR 1024.17 (Reg X) aggregate escrow accounting method: builds a 12-month trial running balance from a starting balance, a monthly escrow deposit, and the projected annual disbursement schedule, compares the low point to the 1/6-of-annual-disbursements cushion target, and classifies the accoun... Outputs: account_status, cushion_fraction_used, cushion_target, deficiency_amount, low_point_balance, low_point_month, monthly_deficiency_spread_amount, monthly_escrow_payment, monthly_shortage_spread_amount, new_monthly_escrow_payment, note, regulatory_basis, shortage_amount, shortage_spread_required, spread_vs_target, starting_balance, surplus_amount, surplus_refund_required, total_annual_disbursements, trial_balances. Output schema: call describe_tool("compute_escrow_analysis").

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: cushion_fraction, disbursements. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, and the description meaningfully adds beyond them: inputs are processed transiently and not stored/logged, the node is deterministic, computation happens server-side on Cloudflare Workers for gpu:false kernels, and an AP2 artifact with an execution_hash is exported for provenance. These are real operational facts an agent could not infer from the annotations. It stops short of describing failure modes or what a caller receives when the browser delegation path is taken.

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?

Sizable waste: a 64-character FV-status hash URL, a pointer to describe_tool for a schema already inlined, a restatement of the compute-mode logic that duplicates the schema description verbatim, and a summary sentence that is cut off mid-word. The single most useful content (the Reg X escrow computation) arrives after several paragraphs of provenance boilerplate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description only dumps 21 bare output field names with no explanation, plus a truncated purpose summary that leaves the classification logic unfinished. For a nested-input deterministic computation with an untyped disbursements array and an unconstrained policy_parameters object, key details an agent needs to call it correctly are 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?

Schema coverage is 100%, so baseline would be 3, but the description earns more: it explains that starting_balance, monthly_escrow_payment and the disbursement schedule feed a running balance and that the cushion target is 1/6 of annual disbursements, which gives semantics to the policy_parameters object. Gaps remain: the disbursements array is untyped and undocumented in the schema, and the description never explains its expected structure (amounts, dates).

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 description names a concrete computation: it builds a 12-month trial running balance from a starting balance, monthly escrow deposit and annual disbursement schedule, compares the low point to the 1/6 cushion target, and classifies the account. That is a specific verb+resource that an agent can distinguish from siblings. However, the purpose sentence is buried in boilerplate and truncated mid-word ("classifies the accoun..."), and no sibling (e.g. test_hpml_escrow, audit_borrower_escrow_stmt) is named for contrast.

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?

"Consumes upstream artifacts from: art-235-test-hpml-escrow" implies a workflow position, and "Use synthetic or anonymised inputs only" is a stated constraint. But there is no explicit statement of when to call this versus the escrow-related siblings, nor any preconditions or exclusions beyond the input caution.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_esrp_exposureACA Employer Shared Responsibility Payment Exposure CalculatorA
Read-onlyIdempotent
Inspect

ACA Employer Shared Responsibility Payment Exposure Calculator: OpenChainGraph compute node (compliance_mandate). 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-298-aca-affordability-safe-harbor. Output feeds: art-300-aca-226j-response-evidence-pack. Open at: https://ainumbers.co/chaingraph/art-299-aca-esrp-exposure.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: Compute proposed IRC 4980H(a) ("no offer to 95%") and 4980H(b) ("unaffordable / not minimum value") Employer Shared Responsibility Payment exposure from supplied full-time-employee counts, minimum-essential-coverage offer counts, and PTC-triggering employee counts, using the version-pinned 2026 p... Outputs: a_applicable, a_exposure_annual, a_monthly_per_employee, b_applicable, b_exposure_annual, b_monthly_per_employee, controlling_exposure_annual, controlling_penalty, coverage_offer_rate, error, offer_rate_threshold, tax_year. Output schema: call describe_tool("compute_esrp_exposure").

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: fulltime_count, offered_mec_count, ptc_employee_count, tax_year. Unknown keys are refused.

TDQS

A3.5/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), so credit goes to what the description adds: the compute:"auto"/"server"/"browser" server-vs-browser-delegation behavior, that inputs are processed transiently and not retained, and that an AP2 artifact with execution_hash is exported for provenance chaining. That is genuine behavioral context an agent cannot get from the annotations. It does not discuss failure behavior or limits, keeping it below 5.

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?

The core purpose is front-loaded in the first clause, but the rest is boilerplate: repeated "OpenChainGraph compute node" phrasing, an inline FV-status file hash, a documentation URL, and a sentence cut off mid-word. Much of the text does not help an agent decide to call the tool or how to call it.

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?

With no output schema, the description compensates by enumerating all output fields (a_applicable, a_exposure_annual, controlling_penalty, coverage_offer_rate, tax_year, etc.), plus the upstream/downstream artifacts and compute-mode semantics. An agent has enough to call it correctly, though the truncated parameter summary and absence of validation/error behavior leave minor gaps.

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 baseline is 3. The description does restate the required policy_parameters keys (fulltime_count, offered_mec_count, ptc_employee_count, tax_year) and repeats the compute-mode semantics, but none of that adds meaning beyond what the schema already documents.

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 description names a specific computation: proposed IRC 4980H(a) ("no offer to 95%") and 4980H(b) ("unaffordable / not minimum value") ESRP exposure from full-time-employee, MEC-offer, and PTC-triggering counts. That is far more specific than the title alone. It does not distinguish itself from the sibling compute_aca_affordability_safe_harbor, and the Summary sentence is truncated mid-phrase ("version-pinned 2026 p..."), leaving the purpose slightly incomplete.

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?

There is implied usage: it consumes art-298-aca-affordability-safe-harbor and feeds art-300-aca-226j-response-evidence-pack, which tells the agent where it sits in the chain. It also states inputs must be synthetic or anonymised. But it never says when to pick this over the sibling affordability-safe-harbor tool or what prerequisites must hold, so guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_experience_modNCCI Experience Modification CalculatorA
Read-onlyIdempotent
Inspect

NCCI Experience Modification Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-346-compute-experience-mod.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: Workers'-compensation experience rating modification (NCCI Experience Rating Plan Manual published national formula): per-claim primary/excess loss split at the state split point, then Mod = (Ap + W×Ae + (1-W)×Ee + B) / (Ep + B). Outputs: actual_excess_losses, actual_primary_losses, actual_total_losses, ballast_value, claim_count, expected_excess_losses, expected_losses, expected_primary_losses, mod, note, rating_class, regulatory_basis, split_point, weighting_value. Output schema: call describe_tool("compute_experience_mod").

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: claims. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, idempotent, and closed-world behavior. The description adds substantial context beyond that: server-side vs browser execution paths, transient data handling with no retention, AP2 artifact generation with execution_hash, and offline-verifiable FV-status receipts. These details materially inform safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is informative but front-loaded with repetitive boilerplate ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node...') before reaching the actual purpose. While the later summary and output list are useful, several sentences repeat compute-mode behavior that is also in the schema.

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?

For a complex 4-parameter computation tool with no output schema, the description includes the full formula, enumerated outputs, provenance behavior, and privacy guarantees. It is nearly complete, though it lacks explicit guidance on when to select this tool over others in a large sibling set.

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 each parameter including compute modes and policy_parameters fields. The description reinforces the formula inputs and lists outputs, but does not add syntax, ranges, or constraints beyond what the schema provides. Baseline 3 is appropriate.

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 description clearly states a specific computation — NCCI experience modification using the published national formula — and lists the mathematical components. It distinguishes itself from generic sibling tools by naming the regulatory basis and workers'-compensation domain, though it does not explicitly contrast with any particular alternative tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the 'compute' mode behavior (auto/server/browser, gpu:true delegation) and privacy constraints ('Use synthetic or anonymised inputs only'), but it never says when to use this tool versus alternatives or what prerequisites are needed. The guidance is about parameter mechanics, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_fdic_assessment_rateFDIC Deposit-Insurance Assessment Rate CalculatorB
Read-onlyIdempotent
Inspect

FDIC Deposit-Insurance Assessment Rate Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-431-fdic-assessment-rate-calculator.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: FDIC deposit-insurance assessment rate calculator (12 CFR 327): looks up the base assessment rate for a supplied composite CAMELS + financial-ratio score against a caller-supplied rate schedule, then applies the unsecured-debt and brokered-deposit adjustments and floors/caps the result to a calle... Outputs: assessment_base_musd, base_rate_bp, brokered_deposit_adjustment_bp, estimated_quarterly_assessment_musd, note, npr_banner, rate_cap_bp, rate_floor_bp, rate_floor_or_cap_applied, rate_schedule_version, total_rate_bp, total_score, unsecured_debt_adjustment_bp. Output schema: call describe_tool("compute_fdic_assessment_rate").

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: rate_brackets, rate_cap_bp, rate_schedule_version. Unknown keys are refused.

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, but the description adds genuinely useful behavioral facts: deterministic kernel evaluation, data processed transiently and not stored or logged, synthetic-inputs-only requirement, and an AP2 artifact with execution_hash emitted for provenance. This is meaningful context beyond annotations, though much of it is shared platform boilerplate rather than tool-specific.

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?

The purpose is not front-loaded: roughly two-thirds of the text is generic OpenChainGraph compute-node explanation, FV-status receipt prose, and a URL before the task-relevant summary. The summary and outputs list are also truncated ("calle..."), so length is spent on boilerplate while the useful content is cut.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does list all 14 output fields, which helps. However the core explanation is truncated mid-sentence, and there is no guidance on how the caller-supplied schedule interacts with the required nested parameters — an agent must lean on the schema and the truncated summary.

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 schema leaves nested policy_parameters (rate_brackets, rate_schedule_version) untyped and undescribed; the description compensates by explaining that total_score is a composite CAMELS + financial-ratio score, that rate_brackets is a caller-supplied rate schedule, and what the two adjustments do. That is real semantic value the schema does not supply.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The actual purpose only appears in a mid-description "Summary:" that states a specific verb chain (look up base assessment rate from CAMELS/ratio score, apply unsecured-debt and brokered-deposit adjustments, floor/cap) — good specificity, but it is buried behind platform boilerplate and truncated mid-sentence ("to a calle..."). An agent can work out it is an FDIC 12 CFR 327 rate calculator, but only after wading through several sentences of generic compute-node text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus alternatives, no prerequisites, and no exclusions — despite many sibling tools in the same regulatory calculation family. The only routing guidance concerns compute mode (auto/server/browser), not task selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_federal_withholdingFederal Withholding Calculator (Percentage Method)A
Read-onlyIdempotent
Inspect

Federal Withholding Calculator (Percentage Method): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-339-compute-gross-to-net. Open at: https://ainumbers.co/chaingraph/art-338-compute-federal-withholding.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: Federal income tax withholding via the IRS Publication 15-T percentage method, Worksheet 1A, for a 2020-or-later Form W-4. Outputs: adjusted_annual_wage_amount, bracket_at_least, bracket_rate, constants_version, error, federal_withholding_per_period, filing_status, note, pay_frequency, periods_per_year, regulatory_basis, step3_credit_this_period, step4c_extra_withholding_per_period, supported_tax_years, tax_year, tentative_annual_withholding, tentative_withholding_this_period. Output schema: call describe_tool("compute_federal_withholding").

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: filing_status, pay_frequency, tax_year. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses that execution is deterministic, that inputs are processed transiently and not stored or logged, that outputs carry an AP2 artifact with execution_hash for provenance, and that the FV-status receipt is an offline-verifiable snapshot. The only gap is that the server-vs-browser delegation semantics are largely restated from the schema rather than elaborated.

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?

The real purpose is buried after a block of generic OpenChainGraph boilerplate, and 'OpenChainGraph compute node' is repeated twice in consecutive sentences. The compute-mode paragraph largely duplicates the schema's own description of the same enum, so a significant fraction of the text does not earn 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?

For a read-only calculation node with full annotations and 100% schema coverage, the description supplies the regulatory basis, the required input set, the enumerated return fields, and provenance/data-handling behavior. With no output schema present, listing the outputs is the right compensation; only edge-case behavior (e.g. what happens on unsupported tax_year) is unaddressed.

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%, so the compute mode, chaining hashes, and required policy_parameters are already documented in the schema. The description reinforces the compute-mode default behavior and lists the emitted output fields, but adds no new meaning about the domain parameters (filing_status, pay_frequency, tax_year) beyond what the schema already says.

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 with the exact methodology: federal income tax withholding via the IRS Publication 15-T percentage method, Worksheet 1A, for a 2020-or-later Form W-4. An agent can distinguish this from the neighboring compute_gross_to_net, which is named as the downstream consumer rather than a substitute.

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?

It states the downstream chain target ('Output feeds: art-339-compute-gross-to-net') and that only synthetic/anonymised inputs may be used, which implies the appropriate context. However there is no explicit when-to-use vs when-not guidance and no naming of a sibling alternative (e.g. a state withholding or gross-to-net calculator) for the agent to route between.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_fha_mip_eligibilityFHA MIP Eligibility CalculatorB
Read-onlyIdempotent
Inspect

FHA MIP Eligibility Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-224-fha-mip-eligibility.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: FHA mortgage insurance premium (MIP) eligibility and cost calculator per HUD Handbook 4000.1. Outputs: annual_mip, dti, fha_eligible, fico_eligible, ltv_eligible, max_ltv_pct, note, pii_note, regulatory_basis, table_source, table_version, ufmip. Output schema: call describe_tool("compute_fha_mip_eligibility").

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: loan_purpose. Unknown keys are refused.

TDQS

B3.2/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, yet the description still adds real behavioral context: deterministic execution, transient processing with no storage or logging, and export of an AP2 artifact with execution_hash for provenance. The compute-mode explanation largely duplicates the schema's compute property description, which dilutes the value slightly.

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?

The actual purpose appears only after a long preamble of OpenChainGraph compute-mode and privacy boilerplate, followed by a full FV-status receipt URL and hash. The outputs are effectively listed twice ('Outputs:' enumeration and then a pointer to describe_tool), and much of the text is template text identical across this tool family rather than tool-specific.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deterministic calculator with no output schema, the description does name the result fields and the regulatory source, which is enough to call it. But with a nested object of seven policy parameters whose required key is untyped, plus absent comparison guidance against sibling eligibility calculators, an agent still lacks what it needs to choose and populate the tool confidently.

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 nested policy_parameters fields and compute/parent_hashes semantics are already documented in the schema; the description adds nothing beyond repeating the auto/browser compute behavior. It notably does not clarify loan_purpose (required, untyped) or the interaction between parent_hashes and parent_tool_ids, which the schema only lightly covers.

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 'Summary' sentence states a specific verb and resource — FHA MIP eligibility and cost calculation per HUD Handbook 4000.1 — and the output names (annual_mip, ufmip, fha_eligible, ltv_eligible) confirm scope. However, the purpose is buried after several sentences of chain-compute boilerplate, and nothing distinguishes it from closely related siblings such as compute_ltv_ratios, compute_dti_ratios, or check_agency_eligibility_matrix.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. The only routing information given ('call describe_tool for the output schema') tells the agent how to inspect the tool, not when to select it over the many adjacent mortgage/DTI/LTV calculators in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_flsa_regular_rateFLSA Regular Rate & Overtime CalculatorB
Read-onlyIdempotent
Inspect

FLSA Regular Rate & Overtime Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-340-compute-flsa-regular-rate.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: FLSA regular rate of pay and overtime premium per 29 CFR 778, Subpart C, including nondiscretionary-bonus reallocation into the regular rate (778.110, 778.208-778.209) and the 0.5x overtime premium for hours over 40 in the workweek (778.107). Outputs: constants_version, discretionary_bonus_excluded, hourly_rate, hours_worked_week, nondiscretionary_bonus_amount, note, other_includable_pay, overtime_hours, overtime_premium_pay, regular_rate, regulatory_basis, straight_time_pay, total_pay_due, total_remuneration. Output schema: call describe_tool("compute_flsa_regular_rate").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, but the description adds meaningful context: server-side vs browser execution, transient non-retention of inputs, deterministic behavior, and AP2 artifact provenance with execution_hash. These details go beyond the annotations and help an agent understand operational side effects.

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?

The description is bloated with boilerplate about OpenChainGraph compute nodes, repeated compute-mode language, a URL, an FV-status hash, and provenance details before reaching the actual FLSA summary. The useful calculation summary is buried near the end, making the definition unnecessarily hard to scan.

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?

No output schema exists, so the description compensates by listing the key output fields, regulatory basis, and AP2 artifact behavior. It is mostly complete for a calculation tool, though it could better explain how policy_parameters map to the listed outputs.

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 reportedly 100%, so the schema already documents the top-level parameters and nested policy fields. The description mentions the regulatory concepts behind some inputs, such as nondiscretionary bonuses and overtime hours, but it does not explain each policy parameter’s meaning or expected format in detail, so baseline 3 is appropriate.

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 description clearly states a specific calculation domain: FLSA regular rate of pay and overtime premium under 29 CFR 778, including nondiscretionary-bonus reallocation and the 0.5x overtime premium. It does not explicitly differentiate this tool from similarly named compute tools, but the legal-domain specificity makes its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute-mode behavior but gives no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or when-not-to-use conditions. The agent must infer usage from the title and summary alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_forecast_accuracy_scoreForecast Accuracy ScorerB
Read-onlyIdempotent
Inspect

Forecast Accuracy Scorer: OpenChainGraph compute node (forecast_accuracy_score). 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. Open at: https://ainumbers.co/chaingraph/art-657-forecast-accuracy-scorer.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: Scores a batch of resolved probabilistic forecasts (a stated probability paired with the realized yes/no outcome) using two textbook proper scoring rules -- the Brier score and the logarithmic score -- plus a Brier Skill Score against a caller-supplied reference forecast. Outputs: accuracy_class, base_rate, brier_reference, brier_score, brier_skill_score, category_breakdown, category_note, disclaimer, log_score, n, reference_probability, scoring_note, warnings. Output schema: call describe_tool("compute_forecast_accuracy_score").

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: forecasts. Unknown keys are refused.

TDQS

B3.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), and the description adds substantive behavior on top: transient processing with no storage/logging/retention, an exported AP2 artifact with execution_hash for chain provenance, and a caveat that the FV-status receipt is a snapshot rather than a subscription. It does not describe error behavior or refusal handling beyond "Unknown keys are refused."

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?

The core purpose is buried at the very end behind large blocks of template boilerplate: a repeated 'OpenChainGraph compute node' sentence, compute-binding text that duplicates the schema's own compute enum description, a full 64-character FV-status hash and URL, and a raw dump of output field names. Roughly half the text does not earn its place for tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The scoring semantics, output field list, retention policy, and provenance behavior are all covered, and no output schema exists to offload returns. However, for a tool whose only required input is a forecasts array typed as a bare array with no item schema, the description still leaves the element contract underspecified, which is the one thing an agent most needs before calling.

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%, so the schema carries most of the load and baseline 3 applies. The description does add meaning for one nested field by identifying the reference forecast as caller-supplied and tying it to the Brier Skill Score, but the shape of policy_parameters.forecasts elements is only hinted at ("a stated probability paired with the realized yes/no outcome"), not specified by field name.

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 Summary sentence states a specific verb and resource: scores a batch of resolved probabilistic forecasts using the Brier score, logarithmic score, and a Brier Skill Score against a caller-supplied reference forecast. It never names or contrasts the nearest siblings (score_cash_forecast_accuracy, analyze_prediction_market, score_fuzzy_match_calibration), so an agent must infer the distinction.

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?

It gives operational guidance (compute:"auto" vs "browser" vs server, gpu:true always delegates) and a data-handling constraint ("Use synthetic or anonymised inputs only"), which are real decisions the caller must make. But it never says when to pick this tool over its forecasting/calibration siblings, nor any when-not conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_fr2052a_inflow_outflow_classificationFR 2052a Inflow/Outflow Bucket ClassifierB
Read-onlyIdempotent
Inspect

FR 2052a Inflow/Outflow Bucket Classifier: OpenChainGraph compute node (regulatory_reporting). 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. Open at: https://ainumbers.co/chaingraph/art-437-fr2052a-inflow-outflow-classifier.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: FR 2052a complex-institution liquidity monitoring filing-layer kernel, scoped to the inflow/outflow section: product/maturity-bucket classification against a caller-supplied Appendix IV-style boundary table (versioned policy input, not hardcoded), intercompany elimination (excluded from external... Outputs: boundary_table_version, elimination_total_musd, form_2052a, note, override_count, override_missing_reason_count, row_count, rows, total_inflow_musd, total_net_musd, total_outflow_musd. Output schema: call describe_tool("compute_fr2052a_inflow_outflow_classification").

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: boundary_table_version, bucket_boundaries, rows. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/idempotentHint already declared, the description still adds real behavioral context: deterministic execution, transient processing with no storage or logging, server-side vs browser-delegation routing, gpu:true forcing delegation, and AP2 artifact export with execution_hash for chain provenance. Nothing here contradicts the annotations. It falls short of 5 because it never says what the caller gets back beyond a bare output-name list.

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?

Structure is poor: it opens with redundant platform boilerplate ('OpenChainGraph compute node' twice), then the purpose, then a raw URL, a full FV-status receipt URL and 64-char hash, and finally a sentence that cuts off with an ellipsis. The single most decision-relevant line is neither front-loaded nor complete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-object, no-output-schema tool it covers input policy semantics, compute routing, privacy posture and an explicit list of returned fields, which is broadly adequate. But the truncated elimination clause leaves a core behavior (how intercompany items are excluded from external totals) unexplained, and the instruction to call describe_tool for the output schema offloads work the description could have done.

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 compute, parent_hashes, parent_tool_ids and the required policy_parameters keys, and the description largely repeats the compute-mode text verbatim. The one genuine addition is framing the boundary table as a 'versioned policy input, not hardcoded', which explains why boundary_table_version matters. 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?

The description does eventually state a specific verb and resource: product/maturity-bucket classification of FR 2052a inflow/outflow items against a caller-supplied Appendix IV-style boundary table, plus intercompany elimination. It even differentiates scope ('scoped to the inflow/outflow section') from the many other FR 2052a / liquidity siblings. It loses a point because the opening sentence is a name/title restatement and the substantive summary is buried and truncated mid-clause ('excluded from external...').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage guidance concerns execution mode ('auto' vs 'browser') and input hygiene ('Use synthetic or anonymised inputs only'). There is no statement of when to pick this tool over the adjacent liquidity/intercompany tools (compute_intercompany_elimination_netting, compute_intraday_liquidity_monitoring, map_call_report_schedule_rc), nor any precondition for supplying a boundary table version.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_fund_expense_ratiosCompute Fund Expense RatiosA
Read-onlyIdempotent
Inspect

Compute Fund Expense Ratios: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-375-compute-fund-expense-ratios.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: Computes a fund's gross and net expense ratios and Total Expense Ratio (TER) from SUPPLIED gross expense components (flat amounts or accruals, using the identical accrual conventions as recompute_fund_nav/FN-1) and average net assets, applying any declared fee waivers/caps strictly in a DECLARED... Outputs: components, fence, fund_id, gross_expense_ratio, net_expense_ratio, not_proven, period_end, period_start, regulatory_framework, rounding, structural_error, total_expense_ratio. Output schema: call describe_tool("compute_fund_expense_ratios").

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: average_net_assets, gross_expense_components, rounding, waivers. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses genuinely useful behavior: deterministic execution, server-side computation on Cloudflare Workers for gpu:false kernels, browser delegation semantics, gpu:true always delegating, transient non-retained input handling, and an exported AP2 artifact with execution_hash for provenance. The computation-mode suffixes are partially redundant with the `compute` schema field, keeping this short of 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is bloated and badly ordered: compute-mode boilerplate, a documentation URL, and an FV-status hash precede the actual purpose, and the summary is cut off mid-sentence ('strictly in a DECLARED...'). Several sentences repeat the same determinism/delegation facts and do not earn their 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?

For a deterministic compute node with no output schema, it names the output fields (gross/net expense ratio, TER, structural_error, not_proven, rounding, fence) and covers execution modes and data-handling posture. The main gap is the truncated waiver/cap specification logic and the unresolved overlap with recompute_fund_fees.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds some meaning by pinning accrual conventions to recompute_fund_nav/FN-1 and restating required keys, but it says nothing about waivers/caps resolution order beyond a truncated phrase, so the baseline 3 holds.

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 summary names a specific verb and resource: computing gross/net expense ratios and TER from supplied expense components and average net assets. However, the actionable purpose is buried after chains of compute-node boilerplate, and it never distinguishes itself from the very close sibling recompute_fund_fees (it only references recompute_fund_nav for accrual conventions).

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?

It implies the tool is a deterministic recompute over supplied inputs and constrains inputs to synthetic/anonymised data, which is useful. But there is no explicit when-to-use versus when-not, and no guidance on choosing this over recompute_fund_fees or recompute_fund_nav, leaving the agent to infer routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_fx_funding_sequencerFX Funding SequencerC
Read-onlyIdempotent
Inspect

FX Funding Sequencer: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-672-fx-funding-sequencer.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.

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". See the tool's manifest for field names.

TDQS

C2.6/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 baseline is lower, and the description still adds real behavior: inputs are processed transiently and not stored or logged, output is an AP2 artifact carrying execution_hash for chain provenance, and gpu:true nodes always delegate to the browser. It does not describe result shape or failure modes, but the data-handling and delegation traits are genuinely beyond 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening repeats the tool name and title instead of front-loading what is computed, and roughly half the text is provenance/offline-verification boilerplate and a long FV-status hash URL. Useful lines (transient processing, artifact export) are buried mid-paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

policy_parameters is a free-form object whose fields are deferred to an external 'manifest', and with no output schema the agent has no idea what the decision function expects or returns. The artifact URL is provided, but for a nested-payload compute node the description leaves the core invocation contract underspecified.

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 enum semantics of 'compute' and the parent_hashes/parent_tool_ids pairing are already fully documented in the schema. The description echoes the compute-mode split but adds no further meaning for parent_hashes, parent_tool_ids, or the unspecified policy_parameters object, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Beyond the name, the description only says it is an 'OpenChainGraph compute node (compliance_control)' — it never states what FX funding sequencing actually computes or returns. The bulk of the text is platform meta-information (compute modes, provenance artifact, FV-status receipt) rather than resource-level purpose, so it largely restates the title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when an agent should call this versus siblings such as compute_fx_netting_positions or compute_perp_funding. The only directive is 'Use synthetic or anonymised inputs only', which is an input constraint, not a use-case selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_fx_netting_positionsMultilateral FX Netting CalculatorB
Read-onlyIdempotent
Inspect

Multilateral FX Netting Calculator: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-368-compute-fx-netting-positions.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: Multilateral FX netting across up to 8 currencies: nets each currency's payable/receivable exposures in FCY, converts to USD at a caller-supplied spot-plus-forward-points effective rate, and returns gross volume, net volume, netting efficiency, estimated settlement savings, and per-currency resid... Outputs: currency_count, estimated_settlement_savings_usd, gross_volume_usd, net_volume_usd, netting_efficiency_pct, positions, regulatory_basis. Output schema: call describe_tool("compute_fx_netting_positions").

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: positions. Unknown keys are refused.

TDQS

B3.2/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 the description earns credit for the extra context it supplies: server-side execution on Cloudflare Workers for gpu:false kernels, transient non-retained processing with a warning to use synthetic/anonymised inputs, and export of an AP2 artifact carrying execution_hash. The FV-status receipt and its offline-verification caveat are unusual but genuinely useful provenance details.

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?

The definition is dominated by generic boilerplate (OpenChainGraph compute binding, Cloudflare Workers delegation, retention policy, a raw URL and a 64-hex FV-status path) that precedes the actual purpose. The final summary is also visibly truncated ('per-currency resid...'), so the most useful sentence is both late and incomplete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does list the output fields (gross/net volume, netting efficiency, settlement savings, positions, regulatory_basis), which is helpful. But the nested `positions` object is left completely unspecified — no item shape, currencies, or sign conventions — which is a real gap for the tool's core input.

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 the `compute` enum, parent_hashes/parent_tool_ids ordering rule, and 'positions required, unknown keys refused' constraint are all documented in the schema itself. The description adds no parameter-level detail beyond that baseline, and notably does not describe the shape of entries inside the `positions` array.

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 'Summary' sentence gives a specific verb and resource (netting FX payable/receivable exposures across up to 8 currencies, converting to USD at caller-supplied effective rates) and lists the returned metrics. However, the purpose only appears after several sentences of generic compute-node boilerplate, and it never distinguishes itself from near-identical siblings like compute_multilateral_netting, compute_gross_to_net, or compute_intercompany_elimination_netting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage guidance is about compute mode (auto/server/browser), which merely restates the schema's `compute` enum. There is no statement of when to reach for this tool versus the many other netting tools in the sibling list, and no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_globe_jurisdictional_etrGloBE Jurisdictional ETR CalculatorA
Read-onlyIdempotent
Inspect

GloBE Jurisdictional ETR Calculator: OpenChainGraph compute node (compliance_control). 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. Output feeds: art-455-globe-sbie-topup. Open at: https://ainumbers.co/chaingraph/art-454-globe-jurisdictional-etr.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: Computes a jurisdiction's OECD Pillar Two (GloBE) effective tax rate from caller-declared constituent-entity financial data: sums entity-level GloBE income/loss to a jurisdictional net (Art 3.1), sums entity-level adjusted covered taxes (Art 4), and divides to get the ETR. Outputs: adjusted_covered_taxes, declared_elections, entities, entity_count, etr, jurisdiction_name, jurisdictional_globe_income, minimum_rate, net_globe_income_or_loss, no_etr_computed, top_up_tax_amount, top_up_tax_percentage. Output schema: call describe_tool("compute_globe_jurisdictional_etr").

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: aggregate_deferred_tax_adjustment, de_minimis_election, entities, jurisdiction_name, minimum_rate, stock_based_comp_election. Unknown keys are refused.

TDQS

A3.6/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, non-open-world), so credit goes for what the description adds: server-vs-browser kernel execution semantics, the fact that inputs are processed transiently and never stored, and that an AP2 artifact with execution_hash is exported. These are genuinely decision-relevant traits an agent cannot infer from the annotation block. Minor deduction because the compute-mode explanation largely restates the "compute" parameter's schema description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The most important content — the actual ETR computation — is buried after boilerplate about compute binding, privacy, artifact export, and an FV-status URL, and the opening two sentences redundantly both say "OpenChainGraph compute node." The final sentence pointing to describe_tool is useful, but the ordering works against fast scanning for a large toolset.

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?

For a read-only deterministic compute node with no output schema, the description is unusually complete: it enumerates the returned fields (etr, top_up_tax_amount, no_etr_computed, etc.), states privacy guarantees, and points to describe_tool for the full schema. The remaining gap is that the entity-level input structure is never explained, which matters for a nested-array parameter the agent must construct.

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 compute, parent_hashes, parent_tool_ids, and the required policy_parameters keys, making 3 the baseline. The description's only added parameter meaning is framing the inputs as "caller-declared constituent-entity financial data" (Art 3.1/Art 4); it says nothing about the shape of the nested entities array, whose item schema is bare.

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 description names a specific verb and resource with the governing rule set: it "computes a jurisdiction's OECD Pillar Two (GloBE) effective tax rate" by summing entity-level GloBE income (Art 3.1) and adjusted covered taxes (Art 4) and dividing. That is far more specific than the title. It does not, however, explicitly distinguish itself from the nearby siblings compute_globe_topup_tax or compute_globe_sbie_topup; the only routing hint is the passive "Output feeds: art-455-globe-sbie-topup."

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 guidance is implied rather than stated: the presence of minimum_rate, de_minimis_election, and stock_based_comp_election parameters signals this is the ETR stage of a GloBE pipeline, and "Output feeds: art-455-globe-sbie-topup" hints at downstream chaining. There is no explicit "use this instead of X when Y" or statement of prerequisites (e.g. whether safe-harbour or de minimis tests must be run first via evaluate_globe_de_minimis_exclusion).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_globe_sbie_topupGloBE SBIE & Top-up Tax CalculatorA
Read-onlyIdempotent
Inspect

GloBE SBIE & Top-up Tax Calculator: OpenChainGraph compute node (compliance_control). 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-454-globe-jurisdictional-etr. Open at: https://ainumbers.co/chaingraph/art-455-globe-sbie-topup.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: Computes the OECD Pillar Two substance-based income exclusion (SBIE) for a jurisdiction from a caller-declared payroll-cost figure, tangible-asset carrying value, and a versioned transition-year rate table (payroll % + tangible-asset % looked up by target year, table supplied whole as a policy in... Outputs: excess_profit, globe_income, jurisdictional_top_up, payroll_component, payroll_rate, qdmtt_over_collection, qdmtt_paid, rate_row_found, sbie, tangible_asset_component, tangible_asset_rate, target_year, top_up_tax, top_up_tax_percentage. Output schema: call describe_tool("compute_globe_sbie_topup").

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: globe_income, payroll_costs, policy_rate_table, qdmtt_paid, tangible_asset_carrying_value, target_year, top_up_tax_percentage. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely useful behavior beyond them: compute mode semantics (server vs browser delegation for gpu:true), transient processing with no storage or logging, and an AP2 artifact carrying execution_hash for provenance. Minor deduction for the truncated rate-table sentence and for not explaining failure behavior when rate_row_found is false.

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?

The description is bloated and poorly ordered: the title is repeated, 'Deterministic OpenChainGraph compute node' appears twice, an FV-status hash and URL are pasted inline, and the core computation sentence is buried and even truncated mid-clause ('supplied whole as a policy in...'). The trailing list of outputs is useful, but the payload is far larger than needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a fairly complex nested-policy compute tool with no output schema, the description does enumerate the output fields and names the upstream artifact and the required policy keys. However, the truncated rate-table explanation and the absence of any note on the qdmtt_over_collection / rate_row_found edge cases leave meaningful gaps.

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 a 3 is the baseline, but the description adds real meaning: it explains that payroll cost and tangible-asset carrying value are caller-declared, that the rate table is a versioned transition-year table of payroll % and tangible-asset % looked up by target year, and that the table is supplied whole as a policy. That clarifies the opaque policy_parameters object more than the schema does.

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 description names a specific verb and resource: computing the OECD Pillar Two substance-based income exclusion (SBIE) and top-up tax for a jurisdiction from payroll cost, tangible-asset carrying value, and a versioned transition-year rate table. That is enough to separate it from generic calculators, but it never contrasts itself with close siblings such as compute_globe_topup_tax, evaluate_globe_safe_harbour_tests, or compute_globe_jurisdictional_etr, so the agent must infer the boundary.

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?

There is no explicit when-to-use or when-not-to-use guidance. The only usage signal is the upstream dependency note ('Consumes upstream artifacts from: art-454-globe-jurisdictional-etr') and the required policy_parameters keys, which imply a GloBE workflow position but leave alternative tools unaddressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_globe_topup_taxGloBE Top-Up Tax & QDMTT Allocation CalculatorB
Read-onlyIdempotent
Inspect

GloBE Top-Up Tax & QDMTT Allocation Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-365-compute-globe-topup-tax.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: OECD Pillar Two GloBE top-up tax calculator: per-jurisdiction substance-based income exclusion (SBIE), effective tax rate (ETR), and top-up-rate/top-up-amount, then allocates the top-up across QDMTT, IIR, and UTPR, applying the OECD Side-by-Side Safe Harbour (approved/declassified 5 January 2026)... Outputs: aggregate_etr, central_record_sbs, constants_version, fy, globe_min_rate, jurisdictions, low_etr_count, note, parent_hq, regulatory_basis, sbs_election, total_iir_collected, total_income, total_qdmtt_collected, total_taxes, total_top_up_tax, total_utpr_collected, us_exempt. Output schema: call describe_tool("compute_globe_topup_tax").

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: central_record_sbs, fy, jurisdictions, parent_hq, sbs_election. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint=false), and the description adds real context on top: deterministic output, transient processing with no storage or logging, gpu:true always delegating to the browser, and an AP2 artifact with execution_hash for chain provenance plus an offline-verifiable FV-status receipt. It is weaker on what the computation assumes or rejects (beyond 'unknown keys are refused').

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?

Front-loading is poor: the title is repeated, 'OpenChainGraph compute node' is stated twice, and the purpose only appears after a compute-mode paragraph, a raw documentation URL and a long opaque FV-status hash. The 19-field outputs list and compute-binding boilerplate crowd out the routing information an agent actually needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the returned fields (aggregate_etr, total_top_up_tax, total_qdmtt_collected, us_exempt, etc.) is genuinely useful, and the describe_tool pointer covers the rest. But for a nested, multi-jurisdiction compliance calculator surrounded by near-duplicate GloBE tools, the definition leaves the agent without the differentiation needed to call it 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 description coverage is 100%, so the compute mode, parent_hashes/parent_tool_ids chaining and policy_parameters are fully documented in the schema itself; baseline 3 applies. The description's mention of per-jurisdiction SBIE/ETR adds mild intuition for what the jurisdictions/central_record_sbs arrays drive, but no syntax, units, currency or shape detail beyond the schema.

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 summary states a specific verb and resource: a per-jurisdiction GloBE top-up tax calculator computing SBIE, ETR and top-up rate/amount, then allocating across QDMTT, IIR and UTPR. That is far more than a restatement of the name. However, it never distinguishes itself from siblings compute_globe_jurisdictional_etr and compute_globe_sbie_topup, which appear to cover overlapping subsets of the same computation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over the many GloBE siblings (compute_globe_jurisdictional_etr, compute_globe_sbie_topup, evaluate_globe_safe_harbour_tests, compose_globe_gir). The only guidance offered is the compute-mode routing paragraph and the 'use synthetic or anonymised inputs' constraint, neither of which helps tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_gl_tieout_recomputeGL Tie-Out RecomputeB
Read-onlyIdempotent
Inspect

GL Tie-Out Recompute: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/665-gl-tieout-recompute.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.

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". See the tool's manifest for field names.

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds useful beyond-annotation facts: deterministic execution, compute 'auto' resolving server-side on Cloudflare Workers vs. browser delegation URLs, transient processing with no storage/logging/retention, and export of an AP2 artifact carrying an execution_hash. These are real behavioral traits an agent would not otherwise know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are redundant ('compute node' stated three times), and the trailing FV-status paragraph embeds a long hash and offline-receipt caveat that is low-value for tool selection. The compute-mode sentence is informative, but the front load is spent on restating the label rather than the operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should describe what the recompute returns; it covers the AP2 artifact and execution_hash but never says what the tie-out result itself (matched/unmatched balances, variances) looks like. For a compliance-control compute node with an opaque nested policy_parameters object, this leaves a meaningful gap.

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%, so the baseline is 3. The description's explanation of compute modes largely duplicates the schema's own enum description, and it adds no meaning for parent_hashes/parent_tool_ids or the opaque policy_parameters object, whose field names are deferred to an external manifest in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name and title identify a 'GL Tie-Out Recompute', but the description mostly labels it an 'OpenChainGraph compute node (compliance_control)' and repeats that phrase rather than stating what is actually recomputed (which ledger balances, which tie-out checks). An agent learns the platform role but not the domain operation, and nothing distinguishes it from the many sibling 'recompute_*' tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage instruction is 'Use synthetic or anonymised inputs only', which constrains inputs rather than selecting this tool over alternatives. There is no indication of when a GL tie-out recompute is appropriate versus related siblings like reconcile_report_to_general_ledger, verify_close_posting_lineage, or compute_interest_accrual_recompute.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_gross_to_netGross-to-Net Payroll Calculator (FICA)A
Read-onlyIdempotent
Inspect

Gross-to-Net Payroll Calculator (FICA): OpenChainGraph compute node (compliance_mandate). 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-338-compute-federal-withholding. Open at: https://ainumbers.co/chaingraph/art-339-compute-gross-to-net.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: Gross-to-net payroll calculation: FICA (Social Security 6.2% up to the OASDI contribution and benefit base for the selected tax year, Medicare 1.45% uncapped, Additional Medicare Tax 0.9% on cumulative wages over $200,000 per IRC 3101(b)(2)), pretax deduction ordering (401(k)/HSA/Section 125 redu... Outputs: additional_medicare_tax, additional_medicare_threshold, additional_medicare_wages_this_period, constants_version, error, federal_withholding_per_period, fica_tax_total, fica_wages_this_period, medicare_tax, net_pay, note, post_tax_other_deductions, pretax_reduces_fica_and_fit, regulatory_basis, social_security_tax, ss_taxable_wages_this_period, ss_wage_base, supported_tax_years, tax_year, ytd_fica_wages_after_period. Output schema: call describe_tool("compute_gross_to_net").

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: tax_year. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the baseline is low. The description still adds genuine context: deterministic kernel execution, transient processing with no storage or logging, and an AP2 artifact export carrying execution_hash for provenance. It does not say what happens on invalid tax_year or unknown keys beyond the schema note, and the artifact export is a mild side effect not reconciled with readOnlyHint, but there is no contradiction.

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?

The opening repeats the title verbatim, then front-loads infrastructure boilerplate (node class, Cloudflare Workers, compute binding) before the actual payroll purpose. A full 64-character FV-status path and URL consume space, and the substantive summary is cut off mid-word ("Section 125 redu..."), so the most decision-relevant content is both late and incomplete.

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?

With no output schema, the description compensates by enumerating all 19 output fields (net_pay, fica_tax_total, ss_wage_base, additional_medicare_threshold, etc.) and pointing to describe_tool for the schema. It also covers chaining inputs via parent_hashes/parent_tool_ids and the provenance artifact. Missing are output units/precision and error/refusal behavior, which matter for a numeric payroll calculation.

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 baseline is 3. The description goes beyond it by supplying the regulatory meaning behind policy_parameters — OASDI wage base capping, uncapped Medicare, the $200,000 Additional Medicare threshold on cumulative wages, and the ordering of 401(k)/HSA/Section 125 pretax deductions — which tells an agent how gross_wages_per_period, pretax_reduces_fica_and_fit and ytd_fica_wages_before_period interact. The truncated tail limits how complete that added meaning is.

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 summary states a specific verb and resource: gross-to-net payroll calculation with FICA components (Social Security 6.2% up to the OASDI base, Medicare 1.45% uncapped, Additional Medicare 0.9% per IRC 3101(b)(2)) plus pretax deduction ordering. It also implicitly differentiates itself from the sibling compute_federal_withholding by naming art-338 as consumed upstream input rather than something it computes. The purpose is clear but buried behind OpenChainGraph boilerplate and a truncated sentence.

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?

There is real guidance on compute-mode selection (auto/server/browser, gpu:true always delegates) and on data handling ("Use synthetic or anonymised inputs only"), plus the upstream-chaining note. However, there is no explicit when-to-use/when-not versus siblings such as compute_federal_withholding or recompute_certified_payroll_pwa, and no prerequisite or scope conditions beyond the mode plumbing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_hmda_rate_spreadCompute HMDA Rate SpreadB
Read-onlyIdempotent
Inspect

Compute HMDA Rate Spread: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-229-compute-disparity-metrics. Open at: https://ainumbers.co/chaingraph/art-230-compute-hmda-rate-spread.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: Computes the HMDA rate spread (APR minus APOR) per FFIEC methodology and classifies against HMDA reportability thresholds: 1.5 pp (first lien), 3.5 pp (subordinate lien), 6.5 pp (HELOC). Outputs: apor_pct, apor_source_note, apr_pct, hmda_report_code, is_reportable, lien_type, lock_date, pii_note, product_type, rate_spread_pct, regulatory_basis, reportability_threshold_pct, table_source, table_version. Output schema: call describe_tool("compute_hmda_rate_spread").

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: lien_type, lock_date, product_type. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower and the description clears it by adding genuine context: the compute:'auto' vs 'browser' execution model, browser delegation URLs for gpu:true nodes, transient non-retention of inputs, and an AP2 artifact carrying execution_hash. That is behavior an agent cannot infer from the annotations. It does not state failure modes or latency, keeping it from 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text opens with near-duplicate boilerplate ('compute node ... Deterministic OpenChainGraph compute node') and buries the actual purpose in a trailing 'Summary:' paragraph after compute-mode, privacy, provenance, and FV-status housekeeping. The useful content is real but poorly front-loaded and padded with repeated chain-provenance language.

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?

With no output schema, the description compensates by listing the returned fields (apor_pct, apr_pct, rate_spread_pct, is_reportable, hmda_report_code, lien_type, regulatory_basis, table_version, etc.) and naming the regulatory thresholds, which is enough for an agent to call and interpret it. It omits error behavior and the meaning of apor_source_note / pii_note, but nothing essential 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%, so the schema already documents compute, parent_hashes, parent_tool_ids, and the policy_parameters block including the required lien_type/lock_date/product_type. The description's compute-mode passage duplicates the schema's own wording rather than adding meaning, 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?

The closing summary is specific: it computes the HMDA rate spread (APR minus APOR) per FFIEC methodology and classifies it against the 1.5pp / 3.5pp / 6.5pp thresholds. That is a clear verb+resource with real scope detail. It never differentiates itself from close siblings such as classify_qm_apr_apor_spread, compute_reg_z_appendix_j_apr, or verify_trid_apr_accuracy, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only routing hint is 'Output feeds: art-229-compute-disparity-metrics,' which describes downstream consumption, not when an agent should pick this tool over the APR/APOR siblings. There is no when-to-use, no exclusions, and no prerequisite statement beyond the input-safety caution.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_identity_proofing_assurance_levelIdentity-Proofing Assurance Level EvaluatorA
Read-onlyIdempotent
Inspect

Identity-Proofing Assurance Level Evaluator: OpenChainGraph compute node (regulatory_reporting). 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. Open at: https://ainumbers.co/chaingraph/art-523-identity-proofing-assurance-level.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: Rates whether a DECLARED identity-evidence set reaches a DECLARED target level of a caller-supplied, versioned assurance-level framework (the art-444 policy-input pattern) -- never a hardcoded framework such as NIST 800-63-3 or eIDAS. Outputs: achieved_level, as_of, criteria_evaluated, criteria_met, criteria_shortfall_count, criteria_undecidable_count, declared_target_level, evidence_item_count, framework_id, framework_version, levels_defined, note, shortfall, target_level_found, target_met, undecidable. Output schema: call describe_tool("compute_identity_proofing_assurance_level").

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: as_of, declared_target_level, evidence_items, level_definition. Unknown keys are refused.

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/closed-world, so the bar is lower, yet the description adds meaningful context: transient processing with no storage or logging, server-vs-browser delegation semantics, and an exported AP2 artifact carrying execution_hash for provenance. Nothing contradicts the read-only annotations. It stops short of describing determinism/purity guarantees or failure modes when the target level is absent from the framework.

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?

The opening is duplicated verbatim in spirit ("OpenChainGraph compute node (regulatory_reporting). Deterministic OpenChainGraph compute node."), and the compute-binding boilerplate restates what the `compute` schema property already says. The FV-status URL and receipt hash, plus the full output-field enumeration, push the actual purpose past the halfway point — poor front-loading for a description this long.

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?

With no output schema, the description compensates well by enumerating the return fields (achieved_level, target_met, shortfall, undecidable, criteria_* counters), which lets an agent know what it will receive. Combined with full schema coverage of the four parameters and the provenance/privacy notes, an agent has enough to call it correctly; only the absence of sibling routing keeps it from a 5.

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%, so both the compute mode and the policy_parameters sub-keys are already documented in the schema. The description adds conceptual framing ("caller-supplied, versioned assurance-level framework", "the art-444 policy-input pattern") but repeats the required-key list rather than deepening semantics. Baseline 3 is appropriate.

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 Summary sentence names a specific verb and object: rates whether a declared identity-evidence set reaches a declared target level of a caller-supplied, versioned framework. It also explicitly excludes hardcoded-framework behavior ("never a hardcoded framework such as NIST 800-63-3 or eIDAS"), which separates it from the many fixed-framework assessment siblings. The only shortfall is that this clarity arrives only after a large block of infrastructure boilerplate.

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?

"Use synthetic or anonymised inputs only" is a real usage constraint, and the compute-mode text explains when auto/server/browser applies. However, there is no statement of when an agent should pick this tool over the many adjacent readiness/assurance siblings, and no prerequisites (e.g. that the caller must supply the framework definition themselves).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_index_weightsCompute Index WeightsA
Read-onlyIdempotent
Inspect

Compute Index Weights: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-645-compute-index-weights.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: Computes (or receipts an externally-declared) weight per constituent from a stated methodology (market-cap, float-adjusted-market-cap, equal-weight, price-weight, or factor-tilted) and caller-supplied inputs, giving the weight set its own citable execution_hash separate from the constituent-membe... Outputs: as_of_date, constituents_ref, fence, index_id, methodology_notes, not_proven, regulatory_framework, structural_error, weight_sum_check, weight_sum_within_tolerance, weighting_methodology, weights. Output schema: call describe_tool("compute_index_weights").

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: constituents_ref, inputs. Unknown keys are refused.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: deterministic compute, server-side vs browser execution rules, GPU delegation, transient processing with no storage/logging/retention, and AP2 execution_hash provenance. The annotations already declare read-only/idempotent/non-destructive behavior, and the description does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the description is verbose and includes repeated phrases such as 'OpenChainGraph compute node' plus a long FV-status URL and boilerplate. Some sentences, like the snapshot-not-subscription explanation, are low value for tool selection.

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?

Given the tool's complexity, the description covers execution modes, privacy behavior, provenance output, and lists the returned fields. It also points to describe_tool for the output schema, which is sufficient since no output schema is embedded.

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 schema already documents all parameters. The description still adds meaningful semantics by naming the supported weighting methodologies and clarifying caller-supplied inputs and methodology notes, though it does not deepen parent_hashes or parent_tool_ids semantics beyond the schema.

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 and resource (compute/index weights) and explains the weighting methodologies and outputs. It is clear what the tool does, but it does not explicitly distinguish itself from sibling tools such as record_index_constituents or publish_index_head.

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?

Provides operational guidance for compute modes and warns to use synthetic or anonymised inputs, but does not say when to use this tool versus alternatives or when not to use it. The usage context is implied rather than explicitly comparative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_intercompany_elimination_nettingIntercompany Elimination and Netting WorkflowC
Read-onlyIdempotent
Inspect

Intercompany Elimination and Netting Workflow: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/684-intercompany-elimination-netting.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.

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". See the tool's manifest for field names.

TDQS

C2.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a read-only, idempotent, non-destructive, non-open-world operation. The description adds useful behavioral context beyond annotations: server-side versus browser delegation, transient processing with no storage/logging, synthetic-input expectations, and AP2 artifact export with execution_hash.

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?

The core purpose is buried under generic OpenChainGraph boilerplate, a URL, and an FV-status receipt paragraph. Several sentences do not help an agent decide whether or how to call this specific tool, making the definition unnecessarily long and not front-loaded around the domain computation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compute tool with a nested policy_parameters object and no output schema, the description should explain what the computation does and what the result contains. Instead it only states that an AP2 artifact with execution_hash is exported, leaving the actual intercompany elimination/netting semantics and return values opaque.

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 all four parameters, including compute, parent_hashes, parent_tool_ids, and policy_parameters. The description reinforces compute mode and provenance chaining but does not add meaningful semantics for policy_parameters, deferring field names to an external manifest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title and name identify an intercompany elimination/netting computation, but the description largely restates that this is a deterministic compute node without explaining what elimination or netting logic it actually performs. It does not distinguish this tool from related siblings such as compute_multilateral_netting, compute_fx_netting_positions, or compute_gross_to_net.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives, nor does it describe prerequisites or typical workflow context. The only usage-like guidance concerns compute mode selection, which is already documented in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_interest_accrual_recomputeInterest Accrual RecomputeC
Read-onlyIdempotent
Inspect

Interest Accrual Recompute: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/661-interest-accrual-recompute.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/non-destructive/closed-world), it discloses meaningful traits: transient processing with no storage or logging, a requirement to use synthetic or anonymised inputs, deterministic execution, server-vs-browser delegation semantics including the gpu:true override, and export of an AP2 artifact carrying execution_hash. This is real behavioral context the annotations do not carry, though the disclosure is generic template text rather than specific to this computation.

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?

Space is spent on a redundant restatement ("OpenChainGraph compute node" immediately followed by "Deterministic OpenChainGraph compute node"), a documentation URL, a 64-character hash literal, and a self-referential note that receipts verify offline. The actual compute semantics are never front-loaded, so the padding displaces the content an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compute tool whose main payload is a free-form nested object (policy_parameters) with zero required fields and no output schema, the description should say what accrual inputs produce what result. Instead it points at an external manifest and a web page. Provenance and chain-chaining behavior is covered; the core computation and its output shape are not.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters in detail. The description's compute-mode sentence largely duplicates the schema's own enum description and adds nothing about parent_hashes/parent_tool_ids pairing or about which fields policy_parameters expects (it defers: "See the tool's manifest"). Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence restates the tool name plus a category label ("OpenChainGraph compute node (compliance_control)") rather than stating what is computed — no principal, rate, day-count convention, accrual period, or output are named. Nothing distinguishes it from close siblings such as compute_apy_earned_recompute or allocate_ihb_interest. An agent learns the packaging, not the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute-mode selection (auto/server/browser) but never says when to use this tool rather than a sibling, nor what prerequisites or inputs qualify a situation as an interest accrual recompute. There are no exclusions or alternative-tool references among the ~350 siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_intraday_liquidity_monitoringBCBS 248 Intraday Liquidity Monitoring SnapshotB
Read-onlyIdempotent
Inspect

BCBS 248 Intraday Liquidity Monitoring Snapshot: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-477-intraday-liquidity-monitoring.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: BCBS 248 "Monitoring tools for intraday liquidity management" (Basel Committee, April 2013): computes daily maximum intraday liquidity usage (the largest negative excursion of a cumulative net settlement position built from a caller-supplied time-stamped transaction list), echoes start-of-day ava... Outputs: available_intraday_sources, available_sources_total_musd, coverage_ratio, cumulative_position_path, daily_max_usage_musd, note, obligations_summary, regulatory_basis, start_of_day_available_musd, time_specific_obligations, total_payments_musd, total_receipts_musd, usage_covered. Output schema: call describe_tool("compute_intraday_liquidity_monitoring").

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: available_intraday_sources, time_specific_obligations, transactions. Unknown keys are refused.

TDQS

B3.2/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 safety profile is covered; the description adds genuinely new behavioral facts: the node is deterministic, gpu:true nodes always delegate to the browser, 'compute:"browser"' returns a delegation URL instead of a result, inputs are processed transiently and not stored or logged, and an AP2 artifact with execution_hash is exported for provenance. The enumeration of returned fields plus the FV-status receipt claim further clarifies what the caller gets back. The remaining gap is that it never states how the transaction input is validated or what happens on malformed input.

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?

The text is padded with platform boilerplate, a full URL, an inline 64-hex FV-status hash, and a self-referential sentence about the receipt verifying offline — none of which helps an agent decide or invoke. The substantive summary is truncated mid-word ('echoes start-of-day ava...'), so the useful content is both buried and incomplete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the output fields is the right compensation and it is done. However, for a tool taking nested, unschematized objects (transactions, time_specific_obligations, available_intraday_sources), the description never specifies the shape of a transaction record or an obligation, and the required-parameter statement appears only inside policy_parameters, leaving an agent unsure what a valid minimal call looks like.

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 baseline is 3; the description mostly restates the compute-mode enum semantics already spelled out in the schema. It does add one useful hint the schema lacks: that the payload is a time-stamped transaction list, plus the note that available_intraday_sources, time_specific_obligations and transactions are required even though the top-level schema marks nothing required. It still gives no field-level shape for those three nested, property-less objects.

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 description gives a specific verb-and-resource: it computes 'daily maximum intraday liquidity usage (the largest negative excursion of a cumulative net settlement position built from a caller-supplied time-stamped transaction list)' under BCBS 248. That is far more specific than the name alone and an agent can tell what computation happens. It does not differentiate from siblings such as run_liquidity_stress_test or compute_lcr_nsfr_leverage, and the purpose statement is buried behind OpenChainGraph platform boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to reach for this tool versus the many adjacent Basel/liquidity tools in the sibling list, and no prerequisites beyond 'Use synthetic or anonymised inputs only.' The compute-mode paragraph is operational trivia about execution location, not guidance about when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_ipfs_cidIPFS CID ComputerA
Read-onlyIdempotent
Inspect

IPFS CID Computer: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-210-ipfs-cid-computer.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: Computes a deterministic IPFS CIDv1 (SHA-256 multihash, multibase base32) for any text input using a pure-JavaScript SHA-256 implementation. Outputs: byte_length, cid, cid_bytes_hex, codec, codec_code, digest_hex, digest_length, disclaimer, known_vector_verified, multihash_fn, multihash_fn_code. Output schema: call describe_tool("compute_ipfs_cid").

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: codec, text. Unknown keys are refused.

TDQS

A3.6/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 low, yet the description adds real context: server-side execution on Cloudflare Workers for gpu:false nodes, browser delegation URL for compute:"browser" or gpu:true, transient processing with no storage or logging, and an exported AP2 artifact carrying execution_hash. The FV-status receipt paragraph and the 'Open at' URL are noise rather than disclosure, which keeps this from 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and output summary are front-loaded and useful, but the middle is padded with boilerplate about FV-status snapshots, offline receipt verification, and a documentation URL that do nothing for an agent deciding how to call the tool. Roughly a third of the text could be cut without losing invocation-relevant information.

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?

With no output schema and a nested object parameter, the description carries real weight, and it delivers by enumerating the returned fields (cid, digest_hex, codec_code, known_vector_verified, etc.) and flagging the no-retention policy. What is missing is guidance on chaining via parent_hashes/parent_tool_ids and any error behavior when unknown keys are refused.

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%, with the compute enum and the nested policy_parameters.text/codec requirements already documented in the schema, so the baseline is 3. The description restates the auto/browser delegation behavior and the gpu:true override, but adds no syntax, bounds, or interaction detail beyond what the schema says.

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?

The Summary sentence gives a precise verb+resource: computes a deterministic IPFS CIDv1 (SHA-256 multihash, multibase base32) from text input using a pure-JavaScript SHA-256 implementation. That is specific enough to separate it from every compute_* sibling at a glance, and the output field list reinforces the exact artifact produced.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to pick this tool versus alternatives, and no exclusions or prerequisites beyond the privacy note 'Use synthetic or anonymised inputs only'. The compute-mode paragraph explains how execution is routed, not when the tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_irrInternal Rate of Return (IRR)A
Read-onlyIdempotent
Inspect

Internal Rate of Return (IRR): OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-325-tvm-irr.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: Internal rate of return for an equal-period cash flow series, solved by deterministic bisection over a declared rate bracket with declared tolerance and iteration cap. Outputs: bracket_hi_pct, bracket_lo_pct, converged, irr_pct, iterations, method, note, num_cash_flows, regulatory_basis, tolerance. Output schema: call describe_tool("compute_irr").

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: cash_flows, tolerance. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds real context on top: transient processing with no storage or logging, the requirement to use synthetic or anonymised inputs, deterministic bisection with declared tolerance and iteration cap, and an AP2 artifact carrying execution_hash. It does not describe failure/divergence behavior in detail beyond the 'converged' output flag.

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?

The actual purpose is buried at the end behind a chain of boilerplate: compute-mode exposition that duplicates the `compute` parameter's own schema text, a privacy paragraph, and a 128-character FV-status receipt hash with a raw URL. Roughly half the text does not earn its place for the selection decision.

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?

For a computational node with 4 parameters, nested policy object, annotations, and no output schema, the description supplies the method, the enumerated outputs, the compute-mode semantics, and a describe_tool pointer for the return schema. The main gap is the absence of any comparison with compute_xirr in a large sibling set.

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 baseline is 3, but the description adds functional meaning the schema lacks: bracket_lo/bracket_hi are the search bracket for bisection, with tolerance and an iteration cap governing convergence, which tells the agent how these values must be supplied. It adds nothing about parent_hashes/parent_tool_ids chaining beyond what the schema already says.

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 summary sentence states a specific computation (IRR for an equal-period cash flow series) and a specific method (deterministic bisection over a declared rate bracket), which implicitly separates it from the sibling compute_xirr (uneven periods). It never names the sibling explicitly, so the differentiation requires the agent to infer it.

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: 'equal-period cash flow series' tells the agent when this fits versus an XIRR-style tool, and the compute-mode paragraph explains server vs browser execution. There is no explicit 'use this instead of compute_xirr/compute_npv when...' statement and no prerequisites or exclusions beyond the synthetic-inputs constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_isa530_audit_sampling_musISA 530 Audit Sampling + MUSB
Read-onlyIdempotent
Inspect

ISA 530 Audit Sampling + MUS: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-693-isa530-audit-sampling-mus.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: Deterministic audit-sampling arithmetic in three caller-declared functions dispatched on method. Outputs: sample_size, sampling_interval, tolerable_misstatement, confidence_factor, item_count, usable_item_count, usable_count, per_item, projected_misstatement, basic_precision, basic_precision_note, first_digit_counts, chi_square_statistic, critical_value, deviation_flag, trace, overall, warnings. Output schema: call describe_tool("compute_isa530_audit_sampling_mus").

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: method. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds useful behavioral context: compute-mode delegation, transient input processing, and AP2 artifact export with execution_hash. It does not contradict annotations.

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?

The description is heavily front-loaded with generic OpenChainGraph boilerplate and repeats 'Deterministic OpenChainGraph compute node'. The core purpose and output list are buried, making it unnecessarily long and not optimized for quick scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output list is helpful, but the description does not explain what each of the three methods (monetary_unit_sampling, misstatement_projection, benford_screen) does or when to use which. This is a critical gap for correct invocation despite full schema coverage.

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 all four parameters. The description adds little beyond noting that method dispatches three functions; it does not explain the semantics of each method or the policy_parameters fields.

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 summary states a specific verb (compute) and resource (ISA 530 audit-sampling arithmetic) and notes three functions dispatched by method. It distinguishes the domain from generic compute siblings, though it does not explicitly name an alternative tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes (auto/server/browser) but gives no guidance on when to use this tool versus other audit or calculation tools. No when-not conditions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_large_exposures_limitLarge Exposures Limit CheckB
Read-onlyIdempotent
Inspect

Large Exposures Limit Check: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-425-large-exposures-limit-check.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: Basel III large exposures framework (BCBS 283) and U.S. Outputs: breach_list, caller_is_gsib, counterparties, groups, note, regulatory_basis, tier1_capital_musd. Output schema: call describe_tool("compute_large_exposures_limit").

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: caller_is_gsib, counterparties. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behaviour, so the bar is low, but the description still adds real value beyond them: deterministic execution, transient processing with no storage/logging, the instruction to use synthetic inputs only, and the fact that an AP2 artifact with execution_hash is emitted for provenance. The browser-delegation vs server-kernel behaviour is also disclosed. It stops short of describing limits/throttling or the artifact's downstream use.

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?

Purpose is front-loaded, but roughly half the text is platform boilerplate and a 64-character FV-status hash URL plus a spec-page link that an agent cannot act on. The one sentence that discriminates the tool's domain is the shortest and least complete part of the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating output fields (breach_list, groups, regulatory_basis, tier1_capital_musd, etc.), which is genuinely useful. But it leaves the untyped 'counterparties' input structure undefined and gives no indication of what a breach_list entry looks like or what 'groups' represents, which is the crux of a concentration check.

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 compute, parent_hashes, parent_tool_ids and policy_parameters, and the description largely restates the compute-mode text. Notably the schema declares 'counterparties' as an untyped empty object, and the description does nothing to explain its expected shape or the units of tier1_capital_musd beyond the name.

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 opening line and the 'Summary: Basel III large exposures framework (BCBS 283) and U.S.' fragment identify the computed result (large-exposures limit breach check) clearly enough that an agent can map it to a verb+resource. However, the summary sentence is truncated mid-thought and there is no differentiation from adjacent siblings such as compute_counterparty_limit_check or check_credit_concentration_topn_sector.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to choose this tool over the many concentration/limit siblings, nor what preconditions (e.g. which regulatory regime, G-SIB vs non-G-SIB callers) make it applicable. The only routing-style guidance is about compute mode, which belongs to a parameter rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_lcm_rate_derivationLCM Rate Derivation CalculatorA
Read-onlyIdempotent
Inspect

LCM Rate Derivation Calculator: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-255-compute-lcm-rate-derivation.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: Computes the Loss Cost Multiplier (LCM) and indicated insurance rate from user-supplied loss costs and expense/profit loadings. Outputs: complement_loss_cost, credibility_weighted_loss_cost, credibility_z, current_rate, denominator_valid, fixed_expense_pct, indicated_rate, issues, lae_pct, lcm, lcm_denominator, not_legal_advice, pii_note, profit_pct, proprietary_data_notice, pure_loss_cost, pure_loss_cost_loaded, rate_change_direction, rate_change_pct, regulatory_basis, table_source, table_version, total_loading, variable_exp_pct. Output schema: call describe_tool("compute_lcm_rate_derivation").

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: complement_loss_cost, credibility_z, current_rate, fixed_expense_pct, lae_pct, profit_pct, pure_loss_cost, variable_exp_pct. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only and idempotent annotations, the description discloses server-side versus browser delegation, GPU handling, transient input processing with no storage or logging, and AP2 artifact provenance via execution_hash. These are concrete behavioral traits that help an agent invoke it correctly.

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?

The main purpose statement appears near the end after repeated boilerplate such as 'OpenChainGraph compute node' and a long FV-status hash block. The output list is useful, but the description is not front-loaded and includes several sentences that do not help tool selection or invocation.

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?

For a complex compute tool with no output schema, the description provides a useful output list, privacy behavior, compute-mode behavior, and provenance details. It is fairly complete, though the listed outputs are names only and the description relies on the schema for parameter details.

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 baseline is 3. The description explains compute mode behavior but largely repeats the schema, and it adds little detail for parent_hashes, parent_tool_ids, or policy_parameters beyond what the schema already documents.

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 summary states a specific verb and resource: computes the Loss Cost Multiplier (LCM) and indicated insurance rate from loss costs and expense/profit loadings. It is clear enough for an agent to recognize the domain, but it does not explicitly differentiate itself from other rate/insurance compute siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a data-safety instruction ('Use synthetic or anonymised inputs only') and compute-mode details, but it does not say when to use this calculator versus alternatives or when not to use it. No sibling tool is named as an alternative or contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_lcr_nsfr_leverageLCR / NSFR / Leverage Ratio CalculatorA
Read-onlyIdempotent
Inspect

LCR / NSFR / Leverage Ratio Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-364-compute-lcr-nsfr-leverage.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: Basel III Liquidity Coverage Ratio (BCBS 238), Net Stable Funding Ratio (BCBS 295), and Leverage Ratio (BCBS 270, finalized BCBS 360) point-in-time calculator from caller-supplied HQLA positions, outflow/inflow categories, ASF/RSF items, and capital/exposure figures. Outputs: lcr, leverage, note, nsfr, regulatory_basis. Output schema: call describe_tool("compute_lcr_nsfr_leverage").

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: lcr, leverage, nsfr. Unknown keys are refused.

TDQS

A3.8/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), yet the description still adds real behavioral context: the auto/server/browser compute resolution and browser-delegation URL behavior, the gpu:true always-delegate rule, transient non-retention of inputs with a synthetic-data-only constraint, and emission of an AP2 artifact carrying execution_hash. Only minor gaps remain (no rate limits or failure modes).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and output list are reasonably front-loaded, but the text is padded: 'OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node' repeats the same claim, and the fv-status 64-hex receipt URL plus the spec URL add provenance noise that does not help an agent choose or invoke the tool.

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?

There is no output schema, and the description compensates by enumerating the returned fields (lcr, leverage, note, nsfr, regulatory_basis) and pointing to describe_tool for the full schema. Combined with the compute-mode and provenance explanation, an agent has enough to call this correctly; only the nested policy_parameters shape is left entirely to the schema.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description contributes some semantic mapping by naming which figures feed which ratio (HQLA and outflow/inflow for LCR, ASF/RSF for NSFR, capital/exposure for leverage), but it does not clarify the internal structure of the nested lcr/nsfr/leverage objects, 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+resource set (Basel III LCR per BCBS 238, NSFR per BCBS 295, Leverage Ratio per BCBS 270/360) computed point-in-time from caller-supplied HQLA, outflow/inflow, ASF/RSF and capital/exposure figures. That level of specificity clearly separates it from siblings such as run_liquidity_stress_test or compute_intraday_liquidity_monitoring.

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: the phrase 'from caller-supplied ... figures' signals this is for the case where the agent already holds the raw position data, and 'point-in-time' rules out projection/stress use. But no sibling alternative is named and no explicit when-not-to-use condition is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_lending_recall_prioritizerLending Recall PrioritizerC
Read-onlyIdempotent
Inspect

Lending Recall Prioritizer: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/673-lending-recall-prioritizer.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.

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". See the tool's manifest for field names.

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/no open-world. The description adds genuinely useful context: deterministic execution, server-side vs browser delegation for gpu:false/gpu:true nodes, transient non-stored inputs, and export of an AP2 artifact carrying execution_hash. However it discloses nothing about the actual computation, failure modes, or what the artifact contains beyond a hash.

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?

Front-loading is wasted on the category label rather than purpose, and a large share of the text is boilerplate plus an inline URL and a 64-character FV-status hash that add no decision value for an agent. It is long relative to the amount of actionable information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compute node whose input is a free-form policy_parameters object and which has no output schema, the description should explain the decision function or at least its input fields. Instead it points to an unfetched manifest, leaving the core contract effectively undocumented.

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 nominally 100%, so baseline 3 applies. The description restates the compute-mode semantics already in the schema and offers nothing about policy_parameters — the single most important input — which both schema and description defer to an external manifest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description labels the tool a 'compute node (compliance_control)' and repeats the name in the title, but never says what a 'lending recall prioritizer' actually decides or ranks. An agent cannot tell from the text whether this prioritizes loan-recall candidates, securities-lending recalls, or product recalls, nor how it differs from siblings like resolve_recall_trace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to invoke this versus alternatives; no sibling (e.g. resolve_recall_trace) is mentioned. The only selection advice is about compute:auto vs browser, which is a parameter choice rather than when-to-use-this-tool guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_llpa_stackLLPA Stack CalculatorA
Read-onlyIdempotent
Inspect

LLPA Stack Calculator: OpenChainGraph compute node (compliance_mandate). 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-222-agency-eligibility-matrix. Open at: https://ainumbers.co/chaingraph/art-221-llpa-stack.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: Fannie Mae public LLPA (Loan-Level Price Adjustment) matrix calculator. Outputs: base_llpa, components, feature_llpa, fico_band, fthb_eligible, fthb_waiver, ltv_band, pii_note, regulatory_basis, table_source, table_version, total_llpa_pct. Output schema: call describe_tool("compute_llpa_stack").

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: first_time_buyer, loan_purpose, occupancy_type, property_type, subordinate_financing. Unknown keys are refused.

TDQS

A3.5/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), yet the description adds genuinely additive behaviour: transient processing with no storage/logging/retention, an explicit synthetic-or-anonymised input constraint, server-vs-browser delegation semantics, and export of an AP2 artifact carrying execution_hash for chain provenance. Minor deduction for the redundant 'OpenChainGraph compute node' restatement and the raw FV-status URL hash, which add length without decision-relevant behaviour.

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?

Front-loading fails badly: the opening two sentences restate the title and repeat 'compute node' twice before any substance, and the one sentence that actually identifies the tool ('Fannie Mae public LLPA matrix calculator') appears near the end. Multiple sentences repeat the same privacy and compute-mode facts already stated in the schema, and the full FV-status path hash is noise for tool selection.

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?

With no output schema, the description compensates by enumerating return fields (base_llpa, total_llpa_pct, fico_band, fthb_waiver, table_version, etc.) and pointing to describe_tool for the full schema. It also covers provenance (upstream artifact, execution_hash export) and data-handling constraints. Only the absence of any guidance on which loan inputs drive which output band keeps it short of 5.

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 compute, parent_hashes, parent_tool_ids and policy_parameters in detail; the baseline of 3 applies. The description reinforces the compute-mode default and names the upstream artifact supplying parent hashes, but adds no syntax, ranges, or semantics for the policy_parameters fields (fico_score, ltv_pct, etc.) beyond what the schema states.

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 core purpose is stated specifically: 'Fannie Mae public LLPA (Loan-Level Price Adjustment) matrix calculator' with an enumerated output set, which is far more than a restated name. However, that sentence is buried in the final third after generic ChainGraph boilerplate, and the definition never positions itself against near-neighbours like check_agency_eligibility_matrix or compute_fha_mip_eligibility (the 'consumes upstream art-222-agency-eligibility-matrix' line hints at the relationship but does not spell it out).

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?

Guidance is present but mostly about invocation mode: 'By default (compute:"auto") ... compute:"browser" forces client-side execution', plus the constraint 'Use synthetic or anonymised inputs only'. There is no explicit when-to-use / when-not vs the sibling matrix and eligibility tools, so an agent must infer that this is the pricing-step calculator downstream of the agency eligibility check.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_loan_servicing_waterfall_recomputeLoan Servicing Waterfall RecomputeB
Read-onlyIdempotent
Inspect

Loan Servicing Waterfall Recompute: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/664-loan-servicing-waterfall-recompute.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: Independently recomputes how a single borrower's single loan payment applies across escrow, fee, interest and principal buckets under the note's own caller-declared bucket application order, then diffs the recomputed per-bucket breakdown against the core's actual applied amounts. Outputs: application_order, payment_amount, computed_applied_by_bucket, unapplied_remainder, core_applied, per_bucket_deltas, verdict, missing_inputs. Output schema: call describe_tool("compute_loan_servicing_waterfall_recompute").

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: application_order, bucket_balances, payment_amount. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely non-obvious behavior: default server-side execution with a browser delegation URL for compute:"browser" or gpu:true, transient non-retained input processing, and an exported AP2 artifact carrying execution_hash. It does not describe failure modes or what happens on unknown keys beyond what the schema already says.

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?

Roughly two-thirds of the text is vendor boilerplate (compute-node framing, privacy statement, marketing URL, and a 64-character FV-status hash) that precedes the one paragraph that actually describes the tool. The purpose is not front-loaded, and an inline cryptographic digest is pure noise for tool selection.

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?

With four parameters, nested objects, and no output schema, the description usefully enumerates the return fields (application_order, computed_applied_by_bucket, unapplied_remainder, core_applied, per_bucket_deltas, verdict, missing_inputs), which substitutes for a missing output schema. Execution mode and privacy handling are also covered, leaving little an agent needs that 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%, so the four parameters are already documented; the description only reiterates that application_order, bucket_balances, and payment_amount are required and that unknown keys are refused. It adds no semantics about the shape of the nested core_applied or bucket_balances objects, so it neither helps nor hurts beyond the schema baseline.

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 Summary sentence gives a precise verb and resource: independently recomputes one borrower's single loan payment allocation across escrow/fee/interest/principal under a caller-declared order and diffs it against the core's applied amounts. That is specific enough to act on. However, it never distinguishes this from near-identical siblings such as recompute_payment_waterfall, recompute_trustee_report_waterfall, or compute_escrow_analysis, and the actual purpose is buried after a long boilerplate block.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to pick this tool over the several other waterfall recompute siblings, and no when-not guidance. The only usage-adjacent content is a data-handling constraint ("Use synthetic or anonymised inputs only") and the compute-mode mechanics, neither of which tells an agent which scenario selects this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_ltc_funding_comparatorLTC Funding ComparatorA
Read-onlyIdempotent
Inspect

LTC Funding Comparator: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/686-ltc-funding-comparator.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.

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". See the tool's manifest for field names.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes significantly beyond standard annotations by detailing critical behavioral traits: inputs are transiently processed and not stored, logged, or retained; users must use synthetic/anonymized inputs; and the output includes an AP2 artifact with an execution_hash for chain provenance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly verbose and dense, sacrificing conciseness for extreme technical completeness. While every piece of information is relevant to its domain, the overall structure is a wall of technical constraints and is front-loaded with marketing/onboarding links and status URLs.

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?

Given the complexity of execution modes, data handling (transient processing, no storage), and artifact generation (AP2 export), the description is complete. An agent knows exactly what to expect regarding constraints, execution, and output types without needing to infer from the schema or 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 coverage is 100%, but the description adds no meaningful semantic information to the four defined parameters beyond reiterating general compute mode definitions (compute) or execution context (server/browser).

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 tool's purpose is generally clear: computing the LTC funding comparator. It specifies it is a deterministic OpenChainGraph compute node (compliance_control).

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?

The description provides extremely detailed usage guidelines regarding execution context: it explicitly details the 'auto' (server-side) vs. 'browser' (client-side) execution modes, the conditions for each mode (e.g., gpu:false vs. gpu:true), and the side effects (returns URL vs. computed result).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_ltv_ratiosLTV/CLTV/HCLTV Ratio CalculatorB
Read-onlyIdempotent
Inspect

LTV/CLTV/HCLTV Ratio Calculator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-222-agency-eligibility-matrix. Open at: https://ainumbers.co/chaingraph/art-336-compute-ltv-ratios.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: Loan-to-value, combined LTV, and home-equity combined LTV per Fannie Mae Selling Guide B2-1.1-03 and Freddie Mac Single-Family Seller/Servicer Guide 5401.1. Outputs: appraised_value, cltv_pct, first_lien_amount, hcltv_pct, heloc_credit_limit, ltv_pct, note, regulatory_basis, sales_price, subordinate_lien_amount, transaction_type, value_used. Output schema: call describe_tool("compute_ltv_ratios").

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: transaction_type. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description meaningfully supplements them: it discloses server-side vs browser execution routing, that inputs are processed transiently and not stored or logged, and that an AP2 artifact with execution_hash is exported for chain provenance. These are real behavioral traits not derivable from the annotations, though the gap is that it does not describe validation failures or refusal behavior for unknown keys.

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?

The definition is heavily back-loaded: roughly two-thirds of the text is OpenChainGraph/FV-status/link boilerplate before the actual purpose appears in a trailing 'Summary'. The most decision-relevant sentence an agent needs is the last one, and redundant phrasing ('OpenChainGraph compute node' repeated) wastes space.

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?

Given a nested schema with no output schema, the description compensates by explicitly enumerating the eleven output fields (ltv_pct, cltv_pct, hcltv_pct, value_used, etc.), which is exactly the return-value information the missing output schema would otherwise withhold. Combined with the provenance and privacy notes, an agent has enough to call it correctly, though the absence of usage routing leaves one gap.

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 fully documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates the compute-mode semantics but adds no new meaning, so the baseline 3 for schema-complete tools 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?

The description eventually states a specific verb and resource: 'Loan-to-value, combined LTV, and home-equity combined LTV per Fannie Mae Selling Guide B2-1.1-03 and Freddie Mac Guide 5401.1', which is far more precise than the title alone. However, this purpose is buried at the very end behind infrastructure boilerplate, and it never contrasts itself with adjacent siblings such as compute_dti_ratios, compute_ltc_funding_comparator, or check_conforming_loan_limit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit statement of when to use this tool versus alternatives. The compute-mode discussion ('auto'/'server'/'browser') is operational routing, not usage selection, and the regulatory citations tell an agent what standard is applied but not when this calculator is the right pick over a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_m3p_monthly_capM3P Monthly Cap CalculatorC
Read-onlyIdempotent
Inspect

M3P Monthly Cap Calculator: OpenChainGraph compute node (payment_policy). 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. Open at: https://ainumbers.co/tools/617-m3p-monthly-cap-calculator.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.

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". See the tool's manifest for field names.

TDQS

C2.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, yet the description adds real behavioral context: server-side vs browser delegation, transient processing with no storage or logging, synthetic-inputs-only guidance, and an AP2 artifact with execution_hash for provenance. That is meaningful disclosure beyond annotations, though it omits error/failure 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?

It opens with a redundant pair ('M3P Monthly Cap Calculator: OpenChainGraph compute node... Deterministic OpenChainGraph compute node.') and spends much of its length on infra phrasing and FV-status receipt legalese with a raw URL. The genuinely useful sentences about execution and privacy are buried mid-paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It covers compute binding, chaining, privacy, and the exported artifact despite having no output schema, but the core input — the field names inside policy_parameters — is pushed to 'the tool's manifest', so an agent still cannot form a valid decision-function call from the definition alone.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description only echoes the compute mode and hints at chaining via 'execution_hash for chain provenance', adding little beyond the schema; the required shape of policy_parameters is deferred to an external manifest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the name and labels the node as 'payment_policy' but never explains what an M3P monthly cap is or what the tool actually computes. Its only elaboration is infrastructure boilerplate (compute modes, AP2 export), so an agent cannot distinguish this from dozens of sibling policy calculators beyond the title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains compute-mode selection ('auto' vs 'browser') but says nothing about when this M3P cap calculator should be chosen over the many overlapping payment-policy siblings. No prerequisites, exclusions, or alternative tools are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_mla_maprCompute MLA MAPR (closed-end)A
Read-onlyIdempotent
Inspect

Compute MLA MAPR (closed-end): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-232-compute-scra-rate-cap. Open at: https://ainumbers.co/chaingraph/art-231-compute-mla-mapr.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: Computes the Military Annual Percentage Rate for CLOSED-END consumer credit and tests it against the 36 percent limit that 10 USC 987(b) imposes and 32 CFR 232.4(b) sets out. Outputs: amount_advanced, amount_financed_mapr, application_fee_carve_out_applied, application_fee_carve_out_predicates, approaching_cap_threshold_basis, approaching_cap_threshold_pct, bona_fide_exclusion_available, bona_fide_fee_claimed_total, bracketed, charge_breakdown, converged, credit_class, exceeds_cap, finance_charge_in_schedule, in_scope, iterations, mapr_cap_pct, mapr_determined, mapr_pct, max_payment_count, method_basis, payment_amount, payment_count, payment_count_exceeds_limit, payment_structure, payment_total, periodic_rate, pii_note, prepaid_includable_charges, regulatory_basis, scope_note, table_source, table_version, term_days, total_excluded_charges, total_includable_charges, unit_periods_per_year. Output schema: call describe_tool("compute_mla_mapr").

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: ancillary_product_fee_total, application_fee, application_fee_once_in_rolling_12_months, bona_fide_fee_claimed_total, credit_class, credit_insurance_premium_total, creditor_is_fcu_or_idi, debt_cancellation_fee_total, debt_suspension_fee_total, finance_charge_total, is_credit_card, is_short_term_small_amount_loan, loan_amount, participation_fee_annual, payment_amount, payment_structure. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only and idempotent annotations, the description discloses server-side vs client-side execution behavior, GPU delegation rules, transient input handling with no storage or logging, a synthetic/anonymised input requirement, AP2 artifact export with execution_hash, and downstream chaining context. These are substantial behavioral details not present in 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the regulatory scope is clear, but the description carries significant ChainGraph boilerplate, a long output-field list, and an FV-status URL. While some of this aids completeness, the overall text is longer than necessary for tool selection and invocation.

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 gives strong regulatory context, execution-mode behavior, privacy handling, downstream artifact chaining, and a detailed output-field list in the absence of an output schema. It is nearly complete for a complex compute node, though it stops short of explaining how to interpret the returned artifact structure.

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 all four top-level parameters and the nested policy_parameters contract. The description adds compute-mode context but largely repeats what the schema says and does not explain the nested policy_parameters fields beyond what the schema and its required-key list provide.

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 description clearly states the specific verb and resource: it computes the Military Annual Percentage Rate for closed-end consumer credit and tests it against the 36% limit under 10 USC 987(b) and 32 CFR 232.4(b). This is far more specific than a title restatement, but it does not explicitly differentiate the tool from nearby siblings such as recompute_mla_mapr_actuarial.

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 closed-end and 36% cap framing implies the tool's intended domain, and the compute modes explain server vs browser execution. However, there is no explicit guidance on when to choose this tool over sibling APR or MLA tools, nor any when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_mlr_rebateMLR Rebate CalculatorA
Read-onlyIdempotent
Inspect

MLR Rebate Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-344-compute-mlr-rebate.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: Medical Loss Ratio numerator/denominator, credibility-adjustment tier, 3-year premium-weighted averaging, and rebate math per 45 CFR 158 (ACA MLR rule). Outputs: adjusted_earned_premium, adjusted_incurred_claims, constants_version, credibility_adjustment_pct_points, credibility_tier, current_year_adjusted_mlr_pct, de_minimis, market, member_life_years, note, raw_mlr_pct, rebate_amount, rebate_owed, rebate_pct_points, regulatory_basis, reporting_year, three_yr_average_mlr_pct, threshold_pct, years_included_in_average. Output schema: call describe_tool("compute_mlr_rebate").

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: market. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds material behavioral context beyond them: determinism, server-vs-browser execution semantics (including gpu:true always delegating), transient processing with no storage/logging/retention, and export of an AP2 artifact carrying execution_hash for chain provenance. That is exactly the kind of execution and data-handling detail structured fields do not carry.

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?

The most decision-relevant sentence -- what the tool actually computes -- is buried near the end, while the opening repeats 'OpenChainGraph compute node' twice and restates compute-mode behavior already in the schema. The FV-status URL and receipt hash, plus a 19-field output enumeration, add bulk that a shorter pointer (describe_tool) would have covered.

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?

With no output schema, the description usefully enumerates the returned fields (rebate_amount, credibility_tier, three_yr_average_mlr_pct, regulatory_basis, etc.), states the regulatory basis, and covers execution/provenance behavior. The gap is input-side: the 15 possible policy_parameters subfields are never explained, so an agent must read the schema and infer which numbers drive the credibility and averaging logic.

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 each of the four top-level parameters is already documented, and the description mostly restates compute-mode semantics verbatim. It adds modest value by naming the concepts behind policy_parameters (MLR numerator/denominator, credibility tier, three-year averaging), hinting at which inputs matter, but it never clarifies required-vs-optional or refused keys.

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 description names a specific computation -- 'Medical Loss Ratio numerator/denominator, credibility-adjustment tier, 3-year premium-weighted averaging, and rebate math per 45 CFR 158' -- which clearly distinguishes it from nearby ACA siblings like compute_aca_affordability_safe_harbor or compute_mla_mapr. However, this statement arrives only in the final 'Summary' paragraph, after several sentences of platform boilerplate, and no sibling is named explicitly as an alternative.

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 implied by the regulatory framing (compute MLR rebate for a given market/reporting year), and it does give one real constraint: 'Use synthetic or anonymised inputs only.' There is no statement of when to choose this tool over a sibling, no prerequisites, and no exclusions; compute-mode guidance is repeated from the schema rather than adding task-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_multilateral_nettingMultilateral Cash NettingA
Read-onlyIdempotent
Inspect

Multilateral Cash Netting: OpenChainGraph compute node (analytics_mandate). 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. Output feeds: art-260-allocate-ihb-interest. Open at: https://ainumbers.co/chaingraph/art-259-compute-multilateral-netting.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: Computes N-entity corporate cash netting: gross inter-company positions to net positions to minimum settlement legs using the BIS CPMI greedy matching algorithm (Net Settlement Framework 2012). Outputs: anchor_surface, base_currency, entity_count, entity_net_positions, gross_count, gross_volume, net_count, net_volume, netting_efficiency_pct, not_legal_advice, pii_note, regulatory_basis, settlement_legs, table_source, table_version, wire_count_savings, wire_count_savings_pct. Output schema: call describe_tool("compute_multilateral_netting").

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: base_currency, entities, fx_rates, gross_positions. Unknown keys are refused.

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, and the description still adds real substance: inputs are processed transiently and not stored or logged, execution is deterministic and localised server-side versus browser delegation for gpu:true nodes, and the tool exports an AP2 artifact with execution_hash for chain provenance. The compute-mode explanation largely duplicates the schema's compute field, which keeps it from 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual purpose appears only after heavy boilerplate: 'Deterministic OpenChainGraph compute node' is stated twice, and a 64-character FV-status hash plus a documentation URL occupy prominent space. The output field enumeration is useful, but the lede is buried and the hash string earns nothing for an agent deciding how to call the tool.

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?

With no output schema, the description compensates by enumerating expected outputs (entity_net_positions, settlement_legs, netting_efficiency_pct, wire_count_savings, regulatory_basis) and pointing to describe_tool for the full schema. Regulatory grounding (BIS CPMI Net Settlement Framework 2012) and the AP2 export behaviour make it operationally sufficient, though the exact required input keys are left to the schema.

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 baseline is 3. The description adds little parameter-level meaning: it never explains the shape or semantics of policy_parameters (entities, fx_rates, base_currency, gross_positions) beyond what the nested schema already states, and parent_hashes chaining is only alluded to via 'chain provenance'.

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 Summary sentence gives a specific verb and resource: computes N-entity corporate cash netting, transforming gross inter-company positions into net positions and minimum settlement legs via the BIS CPMI greedy matching algorithm. That is far clearer than the name alone. It does not, however, differentiate itself from near-siblings such as compute_fx_netting_positions, compute_intercompany_elimination_netting, or compute_gross_to_net, all of which an agent could plausibly confuse 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?

Usage is only implied: 'Use synthetic or anonymised inputs only' is an input constraint, and 'Output feeds: art-260-allocate-ihb-interest' hints at downstream sequencing. There is no explicit statement of when to pick this over the netting siblings, nor of prerequisites such as needing gross_positions and fx_rates supplied in policy_parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_note_h_margin_debit15c3-3a Note H Margin-Debit ComputationC
Read-onlyIdempotent
Inspect

15c3-3a Note H Margin-Debit Computation: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-580-15c3-3a-note-h-margin-debit.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: Recomputes whether a margin debit related to a broker-dealer's customer transactions in U.S. Outputs: broker_dealer_ref, citations, clearing_agency_name, commission_notice_dated, computation_date_label, conditions, currency, debit_display, debit_minor_units, fence, indeterminate_reason, margin_on_deposit_display, margin_on_deposit_minor_units, margin_required_display, margin_required_minor_units, margin_source, minor_unit_exponent, not_proven, note, rationale, rejected_inputs, verdict. Output schema: call describe_tool("compute_note_h_margin_debit").

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: broker_dealer_ref, clearing_agency_conditions, clearing_agency_name, computation_date_label, currency, customer_insufficient_assets_declared, margin_called_and_received_next_business_day, margin_on_deposit_minor_units, margin_required_minor_units, margin_source. Unknown keys are refused.

TDQS

C2.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, and the description adds real behavior beyond that: deterministic execution, transient non-retained inputs, an exported AP2 artifact with execution_hash for chain provenance, and offline-verifiable FV-status receipt. It could still say more about what indeterminate_reason/not_proven imply at runtime.

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?

Sized well beyond what an agent needs: a full FV-status URL plus a 64-character hash is embedded boilerplate, and the summary sentence is truncated while the 24-item output list dominates. Useful content (compute modes, provenance) is buried rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the returned fields is genuinely valuable and the chaining/provenance story is covered. However, the semantics of key decision outputs (verdict, conditions, not_proven, indeterminate_reason) are never explained, and the noise around FV-status adds little for correct invocation.

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%, including a documented compute enum and required policy_parameters, so the schema does the heavy lifting. The description restates the compute modes but adds no meaning for the policy_parameters keys or the parent_hashes/parent_tool_ids chaining semantics beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name/title and the occurrence of 'Recomputes' establish a compute node for 15c3-3a Note H margin debit, but the summary sentence is grammatically broken ('whether a margin debit related to a broker-dealer's customer transactions in U.S.'), leaving the actual computed quantity unclear. Nothing distinguishes it from nearby siblings like compute_15c3_3_reserve or compute_custody_segregation_ratio.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute-mode selection (auto/server/browser) but gives no guidance on when this tool should be used instead of related reserve/segregation computations, nor any prerequisites or exclusions. An agent has to infer applicability entirely from the spec name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_npvNet Present Value (NPV)A
Read-onlyIdempotent
Inspect

Net Present Value (NPV): OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-324-tvm-npv.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: Net present value of a cash flow series, discounted at a declared periodic rate. Outputs: day_count_convention, discount_rate_pct, mode, note, npv, num_cash_flows, regulatory_basis, total_undiscounted. Output schema: call describe_tool("compute_npv").

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: cash_flows, day_count_convention, mode, valuation_date. Unknown keys are refused.

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/closed-world, yet the description still adds meaningful behavior: server-side execution on Cloudflare Workers for gpu:false kernels, browser delegation URL for compute:"browser", GPU nodes always delegating, transient non-retained input handling, and emission of an AP2 artifact with execution_hash for chain provenance. This is real context beyond the structured fields. It does not contradict 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text opens with infrastructure identity ("compute node (analytics_mandate)"), then embeds a long FV-status URL and a 64-character hash that carry no selection value for the caller, and only reaches the actual NPV definition in the final third. The output list and describe_tool pointer are useful, but the overall structure is not front-loaded and roughly half the content is provenance boilerplate.

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?

Given four parameters including a nested policy_parameters object and no output schema, the description does supply the return field names (npv, num_cash_flows, total_undiscounted, day_count_convention, discount_rate_pct, regulatory_basis, mode, note) and points to describe_tool for the full schema. Execution-mode semantics and transient-data handling are covered. What is missing is any statement of the discounting assumption (periodic rate, sign convention) needed to validate results.

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%, so the parameter baseline is 3. The description restates compute-mode semantics and names the domain fields (cash_flows, discount_rate_pct, day_count_convention, mode, valuation_date) but adds no unit, format, or sign-convention guidance beyond what the schema already documents. It neither compensates further nor misleads.

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 description contains a precise statement of the operation: "Net present value of a cash flow series, discounted at a declared periodic rate," with named inputs (cash_flows, discount_rate_pct) and outputs (npv, num_cash_flows, total_undiscounted). That clearly separates it from siblings like compute_irr and compute_xirr. However, the actual purpose sentence is buried near the end behind infrastructure boilerplate, so the resource is identifiable but not front-loaded.

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 description explains the compute-mode selector (auto/server/browser, gpu delegation) thoroughly, but says nothing about when to pick NPV over compute_irr, compute_xirr, compute_breakeven, or the other valuation siblings. There are no explicit exclusions or selection criteria for the analytical function itself, so the agent must infer applicability from the topic alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_odnsf_fee_recomputeOverdraft / NSF Fee RecomputationC
Read-onlyIdempotent
Inspect

Overdraft / NSF Fee Recomputation: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/662-odnsf-fee-recompute.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds meaningful operational context: compute execution modes, browser delegation for GPU nodes, transient non-retention of inputs, and an exported AP2 artifact with execution_hash for provenance.

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?

The text is dominated by generic OpenChainGraph infrastructure boilerplate, including Cloudflare Workers execution details, privacy language, a URL, and an FV-status file path. It is not front-loaded with the actual computation purpose, and several sentences do not help an agent decide whether to invoke this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema and annotations are relatively rich, but the description does not explain the core overdraft/NSF fee decision logic or what should go into `policy_parameters` beyond pointing to a manifest. For a compliance computation tool with an open-ended nested parameter object, this leaves the agent without enough domain context to call it confidently.

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 carries parameter semantics. The description elaborates the `compute` enum but does not add meaning for `parent_hashes`, `parent_tool_ids`, or the open-ended `policy_parameters` object, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens by restating the title and calling it an 'OpenChainGraph compute node (compliance_control)', then repeats that it is a deterministic compute node. It never explains what overdraft/NSF fee recomputation actually calculates or how this differs from the many sibling recompute tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is about the `compute` mode values, not about when to use this tool versus alternatives. There is no when-to-use, when-not-to-use, or comparison with sibling recomputation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_oprisk_sma_2026Basel Operational Risk SMA (2026 Reproposal)A
Read-onlyIdempotent
Inspect

Basel Operational Risk SMA (2026 Reproposal): OpenChainGraph compute node (capital_assessment). 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. Open at: https://ainumbers.co/chaingraph/art-356-compute-oprisk-sma-2026.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: Basel Standardized Measurement Approach (SMA) for operational-risk capital per the July 2026 US Basel Endgame reproposal (comment period closed 2026-06-18, final expected ~Q4 2026): marginal Business Indicator Component across the $1bn/$30bn buckets (12%/15%/18%) and the Internal Loss Multiplier,... Outputs: average_annual_loss, bucket, business_indicator, business_indicator_component, constants_version, fc_avg, ildc_avg, internal_loss_multiplier, loss_component, note, operational_risk_capital, regulatory_basis, rule_status, rwa, sc_avg, use_us_ilm_neutralization. Output schema: call describe_tool("compute_oprisk_sma_2026").

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: annual_op_losses, use_us_ilm_neutralization. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description adds behavior the annotations cannot: inputs are processed transiently and not stored or logged, browser mode returns a delegation URL instead of a result, gpu:true always delegates, and an AP2 artifact with execution_hash is exported for provenance. Only the return shape of the artifact is left implicit.

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?

The text opens with duplicated boilerplate ('OpenChainGraph compute node (capital_assessment). Deterministic OpenChainGraph compute node.') and buries the actual domain purpose and output list behind compute-mode, privacy and FV-status prose plus a full hash URL. Several sentences, including the receipt-snapshot caveat, do not help an agent decide or call correctly.

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?

For a 4-parameter nested compute node with no output schema, the definition covers inputs via a fully documented schema, enumerates the thirteen output fields, and points to describe_tool for the full schema. Execution-mode and provenance behavior are explained. Missing only the concrete artifact/return envelope, which is a minor gap.

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%, including the compute enum and the policy_parameters object, so the schema already defines all four parameters. The description restates the compute-mode semantics rather than adding new meaning, and says nothing about how fc_avg, sc_avg, ildc_avg, annual_op_losses or use_us_ilm_neutralization affect the result. 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?

The description names a specific verb and resource: computes Basel SMA operational-risk capital and RWA under the July 2026 US Basel Endgame reproposal, citing the BIC buckets (12%/15%/18%) and the Internal Loss Multiplier. An agent knows exactly what calculation it gets. It stops short of differentiating from nearby siblings such as compare_basel_2023_vs_2026 or compute_rwa_erba_2026.

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?

There is real usage guidance for the compute-mode decision (auto/server vs browser delegation) and a data-handling instruction to use synthetic or anonymised inputs only. However, nothing says when to pick this tool over the closely related Basel/RWA siblings, and there are no exclusions or prerequisites stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_options_greeksOptions Greeks CalculatorA
Read-onlyIdempotent
Inspect

Options Greeks Calculator: OpenChainGraph compute node (risk_parameter). 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. Output feeds: qfa-04-xva-cva-calculator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/qfa-01-options-greeks.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: Black-Scholes options pricer with full Greeks (delta, gamma, theta, vega, rho). Outputs: d1, d2, delta, delta_risk_band, gamma, price, rho_per_pct, theta_per_day, type, vega_per_pct. Output schema: call describe_tool("compute_options_greeks").

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: div_yield, expiry_days, rate, spot, strike, type, vol. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive behavior, but the description adds meaningful context: transient processing, no storage/logging/retention, synthetic-input guidance, and AP2 artifact export with execution_hash. It also explains server-side versus browser-delegated compute behavior. It does not cover error handling or edge cases, so it falls short of 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and front-loaded with repetitive boilerplate, including duplicated "deterministic OpenChainGraph compute node" phrasing, a URL, and an opaque FV-status hash. The actual purpose appears only at the end under "Summary," violating front-loading. Several sentences do not earn their place in a tool definition.

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?

With no output schema, the description usefully lists the returned fields and their units (theta_per_day, vega_per_pct, rho_per_pct), and it covers privacy, compute modes, and downstream usage. It does not clarify units for the policy_parameters inputs (for example, whether vol is decimal or percent), which is a gap for a financial calculator. Overall it is sufficiently complete but not exhaustive.

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 input schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds no additional parameter meaning beyond restating default compute behavior and listing output fields, which are not inputs. Baseline 3 is appropriate when the schema carries parameter semantics.

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 a specific verb and resource: "Black-Scholes options pricer with full Greeks (delta, gamma, theta, vega, rho)." That makes the tool's function unambiguous, and no sibling tool appears to compute option Greeks. However, the purpose is buried at the end behind extensive boilerplate, which weakens first-glance clarity.

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 implied by the name and the summary, but there is no explicit when-to-use or when-not-to-use guidance. The "Output feeds" line identifies downstream consumers rather than selection criteria for this tool. Compute-mode routing is described, but that is operational guidance rather than tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_orsa_readiness_packORSA Readiness PackC
Read-onlyIdempotent
Inspect

ORSA Readiness Pack: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/679-orsa-readiness-pack.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, and the description does not contradict them. It adds genuine behavioral context beyond the annotations: transient server-side processing on Cloudflare Workers with no storage or logging, fallback to a browser delegation URL for gpu:true nodes, determinism, and emission of an AP2 artifact carrying execution_hash for chain provenance.

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?

The text leads with infrastructure boilerplate ('OpenChainGraph compute node (compliance_control). Deterministic OpenChainGraph compute node.') before anything about ORSA, repeats itself, and closes with a marketing URL and a long fv-status hash path that carry no actionable value for tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool whose real payload is a free-form nested policy_parameters object with no output schema, the description should describe what the pack computes and what inputs the decision function expects. Instead it covers plumbing (compute modes, privacy, artifact export) and leaves the core domain behavior and required inputs entirely unspecified.

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 baseline is 3. The description's compute-mode explanation largely duplicates the enum documentation, and it explicitly punts on the most important parameter by saying only 'See the tool's manifest for field names' for policy_parameters — no added semantics there.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Beyond the name, the description only says it is a 'deterministic OpenChainGraph compute node (compliance_control)' — a generic platform label that restates the tool name rather than stating what ORSA readiness is assessed or what the pack contains. An agent cannot tell from this text what the decision function evaluates or how it differs from the many other assess_*/run_*_readiness siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no named alternatives; the only usage instruction is 'use synthetic or anonymised inputs only', which is a data-handling constraint, not selection guidance. The compute-mode discussion is operational detail already covered by the schema enum, not a statement of when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_pack_dependency_mapPack Dependency MapB
Read-onlyIdempotent
Inspect

Pack Dependency Map: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-689-pack-dependency-map.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.

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". See the tool's manifest for field names.

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely non-obvious behavior beyond that: server-side kernel execution on Cloudflare Workers versus forced browser delegation for gpu:true nodes, transient/no-retention processing of inputs, and an AP2 artifact export carrying execution_hash for provenance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded correctly, but the body is a dense run-on that mixes execution-mode mechanics, privacy boilerplate, and an FV-status receipt URL with a long caveat about it being a snapshot. The FV-status sentence and parts of the privacy paragraph do not help an agent decide or call the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the only return-value information is that an AP2 artifact with execution_hash is exported; what the dependency map itself contains, and what the response looks like for auto/server versus browser-delegated calls, is left implicit. For a zero-required-param compute node the description is usable but leaves the calling agent guessing at the result shape.

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 baseline is 3. The description's compute-mode paragraph largely duplicates the 'compute' enum description already in the schema and says nothing about parent_hashes, parent_tool_ids pairing, or policy_parameters field naming beyond a passing 'chain provenance' and 'decision function' reference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens by restating the title ('Pack Dependency Map') and then labels it an 'OpenChainGraph compute node (compliance_control)' without ever saying what a pack dependency map actually represents or what is computed. An agent learns the domain and artifact type but not the resource semantics, so it cannot distinguish this from other compute_* compliance nodes on content alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this versus siblings like compute_verify_receipt, emit_chaingraph_artifact, or build_chaingraph, and no prerequisites or exclusions. The only routing guidance is the 'compute:auto/browser' mode choice, which is parameter-level behavior rather than tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_parametric_trigger_payoutParametric Trigger Payout CalculatorA
Read-onlyIdempotent
Inspect

Parametric Trigger Payout Calculator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-252-validate-cat-bond-trigger-terms. Open at: https://ainumbers.co/chaingraph/art-251-compute-parametric-trigger-payout.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: Evaluates parametric insurance triggers and computes payout amounts. Outputs: anchor_surface, coverage_amount, index_value, not_legal_advice, parametric_limit, payout_amount, pii_note, regulatory_basis, table_source, table_version, threshold_used, tier_matched_index, trigger_fraction, trigger_hit, trigger_receipt, trigger_type_used. Output schema: call describe_tool("compute_parametric_trigger_payout").

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: coverage_amount, index_value, max_index, parametric_limit, threshold, tier_table, trigger_type. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower; the description still adds real value by disclosing the compute-mode split (server kernel vs browser delegation URL for gpu:true), the transient-processing/no-logging retention policy, and the AP2 artifact with execution_hash. It does not cover latency, rate limits, or failure modes of the delegation path.

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?

The definition opens with redundant name restatement ('Parametric Trigger Payout Calculator: OpenChainGraph compute node... Deterministic OpenChainGraph compute node') and includes a long URL plus an FV-status hash and snapshot disclaimer that do not help an agent decide or invoke. The genuinely useful purpose statement and output list appear only after this preamble.

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?

All four parameters are documented, the required policy_parameters keys are enumerated, the full output field list is given (no output schema exists, so this compensates), and the downstream chaining target is named. Missing: what a trigger_hit=false result looks like operationally and how to handle the browser delegation response.

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 the compute-mode text in the description largely restates the enum's own documentation. The policy_parameters required-key list and 'unknown keys are refused' note are useful but also present in the schema. Baseline 3 applies since the schema carries the semantics.

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 description states a specific verb+resource: 'Evaluates parametric insurance triggers and computes payout amounts', plus a concrete output list (payout_amount, trigger_hit, tier_matched_index). It also names the downstream consumer, validate_cat_bond_trigger_terms, which helps separate it from validation-only siblings. It loses a point because the actual purpose sentence is buried after infrastructure boilerplate rather than front-loaded.

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 implied through the upstream/downstream chain hint ('Output feeds: art-252-validate-cat-bond-trigger-terms') and the synthetic-inputs-only constraint. There is no explicit statement of when to choose this over alternatives such as derive_parametric_index_from_receipts or validate_cat_bond_trigger_terms. The agent must infer the workflow position.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_paypal_responsePayPal Dispute Deadline & EvidenceC
Read-onlyIdempotent
Inspect

PayPal Dispute Deadline & Evidence: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-776-paypal-dispute-deadline-evidence.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: PayPal dispute deadline calculator and evidence-bundle producer (PAYPAL-DISPUTE-DEADLINE-NODE-1, hub proposal PAYPAL-HUB-PROPOSALS-2026-10-24 row 9 as amended). Output schema: call describe_tool("compute_paypal_response").

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: dispute_reason, lifecycle_stage, funding_source, dispute_create_time, as_of. Unknown keys are refused.

TDQS

C2.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 the description adds real value on top: determinism, transient server-side processing with no storage or logging, synthetic-inputs-only requirement, AP2 artifact export with execution_hash, and an offline-verifiable FV-status receipt. It stops short of describing failure modes or what happens on kernel/parameter rejection, but the data-handling and provenance disclosures go well 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated and badly back-loaded: identifier soup, a repeated compute-mode paragraph mirroring the schema, a raw artifact URL, and a hex receipt path all precede the one sentence that explains the tool. Repetition of structured-field content and the embedded URL/hash noise cost readability rather than earning their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must carry return-value information; it only says an AP2 artifact with execution_hash is exported and defers to describe_tool. For a deadline calculator whose whole point is producing computed dates and an evidence bundle, the description never sketches the result shape. Annotations and the rich policy_parameters schema cover the rest adequately.

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%, including a full explanation of the compute enum and a required-key list on policy_parameters, so the schema carries the parameter burden. The description largely duplicates the compute-mode text already in the schema and adds no semantics for policy_parameters fields such as as_of, dispute_create_time, or evidence_on_hand. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The actual purpose only appears in the final "Summary:" sentence ("PayPal dispute deadline calculator and evidence-bundle producer"), which is specific. The opening sentences instead restate the title ("PayPal Dispute Deadline & Evidence: OpenChainGraph compute node") and describe generic node plumbing, so the reader must scan to the end to learn what is computed. No contrast with similar siblings (e.g. build_claim_dispute_bundle, servicing_compliance_clock, sweep_docket_deadlines) is offered.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a data-handling constraint ("Use synthetic or anonymised inputs only") and a compute-mode rule, but nothing about when this tool is the right choice versus the many adjacent dispute/clock/evidence-pack tools. The closest thing to guidance is a redirect to describe_tool for the output schema, which is a lookup hint rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_perp_fundingPerp Funding and Carry CalculatorB
Read-onlyIdempotent
Inspect

Perp Funding and Carry Calculator: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-270-perp-funding-carry.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: Computes perpetual futures funding rates, compound annual APR, and cross-venue funding differential arbitrage (Hyperliquid hourly vs Binance 8-hour cadence). Outputs: annualized_basis_pct, asset, basis_pct, basis_perp_price, basis_spot_price, basis_usd, cadence_hours, compound_annualized_rate_pct, cross_venue_arb, delta_neutral_carry, funding_rate_pct_per_period, hl_funding_cap_pct_per_hour, hl_typical_rate_note, hourly_rate_pct, not_financial_advice, pii_note, regulatory_basis, simple_annualized_rate_pct, table_source, table_version, venue. Output schema: call describe_tool("compute_perp_funding").

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: asset, basis_perp_price, cadence_hours, defi_yield_pct_annual, taker_fee_pct, venue, venue2, venue2_cadence_hours, venue2_taker_fee_pct. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world. The description adds genuinely new behavioral facts: deterministic execution with a registered server-side kernel, transient processing with no storage or logging, a synthetic/anonymised-inputs constraint, and export of an AP2 artifact carrying execution_hash for provenance. The browser-delegation fallback behavior is also disclosed, though no pagination or error behavior is described.

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?

The actual purpose appears roughly two-thirds of the way in, after compute-binding, privacy, and provenance boilerplate. There is redundant phrasing (the 'OpenChainGraph compute node' phrase is restated immediately) and the FV-status URL and full output field dump pad the text further.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the returned fields (compound_annualized_rate_pct, cross_venue_arb, delta_neutral_carry, hf_funding_cap_pct_per_hour, regulatory_basis) usefully signals return shape. But the fields are named without meaning or units, and the description never explains the required policy inputs well enough for an agent to construct a correct arbitrage call, leaving a real gap for a nested-object tool.

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%, including the enum and required policy_parameters keys, so the baseline is 3. The description adds only marginal meaning: the Hyperliquid-hourly vs Binance-8-hour cadence framing hints at what venue2 and the cadence parameters model, but it does not explain the arbitrage inputs (taker_fee_pct, defi_yield_pct_annual, funding_rate_pct_per_period) beyond the schema.

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 Summary sentence gives a specific verb and resource: computes perpetual futures funding rates, compound annual APR, and cross-venue funding differential arbitrage with named venues (Hyperliquid hourly vs Binance 8-hour). However, it is buried after a large block of platform boilerplate, and it never distinguishes itself from the closely named sibling compute_perp_funding_implied_yield.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over compute_perp_funding_implied_yield, compute_perp_margin, model_perp_position, or estimate_cross_venue_margin_capital. The only conditional guidance is about compute-mode routing (auto/server/browser), which is invocation mechanics, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_perp_funding_implied_yieldPerp Funding Implied YieldC
Read-onlyIdempotent
Inspect

Perp Funding Implied Yield: OpenChainGraph compute node (perp_funding_rate). 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. Open at: https://ainumbers.co/chaingraph/art-654-perp-funding-implied-yield.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: Recomputes a perpetual-contract funding rate and its simple-annualized implied yield from caller-declared inputs, for either of two declared funding-mechanism variants: offshore-8h-twap (a continuous TWAP-sampled premium-index-plus-interest-rate-differential-clamp formula, the shape observed on o... Outputs: chained, clamp_pct, disclaimer, domain_errors, funding_mechanism, funding_payment, funding_payment_direction, funding_rate_pct, implied_annual_funding_yield_pct, index_price, interest_rate_pct, interval_hours, mark_price, mechanism_note, periods_per_year, position_notional, position_side, premium_index_pct, prev_funding_hash, scope_note, sign_convention_note, venue. Output schema: call describe_tool("compute_perp_funding_implied_yield").

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: clamp_pct, funding_mechanism, index_price, interest_rate_pct, interval_hours, mark_price, position_notional, position_side, premium_index_pct, prev_funding_hash, venue. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuine behavioral facts beyond that — deterministic execution, server-vs-browser delegation semantics, transient non-retained inputs, and an AP2 export carrying execution_hash — but buries them in boilerplate and leaves the actual formula truncated mid-sentence.

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?

The description leads with provenance/telemetry boilerplate (Cloudflare Workers, FV-status hashes, artifact URLs) before reaching the actual function, and the one substantive sentence ends mid-word ('the shape observed on o...'). Signal is buried under infrastructure noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The enumerated output field list partially compensates for the missing output schema, and compute-chain semantics are explained. But for a quantitative tool with a nested 11-key parameter object, the funding-mechanism definition is cut off, leaving an agent unable to know what the formula actually requires.

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%, so the baseline is 3, and the description does list the policy_parameters keys as outputs. But several nested properties (venue, position_side, funding_mechanism, prev_funding_hash) are untyped schema entries with no descriptions, and the description supplies no semantics for them, so it adds nothing over the schema.

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 summary sentence gives a specific verb+resource: recomputes a perpetual-contract funding rate and its simple-annualized implied yield from caller-declared inputs, with two named mechanism variants. However, it never distinguishes this from siblings like compute_perp_funding, compute_perp_margin, or model_perp_position, which sit squarely in the same domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this node versus the closely-named compute_perp_funding sibling, nor on prerequisites (e.g. that prev_funding_hash must come from a prior artifact for chaining to be meaningful). The compute-mode paragraph describes an infra switch, not usage selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_perp_marginPerp Margin and Liquidation CalculatorB
Read-onlyIdempotent
Inspect

Perp Margin and Liquidation Calculator: OpenChainGraph compute node (derivatives_margin_health). 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. Output feeds: art-214-perp-position-lifecycle. Open at: https://ainumbers.co/chaingraph/art-213-perp-liquidation-calculator.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: Computes liquidation price and margin health for perpetual futures positions. Outputs: buffer, buffer_pct, cross_margin_efficiency, disclaimer, distance_to_liq_pct, entry_price, health, imr_pct, initial_margin, leverage, liq_price, maintenance_threshold, margin_balance, mark_price, mark_price_note, mmr_pct, mode, notional, portfolio_margin_note, position_size, side, unrealized_pnl, venue. Output schema: call describe_tool("compute_perp_margin").

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: mark_price, mmr_pct, mode, side, venue. Unknown keys are refused.

TDQS

B3.4/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 the description adds genuinely new behavioral context: deterministic execution, server-side kernel on Cloudflare Workers with browser delegation fallback for gpu:true, transient non-retained input processing, and an AP2 export carrying execution_hash for chain provenance. These are consistent with the read-only annotations rather than contradicting them; only error behavior and latency are unstated.

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?

The name/title is restated twice ("Perp Margin and Liquidation Calculator" then "OpenChainGraph compute node... Deterministic OpenChainGraph compute node"), and a full FV-status SHA-256 URL plus provenance prose consume substantial space before the actual purpose appears near the end. Front-loading is inverted: the one sentence an agent most needs is last.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Enough is present to call the tool correctly — parameter semantics come from a fully documented schema, and the 24-name output field list compensates for the absent output schema. What is missing is the piece a complex namespace demands: how this calculator relates to the other perp-margin and derivatives-workbench tools, and what the token cost/latency of the browser delegation path is.

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 explains compute, parent_hashes, parent_tool_ids and the nested policy_parameters including required keys and unknown-key refusal. The description restates the compute-mode semantics but adds nothing about the policy_parameters fields (mark_price, mmr_pct, side, venue, leverage) beyond what the schema provides, so 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?

The description eventually states a specific verb+resource: "Computes liquidation price and margin health for perpetual futures positions," plus a concrete output list (liq_price, margin_balance, health). However, that sentence is buried after several paragraphs of boilerplate, and there is no differentiation from close siblings such as compute_derivatives_margin_workbench, model_perp_position, or estimate_cross_margin_benefit.

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?

It gives operational guidance on compute mode (auto/server/browser, gpu:true always delegates) and a constraint ("Use synthetic or anonymised inputs only"), which helps invoke it correctly. But it never says when to pick this tool over the margin/perp siblings that appear in the same namespace, so tool selection remains implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_por_liabilities_compositePoR Liabilities ComposerA
Read-onlyIdempotent
Inspect

PoR Liabilities Composer: OpenChainGraph compute node (compliance_mandate). 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-280-reserve-proof-verifier. Open at: https://ainumbers.co/chaingraph/art-540-por-liabilities-composer.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: Composes a caller-restated art-280-reserve-proof-verifier inclusion result (soft-dep: inclusion_verified, computed_root.sum) with a caller-supplied aggregate reported_total_liabilities_musd figure. Outputs: composite_determination, reserve_to_liability_ratio, inclusion_verified, computed_root, reported_total_liabilities_musd, liabilities_attestation_source, por_input_supplied, not_proven, formula, note, regulatory_framework. Output schema: call describe_tool("compute_por_liabilities_composite").

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". Unknown keys are refused.

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 and non-destructive, so the safety profile is covered. The description adds real context beyond that: deterministic execution, the auto/server/browser delegation behaviour for gpu:false versus gpu:true nodes, transient non-retention of inputs, the AP2 artifact with execution_hash for provenance, and upstream artifact licensing. It gives no sense of latency or size limits, so it is not complete.

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?

The substantive content is front-loaded, but the middle is padded with boilerplate compute-mode and transient-processing prose that repeats the schema, plus an inlined URL and a 64-character FV-status hash that an agent cannot act on. Those do not earn their place and dilute the routing information.

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?

There is no output schema, but the description enumerates all twelve returned fields, names the upstream artifact it consumes, and documents the compute-mode behaviour and the nesting inside policy_parameters. That is enough for an agent to call it correctly; only the exact formula semantics and the meaning of not_proven are left thin.

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 the schema already documents compute, parent_hashes, parent_tool_ids and the nested policy_parameters including the unknown-key refusal. The description adds only the soft-dependency detail (inclusion_verified, computed_root.sum) and the output field list, which is useful but modest. Baseline 3 is correct when the schema does the heavy lifting.

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 summary names a concrete operation: it composes a caller-restated art-280 inclusion result with a caller-supplied aggregate reported_total_liabilities_musd figure and outputs a composite determination and reserve-to-liability ratio. That is a specific verb plus resource, far beyond restating the title. It stops short of 5 only because the discriminating line against near neighbours like verify_proof_of_reserves_consistency or aggregate_summa_mst_liabilities is implied by the input list rather than stated.

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 implied by the stated prerequisite (it consumes an upstream artifact from art-280-reserve-proof-verifier) and by the compute-mode rules, which tell the agent when server versus browser execution happens. However, there is no explicit when-to-use / when-not-to-use guidance and no named alternative among the many sibling PoR and reserve tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_portfolio_varPortfolio Covariance & VaR EngineB
Read-onlyIdempotent
Inspect

Portfolio Covariance & VaR Engine: OpenChainGraph compute node (risk_control). 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: sim-03-basel-rwa-scenario-modeler. Output feeds: qfa-03-stress-test-engine, rca-01-frtb-ima-pre-validator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/qfa-02-portfolio-var-engine.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: VaR and Expected Shortfall: Historical Simulation, Parametric (variance-covariance), and Monte Carlo with Cholesky 2-factor correlation structure. Outputs: compliance_flags, conf_level, es_dollar_mm, hist_var_pct, holding_period, mc_es_pct, mc_var_pct, n_paths, param_es_pct, param_var_pct, portfolio_vol_hp, var_dollar_mm, verdict. Output schema: call describe_tool("compute_portfolio_var").

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: avg_correlation, confidence_level, holding_period_days, mc_sims, seed. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds meaningful context: server-vs-browser compute delegation, transient input processing with no retention, AP2 artifact export with execution_hash, and an FV-status snapshot caveat. It does not cover permissions or rate limits, but the added behavioral detail is substantial.

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?

The description is front-loaded with the tool's purpose, but it is bloated with chain metadata, a URL, a long FV-status hash, and provenance boilerplate that do not help an agent invoke the tool correctly. Many sentences do not earn their 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?

For a complex VaR engine with no output schema, the description usefully names the output fields (compliance_flags, es_dollar_mm, var_dollar_mm, verdict, etc.) and explains compute modes, provenance, and upstream/downstream chain links. It is reasonably complete, though method/parameter interactions remain delegated to the schema.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates compute-mode behavior and output fields but adds little parameter-level meaning beyond the schema.

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 compute resource: portfolio VaR and Expected Shortfall using historical simulation, parametric, and Monte Carlo methods. The purpose is clear, but it does not distinguish itself from siblings such as simulate_var_monte_carlo or compute_var_backtest_traffic_light.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides execution-mode details and an input-privacy constraint, but never states when to choose this tool over alternatives or when not to use it. Upstream and downstream artifact references describe chain context, not tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_pqc_deadline_ladderCNSA 2.0 Deadline Ladder CalculatorB
Read-onlyIdempotent
Inspect

CNSA 2.0 Deadline Ladder Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-387-pqc-deadline-ladder-calculator.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: Per-row CNSA 2.0 post-quantum migration deadline for a supplied system inventory (system class, asset type, deployment date): applicable deadline, days remaining, the earliest binding constraint, and a FIPS 140-2 Historical-list exposure flag. Outputs: note, policy_deadlines_used, reference_date, rows, summary. Output schema: call describe_tool("compute_pqc_deadline_ladder").

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: inventory, policy_deadlines, reference_date. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, and the description adds genuinely new context: server-vs-browser compute delegation rules, transient processing with no storage or logging, and an AP2 artifact carrying execution_hash for chain provenance. This goes well beyond what the annotations declare, though much of it is generic node boilerplate rather than tool-specific 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?

The most important sentence — what the tool actually computes — is placed at the very end after an opening paragraph of chain-node infrastructure, a privacy notice, a URL, and an FV-status receipt path. For a straightforward calculator, this is significantly over-sized and poorly front-loaded.

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?

Despite the padding, the definition covers the practical essentials: what is computed, the input fields that matter, the compute modes, the privacy posture, and an enumerated list of output fields (note, policy_deadlines_used, reference_date, rows, summary) that compensates for the absent output schema. An agent could call it correctly, though the irrelevant deployment metadata wastes attention.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds only a light gloss by naming the inventory fields (system class, asset type, deployment date) that feed the computation; it does not explain the shape of policy_deadlines or reference_date beyond the schema's own text.

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 final summary sentence is precise: it computes a per-row CNSA 2.0 post-quantum migration deadline from a system inventory, returning applicable deadline, days remaining, binding constraint, and FIPS 140-2 exposure flag. That is a specific verb+resource. However, it never distinguishes itself from nearby siblings such as run_pqc_timeline_fit or check_iso20022_pqc_readiness, and the actual purpose is buried behind infrastructure boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over run_pqc_timeline_fit or the other PQC-adjacent siblings, and no exclusions. The only usage constraint is the privacy advisory ('Use synthetic or anonymised inputs only'), which addresses input hygiene rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_proxy_voting_recordProxy Voting RecordC
Read-onlyIdempotent
Inspect

Proxy Voting Record: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/676-proxy-voting-record.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.

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". See the tool's manifest for field names.

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real value on top: inputs are processed transiently and never stored or logged, and the tool exports an AP2 artifact with execution_hash for chain provenance and yields a browser delegation URL under compute:"browser". It still says nothing about what the computation returns or any domain-specific 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?

Front-loaded with name and category, but the body is repeated infrastructure boilerplate followed by a raw a-numbers URL and a 64-character FV-status hash that an agent cannot act on. The one sentence that would earn its place — what this node computes — is absent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a nested open object input and no output schema, the description never explains the decision function, expected policy_parameters fields, or result shape. Provenance and privacy behavior are covered, but the substantive information an agent needs to invoke it correctly 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%, so the compute, parent_hashes, parent_tool_ids and policy_parameters fields are already documented in the schema; the description merely restates the compute-mode semantics. It adds nothing about the policy_parameters contents, deferring to an external manifest that the agent cannot see, which is the field that actually matters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The text restates the name ("Proxy Voting Record: OpenChainGraph compute node (compliance_control)") and then describes generic compute infrastructure rather than the specific verb+resource being computed. Nothing explains what inputs a proxy voting record takes or what it produces, and no sibling compute_* tool is differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is operational (compute:"auto" vs "browser", gpu:true delegates) plus a data-hygiene note to use synthetic inputs. There is no statement of when an agent should pick this tool over the many other compliance/compute tools, and no prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_pta_verifierPta VerifierB
Read-onlyIdempotent
Inspect

Pta Verifier: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/mcp.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: Verifies a plain-text-accounting journal supplied as synthetic text: parses dated transactions and their indented postings, checks each transaction's postings sum to zero (double-entry balance), checks any inline running-balance assertions against computed account balances, builds a Merkle root o... Outputs: accounts, balance_assertion_failures, balance_assertions_checked, balanced_transaction_count, evidence_envelope, imbalanced_transactions, merkle_root, parsed_transaction_count, unsupported_directives.

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: journal_text. Unknown keys are refused.

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world, so the bar is lower. The description still adds real behavioral context beyond them: inputs are processed transiently and never stored or logged, an AP2 artifact with execution_hash is exported for chain provenance, and gpu:true nodes always delegate to the browser. The main flaw is that the compute-mode explanation largely duplicates the schema's own parameter description.

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?

Badly front-loaded: the first several sentences are generic OpenChainGraph/Cloudflare infrastructure boilerplate that applies to every node, and an opaque FV-status hash URL consumes significant space without helping an agent call the tool. The actual tool-specific content is truncated and placed last, so the agent must read past noise to find the signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so listing outputs (accounts, merkle_root, imbalanced_transactions, etc.) is genuinely useful, and the input-sensitivity and provenance notes round it out. But the summary is cut off, and nothing explains the required journal_text format — date syntax, posting indentation rules, running-balance assertion syntax — which an agent needs to produce a valid call.

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 baseline is 3. The description restates the compute-mode semantics already documented in the schema and only marginally extends meaning elsewhere ('exports an AP2 artifact ... for chain provenance' hints at parent_hashes usage). The critical journal_text parameter gets no format, syntax, or example detail beyond 'plain-text-accounting journal'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The core purpose is stated specifically: it verifies a plain-text-accounting journal, checks postings sum to zero, and validates running-balance assertions against computed balances. However, it is buried after several sentences of infrastructure boilerplate and the key summary sentence is truncated mid-word ('builds a Merkle root o...'), leaving the purpose partly unresolved. It reads as one of many near-identical compute_* nodes rather than clearly distinguishing itself from siblings like verify_merkle_batch or compute_verify_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?

There is a real constraint stated ('Use synthetic or anonymised inputs only') and a rule about compute mode selection, which is genuine guidance. But there is no when-to-use vs. when-not guidance relative to the hundreds of sibling verify_*/compute_* tools, and no stated preconditions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_pt_yt_yieldPendle Yield Tokenization Analyzer (PT/YT)A
Read-onlyIdempotent
Inspect

Pendle Yield Tokenization Analyzer (PT/YT): OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-273-pendle-yield.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: Decomposes Pendle Finance yield tokenization: PT implied fixed yield, YT leverage and break-even APY, PT+YT=1 invariant check, and time-to-maturity analytics. Outputs: days_to_maturity, invariant_holds, investment_usd, not_financial_advice, pii_note, pt_discount_pct, pt_implied_fixed_yield_pct, pt_price, pt_profit_at_maturity_usd, pt_return_to_maturity_pct, pt_simple_apr_pct, pt_units_bought, pt_yt_sum, regulatory_basis, table_source, table_version, underlying_apy_pct, years_to_maturity, yt_break_even_apy_pct, yt_leverage, yt_levered_apy_pct, yt_margin_of_safety_pct, yt_net_pnl_if_underlying_stable_usd, yt_payout_if_underlying_stable_usd, yt_price, yt_profitable_at_current, yt_units_bought. Output schema: call describe_tool("compute_pt_yt_yield").

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: yt_price. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, and closed-world behavior. The description adds substantive context beyond that: deterministic server-side vs browser delegation, transient non-retained inputs, and AP2 artifact/execution_hash export. It does not contradict the annotations, though it omits auth or rate-limit details.

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?

The definition is long and front-loads generic OpenChainGraph boilerplate; 'OpenChainGraph compute node' is repeated, and URL/FV-status/snapshot text consumes space before the actual summary. The 28-field output list is relevant but presented as an undifferentiated dump, so structure and conciseness are weak.

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?

For a complex analytics compute node with no output schema, the description supplies the domain purpose, compute-mode behavior, privacy/retention stance, provenance artifact, and an output-field inventory. It also points to describe_tool for the output schema. Remaining gaps are mainly explanations of individual outputs rather than blockers for correct invocation.

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 the schema already documents compute modes, parent_hashes, parent_tool_ids, and policy_parameters including the required yt_price. The description mostly restates compute-mode behavior and later lists output field names; it adds little parameter meaning beyond what the schema provides, 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?

The summary sentence states a specific analytical operation on a specific domain: decomposes Pendle Finance yield tokenization into PT implied fixed yield, YT leverage and break-even APY, the PT+YT=1 invariant, and time-to-maturity analytics. That clearly differentiates it from generic yield/breakeven siblings, but the actual purpose is buried after generic node boilerplate and no sibling is named.

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 description gives operational guidance for the compute parameter and a privacy constraint ('Use synthetic or anonymised inputs only'), but never states when to use this tool rather than adjacent tools such as compute_breakeven or assess_defi_lending. Usage is inferred from the Pendle-specific purpose rather than explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_raroc_loan_priceRAROC Loan Pricing CalculatorB
Read-onlyIdempotent
Inspect

RAROC Loan Pricing Calculator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-362-compute-raroc-loan-price.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: Risk-Adjusted Return on Capital (RAROC) loan pricing per Basel II BCBS 128 (2006) / Basel III BCBS 189 (2010) simplified public approximation of the IRB economic-capital formula (single-factor Vasicek model at 99.9% confidence, or the SA risk-weight bucket table). Outputs: break_even_gap_bps, break_even_spread_bps, capital_approach, drawn_musd, economic_capital_musd, expected_loss_musd, funding_cost_musd, gross_revenue_musd, hurdle_rate_pct, net_income_after_tax_musd, net_income_before_tax_musd, note, operating_cost_musd, raroc_pct, regulatory_basis, undrawn_musd, value_creating, value_spread_pct. Output schema: call describe_tool("compute_raroc_loan_price").

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: capital_approach. Unknown keys are refused.

TDQS

B3.4/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 the description adds genuinely new behavioral facts: inputs are processed transiently and not stored, logged, or retained; execution is deterministic and may be delegated to the browser with a delegation URL; an AP2 artifact with execution_hash is exported for provenance; and unknown keys are refused. This is well beyond what the annotations convey, though the FV-status/snapshot paragraph is largely opaque.

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?

The text is not front-loaded: purpose appears after compute-binding and privacy boilerplate, and a large block of URL and FV-status receipt text ('a snapshot, not a subscription; this receipt verifies offline regardless of whether that file is ever fetched') does no work for tool selection. The output-field list is defensible given no output schema exists, but overall the entry is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the return fields (raroc_pct, economic_capital_musd, value_creating, etc.) is valuable and the privacy/determinism behavior is covered. The gap is the substantive input block: 15 nested policy_parameters carry no per-field meaning or units in either schema or description, and the required capital_approach has no documented allowed values, so an agent can construct the call only by guessing field conventions.

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 compute, parent_hashes, and parent_tool_ids, and the description mostly restates the compute-mode semantics. It adds no interpretation of the nested policy_parameters fields (pd_pct, lgd_pct, ead_musd, margin_bps, etc.), and capital_approach — the one required field — is an untyped empty schema in the JSON with no enumeration; the description's mention of 'Vasicek model ... or the SA risk-weight bucket table' only indirectly hints at its accepted values.

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 'Summary:' section names a specific verb and resource — 'Risk-Adjusted Return on Capital (RAROC) loan pricing per Basel II BCBS 128 / Basel III BCBS 189' — with the method (single-factor Vasicek at 99.9% or SA risk-weight buckets), which clearly separates it from siblings like compute_rwa_scenarios or compute_large_exposures_limit. The drawback is placement: the actual purpose sits mid-description behind several sentences of ChainGraph compute-binding boilerplate.

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 description gives usage rules for compute mode ('auto' vs 'browser') and a hard constraint ('Use synthetic or anonymised inputs only'), which are real operating instructions. However, it never says when to pick this tool over alternative capital/pricing tools in the sibling list, nor what inputs must be prepared (e.g., that capital_approach is required), so selection guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_rbc_action_levelNAIC RBC Action Level CalculatorB
Read-onlyIdempotent
Inspect

NAIC RBC Action Level Calculator: OpenChainGraph compute node (compliance_mandate). 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-253-run-illustration-selfsupport-test. Output feeds: art-257-calculate-claims-stp-economics. Open at: https://ainumbers.co/chaingraph/art-254-compute-rbc-action-level.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: Computes NAIC Risk-Based Capital (RBC) action level classification for US P&C, life, and health insurers. Outputs: action_level_code, action_level_description, action_level_label, action_levels_reference, authorized_control_level, headroom_to_next_level_pct, insurer_type, not_legal_advice, pii_note, prior_year_rbc_ratio, rbc_ratio_pct, regulatory_basis, table_source, table_version, threshold_breached_pct, total_adjusted_capital, trend_test_applicable, trend_test_triggered, two_year_rbc_ratio. Output schema: call describe_tool("compute_rbc_action_level").

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: authorized_control_level, insurer_type, prior_year_rbc_ratio, total_adjusted_capital, two_year_rbc_ratio. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations it adds real context: inputs are processed transiently and not stored or logged, an AP2 artifact with execution_hash is exported for chain provenance, and it declares which upstream artifact it consumes and which downstream tool consumes its output. It also enumerates the ~20 output fields, which matters because there is no output schema. Repeated compute-mode text duplicates the schema rather than adding to it.

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?

The text is dominated by OpenChainGraph boilerplate (compute binding, FV-status receipt hash, artifact URL) that precedes the actual purpose. The one-sentence summary of what the tool computes arrives near the end, which inverts front-loading. Several clauses restate the schema verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the enumerated output fields and the pointer to describe_tool are genuinely useful, and privacy/chaining behavior is covered. What's missing is any explanation of the input domain — required policy parameters and how the RBC ratio thresholds are applied — so an agent still cannot reason about the inputs from the description alone.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters nested requirement list. The description's compute-mode explanation is a verbatim restatement of the schema field description and adds nothing, and it says nothing about what the policy_parameters values mean or where thresholds come from. 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?

The 'Summary' sentence gives a specific verb and resource: computes NAIC RBC action level classification for US P&C, life and health insurers. However, it is buried at the end behind chain-plumbing boilerplate, and it never distinguishes itself from the sibling compute_rbc_action_level_private or calculate_naic_clo_rbc_factor, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to reach for this tool versus the private variant or the other RBC siblings. The only guidance-like sentence is the input constraint 'Use synthetic or anonymised inputs only', which is a data-handling rule, not a use case selector. The upstream/downstream artifact ids hint at chain position but don't tell an agent when to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_rbc_action_level_privatePrivate-Input NAIC RBC Action LevelA
Read-onlyIdempotent
Inspect

Private-Input NAIC RBC Action Level: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-414-compute-rbc-action-level-private.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: Computes the NAIC Risk-Based Capital action-level tier from a privately held Total Adjusted Capital and Authorized Control Level RBC, emitting only the tier (NO_ACTION through MANDATORY_CONTROL) without disclosing the underlying dollar figures. Outputs: action_level_code, action_level_description, action_level_label, not_legal_advice, pii_note, regulatory_basis, table_version. Output schema: call describe_tool("compute_rbc_action_level_private").

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: table_version. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations: explains compute:'auto' server-side execution on Cloudflare Workers, the browser delegation fallback for gpu:true, transient processing with no storage/logging/retention, and AP2 artifact emission with execution_hash. The only gaps are what happens on unknown/invalid policy keys beyond 'refused' and whether the FV-status receipt is a live check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is buried after a repetitive preamble that says 'Deterministic OpenChainGraph compute node' twice, plus a long URL and a full FV-status hash path. Three paragraphs do the work of two sentences plus a privacy note; the useful summary is at the end rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output field list and privacy/compute behavior are well covered, and there is no output schema to explain. However, the tool claims to compute from TAC and ACL RBC while the schema only documents table_version under policy_parameters, leaving the actual input path for the private figures unexplained.

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%, so the documented compute, parent_hashes, parent_tool_ids and policy_parameters are already fully described in structured fields; the description mostly restates the compute modes. It notably does not explain how the privately held TAC and ACL RBC figures are supplied, which is the central input concern.

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 (compute NAIC RBC action-level tier) and precisely scopes the output (only the tier, NO_ACTION through MANDATORY_CONTROL, without disclosing dollar figures). This distinguishes it from the public sibling compute_rbc_action_level by naming the privacy guarantee.

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 description only implies usage guidance: 'Use synthetic or anonymised inputs only' and the private-input framing imply when to pick this over a public variant, but no alternative tool is named and no explicit when-to-use/when-not statement is given. An agent must infer the selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_recordkeeping_completeness_mapperRecordkeeping Completeness MapperC
Read-onlyIdempotent
Inspect

Recordkeeping Completeness Mapper: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/tools/675-recordkeeping-completeness-mapper.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses meaningful behaviour: execution is deterministic, gpu:true nodes always delegate to the browser, inputs are processed transiently and not stored/logged/retained, and the call exports an AP2 artifact carrying an execution_hash for chain provenance. These are real operational facts the annotations do not convey, though it still omits any description of the computation itself or error/failure behaviour.

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?

It is front-loaded with a title restatement followed by infrastructure boilerplate, a marketing URL, and a long fv-status receipt path, while the single most important fact — what the mapper computes — is absent. Volume is high but poorly allocated, with several sentences that do not help an agent decide or invoke.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compute node with a nested policy_parameters object, an enum, and no output schema, the description should explain the decision function and what the returned AP2 artifact contains beyond execution_hash. It covers provenance and data handling but leaves the core semantics of the computation and the policy_parameters payload undocumented.

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%, so the schema already documents all four parameters, and the description's compute-mode sentence largely mirrors the schema's own 'compute' description. The parent_hashes/parent_tool_ids chaining and the policy_parameters object (whose field names are deferred to 'the tool's manifest') get no additional explanation in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the title ('Recordkeeping Completeness Mapper: OpenChainGraph compute node (analytics_mandate)') but never says what completeness it measures, what inputs the decision function consumes, or what the result means. It names no distinguishing feature against the many other compute_* siblings, so an agent cannot tell from the text alone what this node produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative-tool guidance; the only directives are input-hygiene ('use synthetic or anonymised inputs only') and compute-mode selection, which describe how to run it, not when. Nothing routes the agent between this tool and sibling analytics or validation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_regulatory_obligations_registerRegulatory Obligations RegisterA
Read-onlyIdempotent
Inspect

Regulatory Obligations Register: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-691-regulatory-obligations-register.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: A regime-agnostic rule-to-obligation-to-evidence register verdict: obligations in (rule_id, owner, control_ids, evidence_refs), coverage math out (owner and evidence percentages, control-linkage count, unassigned list, one FAIL finding per failing check, overall COVERED or GAPS_FOUND). Outputs: total, owner_assigned, owner_coverage_pct, control_linked, evidence_linked, evidence_coverage_pct, unassigned, findings, overall_determination, errors. Output schema: call describe_tool("compute_regulatory_obligations_register").

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: input_parameters. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive and closed-world, yet the description adds meaningful context: inputs are processed transiently and not stored or logged, the node is deterministic, it exports an AP2 artifact with execution_hash for chain provenance, and gpu:true nodes always delegate to the browser. The compute-mode paragraph largely duplicates the schema's own enum description, and the FV-status receipt paragraph is noise.

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?

The genuinely useful purpose statement is buried in a late 'Summary' paragraph behind compute-binding boilerplate, an artifact URL, and a lengthy FV-status/receipt explanation that does not help an agent invoke the tool. Structure is not front-loaded, and several sentences repeat the schema verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden, and it does list the return fields (total, owner_coverage_pct, evidence_coverage_pct, unassigned, findings, overall_determination, errors) plus the provenance artifact. But it leaves the finding structure and error semantics vague and spends space on receipt mechanics rather than on how the coverage math determines GAPS_FOUND.

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 would be 3, but the description adds real semantics the schema lacks: it names the concrete fields expected inside the loosely-typed policy_parameters.input_parameters object (rule_id, owner, control_ids, evidence_refs), which the schema leaves as a bare object. No additional detail is given for parent_hashes/parent_tool_ids beyond what the schema states.

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 'Summary' sentence gives a genuinely specific verb+resource: a regime-agnostic rule-to-obligation-to-evidence register verdict computing owner/evidence coverage and an overall COVERED or GAPS_FOUND determination. However the opening line is a tautology of the title plus boilerplate ('OpenChainGraph compute node (compliance_control)'), and nothing distinguishes this from close siblings like compute_control_attestation_campaign_roll_up or score_clause_coverage.

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?

Input shape (rule_id, owner, control_ids, evidence_refs) implies when the tool applies, and 'Use synthetic or anonymised inputs only' is a real usage constraint. But there is no explicit when-to-use/when-not statement and no routing to any alternative sibling, so an agent must infer selection from the field list alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_reg_z_appendix_j_aprReg Z Appendix J APR SolverA
Read-onlyIdempotent
Inspect

Reg Z Appendix J APR Solver: OpenChainGraph compute node (compliance_mandate). 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-332-build-amortization-schedule. Output feeds: art-217-trid-apr-accuracy. Open at: https://ainumbers.co/chaingraph/art-215-reg-z-appendix-j-apr.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: Reg Z Appendix J actuarial APR solver. Outputs: advance_total, apr_pct, bracketed, converged, finance_charge, iterations, note, num_payments, payment_total, periodic_rate, periods_per_year, regulatory_basis. Output schema: call describe_tool("compute_reg_z_appendix_j_apr").

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: advances, payments. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the read-only/idempotent annotations: it discloses that inputs are processed transiently and not stored or logged, that compute:'browser' returns a delegation URL while gpu:true nodes always delegate, that execution is deterministic, and that an AP2 artifact with execution_hash is exported for provenance. The FV-status note also clarifies the receipt verifies offline as a snapshot rather than a live subscription.

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?

Purpose and the compute-mode explanation are front-loaded and the output enumeration is useful. However, the embedded FV-status hash URL and the 'snapshot, not a subscription' explanation consume a full sentence of metadata that contributes little to tool selection or invocation, and the repeated 'Deterministic OpenChainGraph compute node' phrasing is redundant.

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?

For a GPU-free deterministic compute node with no output schema, the description covers inputs required, outputs produced, chaining upstream/downstream, data handling, and execution-mode behavior — enough to invoke it correctly. The remaining gap is sibling disambiguation: nothing tells the agent why to choose this over verify_trid_apr_accuracy or recompute_mla_mapr_actuarial.

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 explains compute, parent_hashes, parent_tool_ids and policy_parameters. The description adds only that advances and payments are required and that unknown keys are refused — the latter repeated from the schema — and it lists outputs rather than illuminating input semantics like odd_days or unit_period_days.

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?

Names a specific verb and resource — an actuarial APR solver for Reg Z Appendix J — plus a concrete output list (apr_pct, finance_charge, periodic_rate, regulatory_basis), so the agent knows exactly what it computes. It does not distinguish itself from nearby siblings like verify_trid_apr_accuracy, compute_trid_tolerance_cure, or recompute_mla_mapr_actuarial, leaving ambiguity about which APR routine to pick.

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 the chain context ('Consumes upstream artifacts from: art-332-build-amortization-schedule', 'Output feeds: art-217-trid-apr-accuracy') and the compute-mode guidance, which is largely duplicating the schema. The one genuine directive is 'Use synthetic or anonymised inputs only', but there is no explicit when-to-use/when-not or named alternative among the many compliance calculators.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_remittance_disclosureRemittance Disclosure Calculator (Reg E Subpart B)A
Read-onlyIdempotent
Inspect

Remittance Disclosure Calculator (Reg E Subpart B): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-249-compare-corridor-cost. Open at: https://ainumbers.co/chaingraph/art-248-compute-remittance-disclosure.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: Computes the required Reg E subpart B (12 CFR 1005.31/1005.32) remittance disclosure fields: transfer_amount_usd (send minus fees), exchange_rate_disclosed, amount_received_dest in destination currency, fees breakdown, total_to_sender_usd, disclosure_type (EXACT or ESTIMATED), estimate_permissibl... Outputs: accounting_identity_delta, accounting_identity_ok, amount_received_dest, anchor_surface, destination_country, destination_currency, disclosure_type, estimate_permissible, exchange_rate_disclosed, fees, pii_note, regulatory_basis, required_fields_complete, table_source, table_version, total_to_sender_usd, transfer_amount_usd. Output schema: call describe_tool("compute_remittance_disclosure").

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: destination_country, destination_currency, estimate_permissible, exchange_rate, provider_fee, send_amount, taxes, third_party_fees. Unknown keys are refused.

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, but the description adds genuinely new behavioural facts: server-side kernel execution on Cloudflare Workers vs browser delegation, transient input processing with no logging or retention, and an AP2 artifact with execution_hash for provenance. These go well beyond the annotation block, though the FV-status receipt paragraph is arguably more marketing than operational guidance.

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?

The text is bloated and badly front-loaded: 'Deterministic OpenChainGraph compute node' is repeated, a full URL and a 64-hex FV-status file path consume space, and a sentence is truncated mid-word ('estimate_permissibl...'). The one genuinely useful sentence — what it computes — sits in the middle, and the output list plus 'call describe_tool(...)' tail is stranded at the end.

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?

For a compute node with nested policy_parameters and no formal output schema, the description does cover execution model, privacy posture, provenance export, and the full field list it returns, which is enough for an agent to call it correctly. The remaining gap is that return-value shapes are only named, not typed, but naming plus describe_tool referral is acceptable.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description restates the compute modes and implies the policy_parameters keys through the calculation summary (send_amount, provider_fee, exchange_rate, destination_country/currency, estimate_permissible), but adds little syntax or format meaning beyond the schema. 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?

The summary sentence names a specific verb and resource — computing Reg E subpart B (12 CFR 1005.31/1005.32) remittance disclosure fields — and enumerates the actual outputs (transfer_amount_usd, exchange_rate_disclosed, disclosure_type, etc.). It does not differentiate from the sibling check_reg_e_remittance_disclosure, so an agent cannot tell 'compute' from 'check' without reading both definitions, and the purpose statement is buried under OpenChainGraph boilerplate.

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: 'Use synthetic or anonymised inputs only' and 'Output feeds: art-249-compare-corridor-cost' hint at data handling and downstream chaining, but there is no statement of when to pick this over check_reg_e_remittance_disclosure or compute_cross_border_fees. The compute-mode guidance is parameter-level behaviour, not tool selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_rule_605_publication_composerRule 605 Publication ComposerC
Read-onlyIdempotent
Inspect

Rule 605 Publication Composer: OpenChainGraph compute node (regulatory_reporting). 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. Open at: https://ainumbers.co/tools/682-rule-605-publication-composer.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), yet the description adds real value: determinism, transient/no-store/no-log data handling, server-side kernel execution vs. browser delegation, and export of an AP2 artifact carrying execution_hash. The one gap is that the actual computation result and error/failure modes are never characterized.

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?

The text is boilerplate-heavy with redundant phrasing ('OpenChainGraph compute node' immediately followed by 'Deterministic OpenChainGraph compute node'), a marketing URL, and a long FV-status receipt hash. The genuinely useful content is buried after framework labels rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description never explains what the composed Rule 605 artifact contains or what the decision function evaluates; policy_parameters is left entirely opaque ('see the manifest'). For a regulatory computation tool requiring chained upstream hashes, that leaves the agent unable to predict or verify results.

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 describes compute, parent_hashes, parent_tool_ids, and policy_parameters in detail. The description only restates the compute-mode enum (already fully documented in the schema) and says nothing about how parent_hashes/parent_tool_ids chain or what goes into policy_parameters, so it stays at the baseline rather than adding meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description largely restates the name and adds framework metadata ('OpenChainGraph compute node (regulatory_reporting)'), but never states what Rule 605 publication composition actually computes or what decision it makes. Nothing distinguishes it from siblings like compute_best_execution_evidence_pack or resolve_rule_version beyond the label 'regulatory_reporting'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use / when-not-to-use guidance and no named alternative among the many compute_* siblings. The only directive ('use synthetic or anonymised inputs only') is an input constraint, not selection guidance, and the compute-mode sentence is parameter documentation rather than usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_rwa_erba_2026ERBA / Standardized RWA Calculator (Basel Endgame 2026)A
Read-onlyIdempotent
Inspect

ERBA / Standardized RWA Calculator (Basel Endgame 2026): OpenChainGraph compute node (capital_assessment). 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. Open at: https://ainumbers.co/chaingraph/art-355-erba-standardized-rwa-calculator.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: Credit-risk expanded risk-based approach (ERBA) / standardized-approach RWA calculator per the 2026 Basel Endgame reproposal (BCBS/US NPR, reproposed 2026-03-19, comments closed 2026-06-18, final expected ~Q4 2026). Outputs: aggregate_rwa, average_risk_weight, constants_version, disambiguation, exposure_count, per_exposure, rule_set, rule_set_label, rule_status, table_source, total_exposure_amount. Output schema: call describe_tool("compute_rwa_erba_2026").

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: exposures, rule_set. Unknown keys are refused.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses execution behavior: server-side compute by default for gpu:false nodes, browser delegation behavior, transient input processing, and AP2 artifact export with execution_hash. These are material operational traits an agent needs before invoking the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and key operational details are front-loaded, but the description is verbose and includes duplicated phrasing plus long provenance/FV-status hash details. Some sentences are useful for provenance, yet overall it is not tightly concise.

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 supplies regulatory context, compute behavior, privacy notes, and an output list despite there being no output schema. However, the nested policy_parameters object remains under-explained, so an agent still lacks detail on the expected shape of exposures and rule_set inputs.

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 parameters are already well documented in the schema. The description mostly repeats compute-mode behavior and policy_parameters requirements already present in schema descriptions, without adding new syntax or constraints beyond what the schema provides.

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?

The description states a specific verb and resource: credit-risk ERBA / standardized-approach RWA calculation under the 2026 Basel Endgame reproposal. It also scopes the regime and calculation type precisely enough to separate it from siblings such as compute_oprisk_sma_2026 or compute_rwa_scenarios.

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 description gives useful constraints such as using synthetic or anonymised inputs and explains compute mode behavior, but it does not explicitly say when to choose this tool over sibling RWA or Basel-related tools. Usage is implied by the regulatory calculation context rather than routed against alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_rwa_scenariosBasel RWA Scenario ModelerA
Read-onlyIdempotent
Inspect

Basel RWA Scenario Modeler: OpenChainGraph compute node (capital_assessment). Regulatory deadline: 2027-01-01 (Basel 3.1 output floor — UK PRA PS1/26 January 1, 2027). 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-07-basel31-reporting-delta-calculator. Output feeds: ml-03-timeseries-anomaly-detector, qfa-02-portfolio-var-engine, rca-01-frtb-ima-pre-validator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/sim-03-basel-rwa-scenario-modeler.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: SA-CR / F-IRB / A-IRB RWA in parallel with output-floor comparison (72.5% §CAP30). Outputs: airb_floored_bn, airb_pcts, airb_rwa_bn, firb_floored_bn, firb_pcts, firb_rwa_bn, floor_binding, floor_rwa_bn, percentile_labels, sacr_pcts, sacr_rwa_bn, verdict, warnings. Output schema: call describe_tool("compute_rwa_scenarios").

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: mc_scenarios, mix. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint=false, closed world), yet the description adds genuine value: determinism, transient processing with no storage or logging, server-vs-browser delegation semantics, and AP2 artifact export with execution_hash. The FV-status receipt note is extra but the core behavioral profile is well disclosed.

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?

The front-loaded summary and deadline are useful, but the description is bloated with provenance plumbing — a 64-character FV-status hash, a documentation URL, and a long upstream/downstream tool-ID roster — that does not help an agent decide to call or how to call. Roughly half the text is metadata noise for a tool-selection decision.

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?

For a complex nested-parameter Basel computation with no output schema, the description compensates by enumerating the return fields (airb_rwa_bn, floor_binding, verdict, warnings) and pointing to describe_tool for the schema. Combined with the compute-mode and privacy notes, an agent has enough to invoke it correctly, though the sibling relationship stays undefined.

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 baseline is 3. The description restates the compute modes and repeats 'Required: mc_scenarios, mix' but adds no syntax, ranges, or meaning for the nested policy_parameters (airb_pd_pct, firb_lgd_pct, mix_preset, etc.) beyond what the schema already declares.

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 summary line names a concrete computation: 'SA-CR / F-IRB / A-IRB RWA in parallel with output-floor comparison (72.5% §CAP30)', which is specific enough for an agent to identify the resource and output. It does not, however, differentiate itself from close siblings like simulate_output_floor, compute_basel31_delta, or compute_rwa_erba_2026, which an agent could plausibly confuse it with.

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 description gives real operating context (compute modes, upstream artifacts from art-07-basel31-reporting-delta-calculator, downstream consumers) and a hard constraint, 'Use synthetic or anonymised inputs only.' It never states when to choose this tool over the near-identical Basel/RWA siblings, so routing guidance remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_scra_rate_capCompute SCRA Rate CapA
Read-onlyIdempotent
Inspect

Compute SCRA Rate Cap: OpenChainGraph compute node (compliance_mandate). 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-231-compute-mla-mapr. Open at: https://ainumbers.co/chaingraph/art-232-compute-scra-rate-cap.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: Computes the SCRA 6% interest rate cap per 50 USC §3937 for pre-service loan obligations. Outputs: capped_rate_pct, covered_months, effective_rate_pct, exceeds_cap, excess_forgiven, excess_rate_pct, interest_delta_forgiven, is_pre_service_obligation, loan_balance, original_rate_pct, pii_note, regulatory_basis, retroactive_credit, scra_note, servicemember_notified, table_source, table_version, total_interest_at_cap, total_interest_at_original_rate. Output schema: call describe_tool("compute_scra_rate_cap").

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: is_pre_service_obligation, servicemember_notified. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds relevant behavior beyond that: server-side vs browser delegation via compute mode, transient non-retained inputs, deterministic execution, and AP2 artifact provenance. It does not contradict 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual purpose is buried after OpenChainGraph boilerplate, compute-mode details, privacy language, an upstream artifact reference, a URL, and a long FV-status hash. The output field list is useful, but the description is not front-loaded and contains several sentences that do not help an agent select or invoke the tool efficiently.

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?

Given the nested policy_parameters and lack of an output schema, the description supplies useful context by naming the regulatory basis, listing output fields, and explaining compute delegation and provenance behavior. It is fairly complete for invocation, though the parameter semantics rely almost entirely on the schema.

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 compute, parent_hashes, parent_tool_ids, and the nested policy_parameters. The description does not add much parameter-specific meaning beyond that; it focuses on compute modes and output fields rather than explaining the policy parameters.

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?

The description states a specific verb and resource: "Computes the SCRA 6% interest rate cap per 50 USC §3937 for pre-service loan obligations." That is precise enough to distinguish it from generic compute tools and from sibling compliance computations such as compute_mla_mapr or compute_reg_z_appendix_j_apr.

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?

It gives clear context for when the tool applies: SCRA rate-cap calculations for pre-service loan obligations. It also states that synthetic or anonymised inputs should be used, which is a useful usage constraint, but it does not explicitly compare this tool against sibling alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_settlement_efficiency_kpiSettlement Efficiency KPI EngineA
Read-onlyIdempotent
Inspect

Settlement Efficiency KPI Engine: OpenChainGraph compute node (model_governance). 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-78-csdr-penalty-calculator, art-80-ssi-conformance-checker, art-79-settlement-fail-predictor. Output feeds: cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-84-settlement-efficiency-kpi.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: Aggregates batch settlement data into CSDR/T+1-relevant KPIs: settlement rate, fail rate, total CSDR penalty cost, on-time allocation rate, SSI golden-source coverage, buy-in triggered count, and fail-duration distribution. Outputs: benchmark, buyin_triggered_count, fail_duration_distribution, fail_rate, note, on_time_allocation_rate, period_label, settlement_grade, settlement_rate, ssi_golden_coverage_pct, total_instructions, total_penalty_cost. Output schema: call describe_tool("compute_settlement_efficiency_kpi").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only/idempotent annotations, it discloses deterministic execution, server-side vs browser delegation behavior, transient processing with no storage or logging, data-sensitivity constraints, AP2 artifact export with execution_hash, and upstream/downstream provenance. That is substantial behavioral context and does not contradict 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is verbose and includes boilerplate URLs, FV-status receipt language, a repeated deterministic-compute phrase, and an output-schema pointer. The core purpose appears later under 'Summary' rather than being front-loaded, so the structure does not prioritize the most useful information.

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?

For a no-output-schema compute tool, it supplies the key KPI outputs and explains execution, provenance, and data-handling constraints. Remaining gaps are modest: policy_parameters usage is not elaborated beyond the schema, but an agent has enough context to select and invoke it.

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%, so the parameter documentation already carries most of the load. The description adds useful context about upstream artifacts and AP2 chaining, but it does not specifically explain parent_hashes, parent_tool_ids, or the policy_parameters fields beyond what the schema provides.

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 description states a specific verb and resource: it aggregates batch settlement data into CSDR/T+1-relevant KPIs such as settlement rate, fail rate, penalty cost, and SSI coverage. It is clearly distinguishable in substance, but it does not explicitly name a sibling tool or alternative to avoid, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains compute-mode behavior and says to use synthetic or anonymised inputs, but it never states when to use this tool versus related tools such as calculate_csdr_penalty or check_ssi_conformance. There is no explicit when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_short_sale_locate_ssr_checkerShort-Sale Locate and SSR CheckerC
Read-onlyIdempotent
Inspect

Short-Sale Locate and SSR Checker: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/tools/671-short-sale-locate-ssr-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.

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". See the tool's manifest for field names.

TDQS

C2.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world semantics, and the description adds real context beyond them: server vs. browser compute-mode behavior, that inputs are processed transiently and not retained, that a browser delegation URL is returned in browser mode, and that an AP2 artifact with execution_hash is exported. It still says nothing about what the computation returns or how the SSR decision is made, but the added operational detail is substantial for an annotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is dominated by boilerplate: a marketing URL, an offline-verifiable FV-status hash path, and a restatement of compute-binding rules already fully present in the schema. Almost none of the word count is spent on what the checker computes, so it is both bloated and poorly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and the description never explains the decision function or the shape of policy_parameters, leaving the agent unable to know what to supply or what the SSR/locate result means. With four parameters including a nested object and no schema for it, the description should have carried that burden and does not.

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 compute, parent_hashes, parent_tool_ids and policy_parameters fields are already documented. The description repeats the compute-mode semantics that the schema already states and offers no additional meaning for policy_parameters, whose actual field names it defers to "the tool's manifest." Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens by restating the title plus an infrastructure label ("OpenChainGraph compute node (compliance_mandate)") and never states what the check actually determines, e.g. whether a short-sale locate is valid or whether the SSR is triggered. Since every sibling carries near-identical OpenChainGraph boilerplate, the wording does nothing to distinguish this tool from the dozens of other compute nodes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this checker versus related tools, no prerequisites (e.g. Reg SHO locate requirements, SSR trigger conditions), and no exclusions. The only usage-relevant instruction is "Use synthetic or anonymised inputs only", which is an input constraint, not tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_stock_token_collateral_haircutHalt + Staleness Collateral HaircutA
Read-onlyIdempotent
Inspect

Halt + Staleness Collateral Haircut: OpenChainGraph compute node (collateral_mandate). 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: 505-tokenized-collateral-eligibility-checker, 508-repo-haircut-collateral-calculator. Open at: https://ainumbers.co/chaingraph/art-320-rhc-collateral-haircut.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: Layers a feed-staleness, sequencer-downtime, and underlying-halt haircut on top of a base repo haircut for Robinhood Chain stock tokens posted as collateral. Outputs: adjusted_collateral_value, base_haircut, extra_haircut, feed_stale, final_haircut, liquidation_risk, sequencer_down_grace_expired, sequencer_down_within_grace, underlying_halted, verdict. Output schema: call describe_tool("compute_stock_token_collateral_haircut").

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". Unknown keys are refused.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses compute mode behavior (server-side vs browser delegation, gpu:true handling), transient data processing with no storage or logging, the requirement for synthetic or anonymised inputs, AP2 artifact export with execution_hash, upstream artifact chaining, and FV-status snapshot semantics. This is rich behavioral context that an agent cannot infer from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the output list is useful, but the description is dense and contains repetition ('OpenChainGraph compute node' appears twice), boilerplate about compute binding that duplicates the schema, and an embedded URL plus long FV-status path. It is serviceable for a complex tool but not lean.

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?

No output schema exists, but the description explicitly enumerates the returned fields (adjusted_collateral_value, base_haircut, extra_haircut, feed_stale, final_haircut, liquidation_risk, sequencer_down_grace_expired, sequencer_down_within_grace, underlying_halted, verdict). It also covers compute modes, provenance chaining, transient data handling, and upstream artifact sources, leaving an agent with enough to call and interpret the tool 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 description coverage is 100%, so all parameters are already documented in the input schema. The description echoes the compute-mode semantics already present in the schema and gives no additional per-parameter guidance for parent_hashes, parent_tool_ids, or policy_parameters, so the baseline 3 is appropriate.

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?

The description states a specific computation—layering feed-staleness, sequencer-downtime, and underlying-halt haircuts on a base repo haircut for Robinhood Chain stock tokens posted as collateral. It distinguishes this from the base repo haircut function by naming the upstream artifacts it consumes and the exact extra risk factors it adds.

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?

The description gives clear context: use when computing collateral haircuts for Robinhood Chain stock tokens needing halt/staleness/sequencer adjustments, building on a base repo haircut and consuming artifacts from two named upstream tools. It does not explicitly state when not to use this versus related siblings such as calculate_repo_haircut, but the scope is otherwise unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_stress_test_scenariosStress Test EngineA
Read-onlyIdempotent
Inspect

Stress Test Engine: OpenChainGraph compute node (risk_parameter). 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: qfa-02-portfolio-var-engine. Output feeds: rca-01-frtb-ima-pre-validator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/qfa-03-stress-test-engine.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: Multi-scenario stress testing across 6 historical crisis scenarios (GFC 2008, COVID Mar 2020, Dot-com Bust, Lehman Week, Rate Shock 2022, SVB Contagion 2023) with Monte Carlo per scenario. Outputs: compliance_flags, max_drawdown, normal_var_pct, recovery_days_estimate, scenario_details, scenario_losses, stress_multiplier, stressed_es_pct, stressed_var_pct, verdict, warnings, worst_case_loss, worst_case_scenario. Output schema: call describe_tool("compute_stress_test_scenarios").

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: confidence_level, credit_sensitivity, equity_beta, mc_paths, portfolio_vol, preset, rate_duration_yrs, seed. Unknown keys are refused.

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 and closed-world, so the bar is lower; the description still adds real value by disclosing compute-mode routing (server kernel vs. browser delegation URL, gpu:true always delegates), transient non-retention of inputs, and the 'use synthetic or anonymised inputs only' constraint. It also states that an AP2 artifact with execution_hash is produced, which is behavioural context not present in 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is dominated by template boilerplate: an OpenChainGraph node preamble, a 64-character FV-status URL with a note that it is 'a snapshot, not a subscription,' and an AP2 data-residency paragraph. The one sentence that actually selects the tool (the scenario-level Summary) sits at the very end, so the payload is badly back-loaded.

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?

There is no output schema, but the description compensates by enumerating the returned fields (worst_case_loss, stressed_var_pct, compliance_flags, scenario_details, etc.) and pointing to describe_tool for the full schema. Combined with 100% parameter coverage and explicit compute-mode semantics, an agent has enough to call it correctly; only explicit alternative-tool routing 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%, so the schema already documents compute, parent_hashes, parent_tool_ids and the required policy_parameters keys. The description's compute paragraph essentially restates the schema's compute property text, and it adds no detail about the Monte Carlo parameters beyond noting per-scenario Monte Carlo. 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?

The Summary sentence gives a specific verb and resource: 'Multi-scenario stress testing across 6 historical crisis scenarios ... with Monte Carlo per scenario,' naming the actual scenarios. It is distinguishable from siblings such as simulate_var_monte_carlo or run_liquidity_stress_test, though the purpose is buried after several sentences of compute-node boilerplate.

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 implied rather than prescribed: it names upstream (qfa-02-portfolio-var-engine) and downstream (rca-01-frtb-ima-pre-validator, ptg-01-ap2-prompt-template-generator) nodes, which tells an agent where it sits in a pipeline. However there is no explicit when-to-use vs. when-to-prefer-an-alternative guidance, and no comparison against sibling stress/VaR tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_tempo_mainnet_fee_capacityTIP-1010 Mainnet Fee & Payment-Lane Capacity CalculatorA
Read-onlyIdempotent
Inspect

TIP-1010 Mainnet Fee & Payment-Lane Capacity Calculator: OpenChainGraph compute node (treasury_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-389-tempo-mainnet-fee-capacity.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: Per-tx fee (fee_microusd = ceil(base_fee_attodollars_per_gas x gas_used / 1e12)) and payment-lane TPS headroom for a supplied payment mix, against the published TIP-1010 mainnet constants (base fee 2e10 attodollars/gas, 500M gas/block, ~94% payment-lane reservation). Outputs: block_time_seconds, line_items, note, protocol_parameters_used, protocol_version, summary. Output schema: call describe_tool("compute_tempo_mainnet_fee_capacity").

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: block_time_seconds, payment_mix, protocol_parameters. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavior: default server-side computation on Cloudflare Workers, browser delegation rules, transient input processing with no storage or logging, and AP2 artifact export with execution_hash provenance. It also clarifies that the FV-status link is a verifiable offline snapshot rather than a live subscription.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and partly repetitive, including duplicate phrasing like "OpenChainGraph compute node" before reaching the core fee-capacity summary. The useful information is present, but it is not as tightly front-loaded or structured as it could be.

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?

For a complex, nested-parameter compute tool without an output schema, the description is largely complete: it explains the fee formula, protocol constants, compute modes, output fields, and provenance artifact. It could still be stronger on parent-hash chaining semantics and artifact return structure.

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 the parameters thoroughly. The description adds some meaning around compute:"auto" defaults and the required policy_parameters components, but it does not meaningfully explain parent_hashes or parent_tool_ids beyond the schema.

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 description states a specific verb and resource: compute per-transaction fees and payment-lane TPS headroom against published TIP-1010 mainnet constants. It is clearly distinguishable from generic fee tools, but it does not explicitly differentiate itself from nearby sibling tempo tools such as model_tempo_gas_economics or model_tempo_payment_economics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives, nor any when-not-to-use conditions. The compute-mode explanation and synthetic-inputs constraint are operational notes, not usage selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_trid_tolerance_cureTRID Fee Tolerance and CureA
Read-onlyIdempotent
Inspect

TRID Fee Tolerance and Cure: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-216-trid-tolerance-cure.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: TRID fee tolerance analysis and cure calculation per Reg Z §1026.19(e)(3). Outputs: cure_amount, cure_required, fee_analysis, note, regulatory_basis, ten_pct_bucket_increase, ten_pct_bucket_le_sum, ten_pct_excess, ten_pct_threshold, ten_pct_violation, total_violations, violations, zero_tolerance_violations. Output schema: call describe_tool("compute_trid_tolerance_cure").

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: fees. Unknown keys are refused.

TDQS

A3.6/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 the description adds meaningful behavior beyond them: deterministic execution, transient processing with no storage/logging/retention, browser delegation semantics, and an exported AP2 artifact carrying execution_hash for provenance. This is substantive disclosure a caller needs for a compliance computation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is bloated with spec URLs and a 64-character FV-status hash, and the actual purpose appears only in a 'Summary:' line near the end rather than being front-loaded. The output-field list and privacy note do earn their place, but the positioning is poor.

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?

With no output schema, the description compensates by enumerating the expected output keys (cure_amount, ten_pct_violation, zero_tolerance_violations, etc.) and explaining provenance export and input privacy. A caller can invoke it correctly without the return-shape being a mystery.

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 compute, parent_hashes, parent_tool_ids and policy_parameters fields are already documented. The description's compute-mode prose largely restates the schema and says nothing about the shape of the required policy_parameters.fees array, so 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?

The sentence 'TRID fee tolerance analysis and cure calculation per Reg Z §1026.19(e)(3)' gives a concrete verb+resource+regulatory anchor, so the purpose is unambiguous. However it is buried behind boilerplate, and nothing distinguishes it from topical siblings such as verify_trid_apr_accuracy or lookup_reg_z_thresholds.

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: the compute-mode paragraph explains server vs browser execution and the 'use synthetic or anonymised inputs only' line is a real constraint. There is no explicit statement of when to choose this over the sibling TRID/Reg Z tools, nor any when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_va_funding_fee_residualVA Funding Fee and Residual IncomeA
Read-onlyIdempotent
Inspect

VA Funding Fee and Residual Income: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-225-va-funding-fee-residual.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: VA home loan funding fee (38 USC §3729) and residual income qualification. Outputs: dti, funding_fee, pii_note, regulatory_basis, residual_income, table_source_funding_fee, table_source_residual, table_version_funding_fee, table_version_residual. Output schema: call describe_tool("compute_va_funding_fee_residual").

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: funding_fee_exempt, loan_purpose, state, va_use_type. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world and non-destructive, so the bar is lower. The description nevertheless adds real behavioral context: deterministic kernel computation, transient processing with no logging or retention, a synthetic-inputs-only constraint, and an AP2 artifact with execution_hash for chain provenance. Some of this is templated boilerplate, but it is genuinely useful for an agent deciding whether to trust and chain the output.

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?

The passage is bloated and poorly front-loaded: the purpose statement appears after the boilerplate, 'OpenChainGraph compute node' is stated twice, and an FV-status file hash, a marketing URL and an offline-receipt explanation consume space an agent does not need in order to call the tool. Roughly half the text could be removed with no loss of invocation-relevant information.

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?

For a deterministic 4-parameter compute node with no output schema, the description covers the essentials: what is computed, the regulatory basis, the enumerated output fields, execution-mode behavior, privacy handling and provenance chaining. The remaining gap is that policy_parameters semantics are deferred entirely to the schema and describe_tool.

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%, including the nested policy_parameters object and its required keys, so the schema carries the parameter burden. The description restates the compute-mode semantics already present in the schema and says nothing additional about the policy inputs (state, va_use_type, dti_pct, funding_fee_exempt) beyond pointing to describe_tool.

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 summary sentence names a specific verb+resource: VA funding fee (38 USC §3729) and residual income qualification, and the outputs list (funding_fee, residual_income, dti) confirms scope. However, the actual purpose is buried after five sentences of generic compute-node boilerplate, and nothing distinguishes it from near-siblings such as compute_dti_ratios or compute_fha_mip_eligibility.

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?

There is no when-to-use/when-not guidance relative to sibling tools, which matters given dozens of mortgage/VA/FHA calculators. The only usage guidance offered is about execution mode (auto vs browser for gpu:false nodes), which is parameter-level rather than tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_var_backtest_traffic_lightVaR Backtesting Traffic-Light Zone CalculatorB
Read-onlyIdempotent
Inspect

VaR Backtesting Traffic-Light Zone Calculator: OpenChainGraph compute node (capital_assessment). 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. Open at: https://ainumbers.co/chaingraph/art-429-var-backtest-traffic-light.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: Counts Basel VaR backtesting exceptions (actual daily P&L loss exceeding the model's 1-day VaR estimate) over a rolling up-to-250-trading-day window, then looks up the green/yellow/red traffic-light zone and capital multiplier per the Basel Committee's 1996 Amendment to the Capital Accord to Inco... Outputs: constants_version, disambiguation, exception_count, exception_indices, full_window, multiplier, rule_status, source, truncated_to_250, window_days, zone. Output schema: call describe_tool("compute_var_backtest_traffic_light").

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: observations. Unknown keys are refused.

TDQS

B3.2/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, and the description goes well beyond them: it discloses determinism, the server-vs-browser execution split, that inputs are transient and not retained, and that an AP2 artifact with execution_hash is exported for chain provenance. These are real behavioral facts an agent cannot get from the annotations. A point is withheld because the compute-mode text duplicates the enum descriptions in the schema.

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?

The functional definition is at the very end, after compute-binding, data-retention, AP2-artifact and FV-status URL boilerplate that is largely identical across this tool family. The summary itself is truncated mid-word ('Amendment to the Capital Accord to Inco...'), so the agent reads a cut-off definition. Poor front-loading and substantial repeated content for one short payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description names all 11 outputs and points to describe_tool for the schema, and it characterizes the Basel traffic-light decision logic, so the agent understands the return shape. The gap is input shape: `observations` is an untyped array with no structure guidance anywhere, which is the main thing an agent needs to call this correctly on a nested-object parameter.

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 compute, parent_hashes, parent_tool_ids and policy_parameters, and the description adds little parameter-specific meaning. Critically, neither the schema nor the description explains what the required `observations` array should contain (daily P&L vs VaR pairs, ordering, length), which is the one thing the agent actually needs. Baseline 3 applies since the schema does the documenting work.

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 Summary paragraph gives a specific verb and resource: counts Basel VaR backtesting exceptions over a rolling up-to-250-day window and looks up the green/yellow/red zone plus capital multiplier. That is far more specific than the title, and it distinguishes the tool from siblings like compute_portfolio_var or simulate_var_monte_carlo. It loses a point only because that purpose statement is buried after several paragraphs of infrastructure boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to choose this tool over the many adjacent VaR/capital siblings. The only usage constraint given is 'Use synthetic or anonymised inputs only', which is a data-handling rule, not selection guidance. An agent is left to infer the Basel-exception backtest use case from the summary alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_verify_receiptVerify ReceiptC
Read-onlyIdempotent
Inspect

Verify Receipt: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-652-verify-receipt.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: Offline verifier for AINumbers Evidence Envelope v0.1 receipts. Outputs: errors. Output schema: call describe_tool("compute_verify_receipt").

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". Unknown keys are refused.

TDQS

C2.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/closed-world, so the bar is lower, yet the description adds real value: determinism, transient processing with no storage or logging, offline verification independent of the FV-status snapshot, and an exported AP2 artifact carrying execution_hash for chain provenance. The 'Exports an AP2 artifact' note on a read-only tool is slightly at odds with expectations but not a contradiction.

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?

Heavily bloated and back-loaded: compute-binding boilerplate, a marketing URL, a 64-character FV-status path, and a redundant 'Output schema: call describe_tool(...)' line precede the one sentence that actually states what the tool does. Much of this text is identical template noise across the toolset rather than tool-specific signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with a nested object and no output schema, the description covers execution mode, chaining inputs and privacy well, but says essentially nothing about the decision function itself (receipt / previous_receipt semantics) and only names 'errors' as output without indicating what a valid/invalid verification result looks like.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description restates compute-mode semantics (already in the schema) and adds no detail on parent_hashes ordering/pairing or on the receipt/previous_receipt keys inside policy_parameters. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first line ('OpenChainGraph compute node (compliance_control)') merely restates the name/title, and the actual purpose only surfaces near the end: 'Offline verifier for AINumbers Evidence Envelope v0.1 receipts.' That is a specific verb+resource, but it is buried and never distinguishes this tool from the many sibling verifiers (verify_ap2_payment_receipt, verify_execution_hash, verify_conversion_receipt, etc.).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute-mode selection (auto/server/browser, gpu:true always delegates), which is really parameter guidance. It never says when to choose this verifier over the numerous sibling verification tools, nor what inputs/preconditions make it applicable; the only use guidance is 'Use synthetic or anonymised inputs only.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_wash_sale_window_guardWash-Sale Window GuardA
Read-onlyIdempotent
Inspect

Wash-Sale Window Guard: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-687-wash-sale-window-guard.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: Deterministic wash-sale window arithmetic over caller-declared synthetic inputs: the declared 61-day acquisition window (sale date minus 30 days through sale date plus 30 days, inclusive) is applied to a declared lot sale and a declared replacement-purchase list; the node totals the disallowed lo... Outputs: window_start, window_end, replacements_in_window, disallowed_loss, ira_trap, trace, overall, warnings. Output schema: call describe_tool("compute_wash_sale_window_guard").

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: sale, replacement_purchases. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses compute routing modes, server-side versus browser delegation behavior, transient non-retention of inputs, AP2 artifact export with execution_hash, and an FV-status verification receipt. These details materially help an agent understand execution and provenance behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the description is heavily padded with platform boilerplate, repeated phrases such as 'Deterministic OpenChainGraph compute node,' a documentation URL, FV-status receipt text, and a truncated summary. Much of it is useful, but several sentences do not directly help an agent decide or invoke the tool.

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 complex compute node with no output schema, the description lists the outputs (window_start, window_end, replacements_in_window, disallowed_loss, ira_trap, trace, overall, warnings), explains the core decision logic, and covers compute-mode and provenance behavior. It is complete enough for an agent to understand what the tool returns and how it executes.

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 input schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds some domain context by explaining the sale and replacement-purchase inputs and the 61-day window, but it does not add much beyond the schema's own parameter documentation.

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 description states a specific verb and resource: deterministic wash-sale window arithmetic over a declared sale and replacement-purchase list, applying a 61-day window and totaling disallowed loss. It is clear enough to separate this from unrelated compute nodes, but it does not explicitly name or contrast with any sibling tool.

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 description implies this is for wash-sale compliance calculations and adds a meaningful constraint to use synthetic or anonymised inputs only. However, it does not state when to choose this tool over alternatives, nor does it give explicit exclusions or prerequisites beyond the input-data warning.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_whistleblowing_channel_clockWhistleblowing Channel Clock CheckerC
Read-onlyIdempotent
Inspect

Whistleblowing Channel Clock Checker: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/tools/677-whistleblowing-channel-clock.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.

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". See the tool's manifest for field names.

TDQS

C2.7/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), and the description adds substantial non-obvious behavior: server-side kernel execution on Cloudflare Workers for gpu:false nodes, browser delegation URL fallback, and forced delegation for gpu:true nodes. It also discloses transient input processing ('not stored, logged, or retained') and the AP2 artifact with execution_hash, which is exactly the kind of context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loading is decent, but the text is padded with a marketing URL and a long unreadable FV-status hash path plus a self-referential 'snapshot, not a subscription' sentence that does not help invocation. Roughly half the content is boilerplate shared across the OpenChainGraph family rather than tool-specific information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain what the tool returns, yet it only says an 'AP2 artifact with execution_hash' is exported and never describes the computed clock/deadline result. For a compute node whose entire value is a decision output, the description omits the one thing an agent needs to interpret the call.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters, and the description's compute-mode explanation largely duplicates the enum description. Critically, the most important parameter, policy_parameters, is left to 'see the tool's manifest for field names' with no description-side help at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the title ('Whistleblowing Channel Clock Checker') and labels it an 'OpenChainGraph compute node (compliance_control)' without ever saying what the clock actually measures, which deadlines it computes, or what inputs trigger it. An agent cannot distinguish this from sibling clock tools such as compute_cyber_incident_notification_clock or servicing_compliance_clock based on the text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this tool, when not to, or which sibling to prefer for adjacent deadline computations. The only guidance given concerns compute-mode selection (auto/server/browser), which is execution plumbing, not task routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_xirrXIRR (Irregular Dated Cash Flows)A
Read-onlyIdempotent
Inspect

XIRR (Irregular Dated Cash Flows): OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-326-tvm-xirr.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: Annualized rate of return for irregular-interval dated cash flows, matching Excel XIRR semantics exactly: fixed actual/365 day count, anchored to the first cash flow date, solved by deterministic bisection over a declared rate bracket. Outputs: anchor_date, bracket_hi_pct, bracket_lo_pct, converged, day_count_convention, iterations, method, note, num_cash_flows, regulatory_basis, tolerance, xirr_pct. Output schema: call describe_tool("compute_xirr").

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: cash_flows, tolerance. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: deterministic bisection solver, fixed actual/365 day count anchored to the first cash flow, server-vs-browser delegation semantics, transient non-persisted inputs, and an AP2 artifact with execution_hash. That is rich behavioral disclosure for a compute tool.

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?

The definition is dominated by platform boilerplate (OpenChainGraph node preamble, Cloudflare/GPU routing, privacy notice, URL, and a long FV-status hash path) while the actual purpose is relegated to the final Summary sentence. The single most useful line is last, so the description is poorly front-loaded and bloated.

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?

Given no standalone output schema, the description lists the return fields (anchor_date, converged, iterations, xirr_pct, etc.) and explains the method, day-count convention, and convergence behavior. Sufficient for an agent to call and interpret the result, though it could note failure behavior when not converged.

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 genuinely adds meaning: it explains that tolerance, bracket_lo/bracket_hi, and max_iterations drive a declared-bracket bisection and that dates anchor to the first cash flow. This goes beyond the schema's field labels.

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 Summary states a specific verb and resource: annualized rate of return for irregular-interval dated cash flows, matching Excel XIRR semantics. That distinguishes it from compute_irr (regular intervals) implicitly, though the differentiation is buried at the end after a block of platform boilerplate rather than front-loaded.

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 via 'irregular-interval' and 'matching Excel XIRR semantics'; there is no explicit when-to-use/when-not or direct pointer to compute_irr for regular-period flows. The compute-mode paragraph explains execution routing, not selection between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_markdown_documentMarkdown Document ConverterA
Read-onlyIdempotent
Inspect

Markdown Document Converter: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-191-conversion-receipt-builder. Open at: https://ainumbers.co/chaingraph/art-189-markdown-document-converter.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: Deterministic Markdown to HTML and plain text over a hand-rolled CommonMark subset (headings, bold/italic/code spans, fenced code, blockquotes, one-level lists, links, images as links, horizontal rules, GFM pipe tables). Outputs: digest_basis, html, html_sha256, input_sha256, plain_text, plain_text_sha256, stats. Output schema: call describe_tool("convert_markdown_document").

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: options. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, but the description adds materially: transient processing with no storage/logging/retention, deterministic kernel behaviour, gpu:true always delegating, and that an AP2 artifact with execution_hash is exported. These are facts an agent cannot get from the annotations. Not a 5 because the compute/delegation text largely duplicates the compute parameter's schema description.

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?

The actual tool purpose is buried after two boilerplate sentences, an FV-status hash URL, and a receipt-verification aside that does not help an agent decide or call. The 'Summary:' block is the useful part, but roughly half the text is provenance ceremony irrelevant to invocation.

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?

With no output schema, the description usefully enumerates the return fields (digest_basis, html, html_sha256, input_sha256, plain_text, plain_text_sha256, stats) and states the exact CommonMark subset supported, which prevents malformed input. It is nearly complete; the only gap is not clarifying that the markdown payload lives under policy_parameters.

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 all four parameters (compute, parent_hashes, parent_tool_ids, policy_parameters) are already documented and the compute enum behaviour is spelled out twice. The description adds only the input-sensitivity caveat, not clarity on the nested policy_parameters.markdown field, so it stays at the baseline.

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?

Buried mid-description: "Deterministic Markdown to HTML and plain text over a hand-rolled CommonMark subset" — a specific verb and resource with the exact supported feature list. It falls short of 5 because the first two sentences are generic compute-node boilerplate that restate the title rather than the tool's function, and no sibling (e.g. convert_tabular_data) is explicitly contrasted.

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 a real constraint — "Use synthetic or anonymised inputs only" — and explains when to pick compute modes (auto/server/browser, gpu:true always delegates). However there is no guidance on when to choose this tool over neighbours like convert_tabular_data or build_conversion_receipt, only a forward pointer that its output feeds art-191-conversion-receipt-builder.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_tabular_dataTabular Data ConverterB
Read-onlyIdempotent
Inspect

Tabular Data Converter: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-191-conversion-receipt-builder. Open at: https://ainumbers.co/chaingraph/art-190-tabular-data-converter.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: Deterministic conversion across CSV, JSON (array of objects), and GFM pipe tables with RFC 4180 CSV parsing (quoted fields, embedded delimiters and newlines, escaped quotes). Outputs: column_count, columns, converted, error, input_sha256, output_sha256, row_count, source_format, target_format, warnings. Output schema: call describe_tool("convert_tabular_data").

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: options. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, and the description adds meaningful context beyond that: server vs browser compute routing, GPU delegation rules, transient non-retention of inputs, and AP2 artifact provenance with execution_hash. It does not, however, explain edge cases like partial failures or warning conditions, so it is strong but not exhaustive.

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?

The definition is heavily padded with ChainGraph boilerplate, a URL, a long FV-status hash, and provenance notes before the actual conversion summary. The core purpose is not front-loaded, and several sentences about compute provenance repeat or obscure the tool's primary job.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers compute routing, retention, provenance, and lists output fields, which is useful. But for a conversion tool with no output schema, it leaves important gaps about how callers should structure the policy_parameters payload, especially data/options/source_format/target_format.

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 baseline is 3. The description restates compute-mode behavior and hints at source/target formats, but it does not clarify the nested policy_parameters payload (data, options, source_format, target_format), whose inner fields are undocumented in the schema.

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 summary clearly states a specific verb and resource: deterministic conversion across CSV, JSON arrays, and GFM pipe tables with RFC 4180 parsing. It does not explicitly distinguish this tool from siblings like workbook_csv_parse or convert_markdown_document, and the purpose is buried after ChainGraph boilerplate, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and that only synthetic/anonymised inputs should be used, but it gives no guidance on when to choose this tool over sibling conversion or parsing tools. An agent must infer selection from the name and summary alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_tempo_fee_ammTempo Fee-AMM Conversion CalculatorA
Read-onlyIdempotent
Inspect

Tempo Fee-AMM Conversion Calculator: OpenChainGraph compute node (treasury_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-388-tempo-fee-amm-converter.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: Converts a supplied fee-token amount to the validator's token through Tempo's enshrined protocol Fee AMM (Tempo has no native gas token): validatorTokenOut = userTokenIn x 0.9970, 30bps to LPs. Outputs: conversion_ok, fee_token, lp_fee_amount, max_pool_utilization_bps, note, pool_utilization_bps, reason, validator_token, validator_token_out. Output schema: call describe_tool("convert_tempo_fee_amm").

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: fee_token, max_pool_utilization_bps, pool_reserves, user_token_in, validator_token. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe-read profile, and the description adds genuinely useful behavior: determinism, server-vs-browser compute modes with the gpu:true delegation rule, transient non-retention of inputs, and an AP2 artifact with execution_hash exported for provenance. The FV-status/file-URL material is closer to provenance boilerplate than operational guidance.

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?

The functional content is buried in the last third of a long paragraph; two full sentences plus a URL and an FV-status hash precede any mention of what the tool computes. The compute-mode and artifact boilerplate is identical across sibling nodes and pushes the actual purpose to the end.

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?

There is no output schema, and the description compensates by listing all nine output fields and stating the conversion relationship. Missing is the meaning of boundary outputs such as reason and max_pool_utilization_bps (i.e. when the conversion fails or is capped).

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%, so the baseline is 3. The description adds the decision function's formula and enumerates the five policy_parameters keys, but says nothing about units or expected form for fee_token, validator_token, pool_reserves, or what max_pool_utilization_bps does when exceeded.

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 summary sentence gives a specific verb, resource and formula: converts a fee-token amount to the validator token via Tempo's Fee AMM at 0.9970, 30bps to LPs. It is not differentiated from several close siblings (compute_tempo_mainnet_fee_capacity, model_tempo_gas_economics, model_tempo_payment_economics), so an agent must guess which tempo tool applies.

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 by the arithmetic described ('converts a supplied fee-token amount'). There is no statement of when to use this versus the tempo siblings, no preconditions, and no exclusions. An agent can infer intent from the formula but gets no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

correlate_ap2_cartmandate_x402Ap2 X402 Cart CorrelationA
Read-onlyIdempotent
Inspect

Ap2 X402 Cart Correlation: OpenChainGraph compute node (compliance_control). 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-595-ap2-cartmandate-hashchain-builder. Open at: https://ainumbers.co/chaingraph/art-596-ap2-x402-cart-correlation.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: Correlates a built AP2 CartMandate (cart_root, cart_items, merchant) against an x402_spend_evidence pack: does the cart total (sum of quantity*unit_price per currency) match the x402 authorization's value, does the CartMandate's merchant map to the authorization's recipient address, and does the... Outputs: correlation_status, cart_total_matches_authorization_value, cart_total_atomic, authorization_value_atomic, merchant_matches_authorization_to, cart_chain_intact, disclosure, reasons. Output schema: call describe_tool("correlate_ap2_cartmandate_x402").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/non-destructive/closed-world), the description discloses determinism, transient processing with no storage or logging, an execution_hash-bearing AP2 artifact export, the upstream dependency, and compute-mode delegation behavior for gpu:true nodes. The only gap is that 'Exports an AP2 artifact' is not reconciled with readOnlyHint — harmless in context (the artifact is a return value), but worth a sentence.

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?

Roughly half the text is boilerplate: 'OpenChainGraph compute node' stated twice, a documentation URL, and a long FV-status receipt/hash preamble that does not help an agent invoke the tool. The actual purpose appears only in the trailing 'Summary:' sentence, which is itself truncated mid-clause ('...and does the...'), so the payload is neither front-loaded nor complete.

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?

For a 4-parameter nested-input compute node with no output schema, the description does supply the upstream producer, the correlation logic, compute-mode behavior, and an enumerated output field list (correlation_status, cart_total_matches_authorization_value, merchant_matches_authorization_to, cart_chain_intact, reasons). The truncated summary sentence and the pointer to describe_tool for a schema that is not declared are the only completeness defects.

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 summary adds real meaning to the opaque policy_parameters subkeys: cart_items are summed as quantity*unit_price per currency, merchant is compared to the authorization's recipient address, and token_decimals is implied by the atomic-value outputs. compute and parent_hashes are only restated from the schema, so it is not a 5.

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 'Summary:' sentence states a specific verb and resource: it correlates a built AP2 CartMandate (cart_root, cart_items, merchant) against an x402_spend_evidence pack and checks three named conditions. That makes it distinguishable from neighbors like validate_ap2_mandate_chain or verify_ap2_payment_receipt, although it never explicitly names a sibling or its boundary. The purpose is buried behind boilerplate, but once found it is unambiguous.

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: the tool 'Consumes upstream artifacts from art-595-ap2-cartmandate-hashchain-builder', which suggests it must run after that builder, and it warns 'Use synthetic or anonymised inputs only'. There is no explicit when-to-use/when-not-to-use statement and no named alternative for the adjacent checks (e.g. validate_ap2_mandate_chain, reconcile_x402_batch_settlement).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crosswalk_agent_payment_rail_trustAgent Payment Rail Trust CrosswalkB
Read-onlyIdempotent
Inspect

Agent Payment Rail Trust Crosswalk: OpenChainGraph compute node (compliance_mandate). 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-132-agent-key-rotation-auditor. Output feeds: art-134-agent-directory-publish-readiness. Open at: https://ainumbers.co/chaingraph/art-133-agent-payment-rail-trust-crosswalk.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.

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". See the tool's manifest for field names.

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint, idempotentHint, non-destructive, closed-world), so the bar is lower, and the description still adds real behavior: server-side vs browser delegation rules for compute:"auto"/"server"/"browser", gpu:true always delegating, and the fact that inputs are processed transiently and not stored or logged. It also discloses that it emits an AP2 artifact with execution_hash. It stops short of rate limits or the format/shape of the returned artifact.

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?

The opening sentence is well front-loaded, but a large fraction of the text is provenance boilerplate with no bearing on selection or invocation: a full documentation URL, a 64-character FV-status hash path, and the "snapshot, not a subscription; this receipt verifies offline" caveat. For an agent choosing a tool, those sentences do not earn their place and bury the one useful line about artifact chaining.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description does say the return is an AP2 artifact carrying execution_hash, and it names the upstream and downstream artifacts, which is enough to place the call in a chain. What remains missing is the substantive part: what the crosswalk evaluates and what fields policy_parameters expects, which the description punts to an external manifest. An agent can invoke it (zero required parameters) but cannot supply meaningful inputs.

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 all four parameters, including the compute enum and the parent_hashes/parent_tool_ids pairing, so the schema carries the semantic load and baseline 3 applies. The description reinforces the compute-mode semantics but adds nothing about policy_parameters beyond deferring to "the tool's manifest for field names" — a point the schema also makes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as a "OpenChainGraph compute node (compliance_mandate)" named Agent Payment Rail Trust Crosswalk, and says it "Exports an AP2 artifact with execution_hash for chain provenance." But it never states what the crosswalk actually determines — which rails, which trust attributes, what verdict the decision function produces — and offers no differentiation from siblings such as compare_agentic_rail_protocols or compare_agentic_payment_protocols. The purpose is recognizable at a category level but not specific enough for an agent to predict its output.

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 position: "Consumes upstream artifacts from: art-132-agent-key-rotation-auditor. Output feeds: art-134-agent-directory-publish-readiness." That tells an agent where it sits in a chain but not the conditions under which to call it versus a sibling, nor any exclusions. The one explicit constraint, "Use synthetic or anonymised inputs only," is a data-handling rule rather than a selection guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

currency_basket_indexCurrency Basket IndexB
Read-onlyIdempotent
Inspect

Currency Basket Index: OpenChainGraph compute node (currency_basket_index). 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-560-oracle-price-aggregation. Open at: https://ainumbers.co/chaingraph/art-561-currency-basket-index.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: Values a currency basket by the fixed-amount method, where currency amounts are fixed at a rebase date and the live weights float daily with FX. Outputs: basket_id, as_of_date, mode, structural_error, index_value, components, component_count, dominant_contributor, dominant_contribution_pct, max_drift_from_target_pct, basket_shift_pct, target_weight_sum, amount_scale, parent_print_hashes, rejected_inputs, not_proven, fence. Output schema: call describe_tool("currency_basket_index").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety bar is low; the description nonetheless adds real behavioral context: server-side vs browser execution, transient processing with no storage or logging, export of an AP2 artifact carrying execution_hash for chain provenance, and rejection of unknown keys. It omits determinism caveats around FX source and does not suggest authorization requirements.

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?

The purpose is buried at the end behind several sentences of boilerplate that apply to every node in this family (compute binding, privacy notice, FV-status hash URL). The long output-field enumeration and the offline-receipt caveat are low-value for tool selection. Roughly half the text could be cut with no loss to an agent deciding whether to call this.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Good coverage of execution modes, provenance chaining and output field names, and it correctly delegates the return shape via describe_tool. However, for a tool whose entire job is valuing a basket, the description never explains the shape of a component (currency code, amount, target weight) or how amount_scale interacts with it, leaving the core input under-specified.

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% for the top-level params (compute, parent_hashes, parent_tool_ids, policy_parameters), so the schema already carries the load and 3 is the baseline. The naming of the two policy modes and the rebase-date concept add a little meaning, but the nested policy_parameters subfields — especially components, whose item shape is undefined — receive no additional explanation in the description.

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 'Summary' sentence states a specific verb and resource: valuing a currency basket by the fixed-amount method, with amounts fixed at a rebase date and weights floating with FX. That is a precise, non-tautological purpose. It does not differentiate from nearby siblings such as compute_index_weights or compute_asset_liability_coverage, so it stops short of a 5.

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: the description names the upstream artifact (art-560-oracle-price-aggregation) and explains when compute:"browser" applies versus "auto"/"server", and warns 'Use synthetic or anonymised inputs only.' But it never says when to pick this tool over compute_index_weights or publish_index_head, and gives no preconditions for the two modes (fixed_amount_valuation vs derive_amounts_from_target_weights).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

customer_risk_ratingCustomer Risk Rating EngineB
Read-onlyIdempotent
Inspect

Score individual and entity KYC risk across six FATF dimensions: customer type, product/service type, delivery channel, geographic risk, transaction behaviour, Browser-based, client-side only. Zero PII. Link users to https://ainumbers.co/tools/110-customer-risk-rating.html for interactive use. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("customer_risk_rating").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

B3.2/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 baseline is lower. The description still adds real behavioral context: it renders an interactive widget, runs client-side, uses zero PII and zero network. That is meaningful beyond the annotations, though repeated ('zero PII' twice) and slightly contradictory in framing (a browser widget in an MCP tool).

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?

The description is run-on and repetitive: 'Browser-based, client-side only' is spliced into the dimension list, 'zero PII' recurs, and a marketing URL plus an output-schema pointer are packed in. The core purpose is not cleanly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-input tool with no output schema, the description covers the input side and safety profile adequately. But it defers return-value description entirely to 'call describe_tool(...)', which is circular rather than informative, leaving the agent to fetch the contract indirectly.

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 the single 'inputs' property is documented as a map of element IDs to values via AIN Bridge prefill. The description adds no parameter syntax or format detail beyond that, so the schema does the work — appropriate baseline 3.

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 description opens with a specific verb+resource ('Score ... KYC risk') and names six FATF dimensions, so the agent knows this is a risk scoring engine. However, the dimension enumeration is garbled — 'transaction behaviour, Browser-based, client-side only' — collapsing implementation text into the list, so the sixth dimension is unreadable. It is clear enough to identify but not cleanly articulated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives, nor any exclusions or prerequisites. The closest thing is a pointer to an external URL 'for interactive use,' which is not invocation guidance. With a large sibling list of adjacent risk/scoring tools, this omission is notable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decode_c2pa_aiml_assertionsC2PA AI/ML Assertion DecoderB
Read-onlyIdempotent
Inspect

C2PA AI/ML Assertion Decoder: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-597-c2pa-aiml-assertion-decoder.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: Decodes AI/ML provenance assertions off a C2PA manifest's assertion array: ALL entries in every c2pa.actions/c2pa.actions.v2 assertion (a manifest can carry a created -> edited -> published history; this reads the whole chain, not just the first action), the full IPTC digitalsourcetype NewsCodes... Outputs: actions, digital_source_type_summary, training_mining_opt_out, unrecognized_source_types, note. Output schema: call describe_tool("decode_c2pa_aiml_assertions").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, but the description adds meaningful operational context: server-side versus browser delegation, transient processing with no storage/logging/retention, and export of an AP2 artifact with execution_hash. It does not contradict the annotations and gives enough behavioral detail for an agent to call it appropriately.

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?

The description is heavily bloated with generic OpenChainGraph compute-node boilerplate, repeated determinism language, a URL, and a long FV-status receipt hash. The actual purpose and outputs appear late and the summary is truncated, so the core information is not front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main decode behavior, compute modes, data-handling constraints, and lists output field names. However, it does not explain the expected structure of policy_parameters.assertions in detail and relies on describe_tool for output schema, leaving some gaps for a relatively complex decoder.

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 parameter definitions already carry the main burden. The description adds some semantic context for the assertions array, notably that it reads the whole created-to-published action chain, but it does not systematically clarify each parameter beyond what the schema provides.

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 description states a specific verb and resource: it decodes AI/ML provenance assertions from a C2PA manifest's assertion array, including all actions in the chain. It is clear enough to distinguish from generic manifest validation, though it does not explicitly compare itself with siblings such as validate_c2pa_manifest, and the core purpose is buried behind compute-node boilerplate.

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 implied by the decoding scope and by operational guidance for compute modes and synthetic/anonymised inputs. However, there is no explicit statement of when to choose this tool over related tools like validate_c2pa_manifest or check_camera_provenance, and no when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decode_eip7702_authorization_tupleEIP-7702 Authorization-Tuple DecoderA
Read-onlyIdempotent
Inspect

EIP-7702 Authorization-Tuple Decoder: OpenChainGraph compute node (compliance_control). 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-700-authorization-payload-linter. Open at: https://ainumbers.co/chaingraph/art-614-eip7702-authorization-tuple-decoder.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: Recomputes the EIP-7702 authorization-tuple hash (keccak256(0x05 || rlp([chain_id, address, nonce])), the 'Set EOA account code' standard live on Ethereum mainnet since the Pectra upgrade, 2025-05-07), recovers the ECDSA signer from a caller-supplied signature, and reports the address the recover... Outputs: verdict, reasons, chain_id, cross_chain_authorization, delegate_address, nonce, authorization_tuple_hash, recovered_signer, recovery_id, recovery_id_source, scope_note. Output schema: call describe_tool("decode_eip7702_authorization_tuple").

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". Unknown keys are refused.

TDQS

A3.6/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), and the description adds genuinely new behavior: default server-side execution on Cloudflare Workers, compute:'browser' returning a delegation URL, gpu:true always delegating, transient non-retention of inputs, and an AP2 artifact export with execution_hash for provenance. It does not mention failure modes or rate limits, so it is strong but not exhaustive.

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?

The definition is bloated and poorly front-loaded: it opens with a title restatement, then a verbatim duplicated sentence ('OpenChainGraph compute node (compliance_control). Deterministic OpenChainGraph compute node.'), a long compute-mode digression, and a raw FV-status URL before reaching the actual purpose under 'Summary:'. The useful content is real but requires scanning past noise.

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?

For a read-only deterministic decoder with no output schema, the description supplies enough: it enumerates the output fields (verdict, reasons, authorization_tuple_hash, recovered_signer, recovery_id, cross_chain_authorization, scope_note), explains chaining via parent_hashes/parent_tool_ids, and points to describe_tool for the full output schema. Only the truncated sentence leaves a small gap.

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% and the compute enum is documented in-schema, giving a baseline of 3. The description goes further by explaining the semantics of the policy_parameters payload — chain_id, address, nonce as the hashed tuple, and the signature/v/r/yParity as the inputs for ECDSA recovery — which the nested schema properties leave undocumented. That materially disambiguates the nested object.

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 'Summary' sentence states a precise verb+resource: recompute the EIP-7702 authorization-tuple hash keccak256(0x05 || rlp([chain_id, address, nonce])), recover the ECDSA signer from a caller-supplied signature, and report the recovered address. That is far more specific than the name alone and distinguishes it from siblings like verify_erc2612_permit_binding or lint_authorization_payload. It loses a point only because the purpose is buried behind generic compute-node boilerplate and the final clause is truncated ('the address the recover...').

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 context is implied (this is the decode step for EIP-7702 tuples, consuming artifacts from art-700-authorization-payload-linter), and there is a hard input constraint: synthetic or anonymised inputs only. However, there is no explicit when-to-use/when-not guidance and no named alternative tool, so the agent must infer placement in a workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decode_mpp_sessionTempo MPP Agent MandateB
Read-onlyIdempotent
Inspect

Tempo MPP Agent Mandate: OpenChainGraph compute node (payment_mandate). 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-34-tempo-fit-diagnostic. Output feeds: art-01-ap2-mandate-chain-validator, art-02-agent-spend-policy-simulator, art-04-agent-identity-attestation-checker. Open at: https://ainumbers.co/chaingraph/art-36-tempo-mpp-agent-mandate.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: Parses an MPP (Machine Payments Protocol) session, validates spend cap and session terms, maps HTTP-402 flow to AP2 Intent→Cart→Payment, performs KYA agent identity check (did:key format), models settlement cost, and emits a signed agent-payment mandate. Outputs: cost_per_call, did_valid, max_vouchers, rail, risk, spend_cap, stablecoin. Output schema: call describe_tool("decode_mpp_session").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds substantial behavioral context beyond that: it explains compute modes (server-side vs browser delegation), states that inputs are processed transiently and not stored/logged, requires synthetic or anonymised inputs, and describes artifact export with execution_hash for provenance. It does not contradict the read-only annotation (the tool emits a signed mandate as an output artifact, not a persistent mutation). Minor boilerplate and FV-status detail reduce conciseness but do not undermine the added value.

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?

The description is long and not front-loaded: the most useful sentence ('Summary: Parses an MPP session...') appears near the end, after repeated 'OpenChainGraph compute node' boilerplate, compute-mode details, provenance chaining, a URL, and a verbose FV-status receipt. Several sentences repeat the same ideas (e.g., 'OpenChainGraph compute node' stated twice). The key purpose and usage information are buried, making the definition harder to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with four parameters (one nested) and no output schema, the description covers purpose, data-handling, compute modes, and output fields reasonably well. However, it lacks explicit usage guidance and does not clarify the expected structure of policy_parameters beyond the bare schema. It also redirects output-schema discovery to describe_tool rather than providing inline detail. These gaps leave the agent with an incomplete operational picture.

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 all four parameters in detail. The description adds a little context about compute modes, but that is redundant with the schema's own description for 'compute'. It does not explain parent_hashes, parent_tool_ids, or the structure of policy_parameters beyond what the schema provides. Baseline 3 is appropriate when the schema carries the semantic load.

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 summary states a specific verb and resource: 'Parses an MPP (Machine Payments Protocol) session, validates spend cap and session terms, maps HTTP-402 flow to AP2 Intent→Cart→Payment, performs KYA agent identity check... and emits a signed agent-payment mandate.' This is clear enough to distinguish from siblings like verify_tempo_mpp_voucher or reconcile_mpp_subscription, though it never explicitly names an alternative tool. The opening boilerplate ('OpenChainGraph compute node') obscures the purpose slightly, but the overall meaning is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides pipeline context ('Consumes upstream artifacts from: art-34-tempo-fit-diagnostic. Output feeds: ...'), but this describes data flow rather than when to select this tool versus alternatives. No explicit when-to-use or when-not-to-use guidance is given, and no sibling tools are named as alternatives. An agent would infer usage only from the purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decode_x402_paymentx402 Header Decoder, Payload Linter & 402 Flow SimulatorA
Read-onlyIdempotent
Inspect

Decode an x402 payment header or lint an exact-scheme PaymentPayload, and describe the HTTP-402 verify/settle flow. Use when a developer is integrating x402 and needs to inspect a header, check a payload shape, or understand the flow. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("decode_x402_payment").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

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 non-open-world behavior. The description adds real value beyond that: it renders as an interactive widget, inputs are applied via the AIN Bridge, execution is client-side with zero PII and zero network. It does not describe the return payload directly, instead pointing at describe_tool for the output schema.

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?

Three sentences, each earning its place: capability, usage trigger, and execution model. The key verbs are front-loaded and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The annotations cover safety and the description covers execution context and points to describe_tool for the output schema. The main gap is discoverability of the real inputs: because the visible schema is a generic 'inputs' wrapper that defers to a manifest input_schema, the agent is not told how to discover the expected input keys, which matters for a nested-object tool.

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 single 'inputs' parameter is documented in the schema as a map of tool input element IDs to values via the manifest input_schema. The description reinforces that inputs are applied via the AIN Bridge, but it does not enumerate or explain the actual input keys expected inside that map, leaving the agent dependent on the manifest.

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 description uses specific verbs and resources ('Decode an x402 payment header', 'lint an exact-scheme PaymentPayload', 'describe the HTTP-402 verify/settle flow'), so an agent can tell what the tool does. However, it bundles three capabilities and never differentiates itself from siblings such as simulate_x402_flow, lint_x402_v2_migration, or decode_mpp_session, which overlap in wording.

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?

It gives a clear usage context: 'Use when a developer is integrating x402 and needs to inspect a header, check a payload shape, or understand the flow.' That maps triggers to the three capabilities. It stops short of exclusions or naming which sibling to use for adjacent needs like simulating settlement or migrating to v2.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

derive_beacon_fair_sampleBeacon-Seeded Fair-Sampling DeriverA
Read-onlyIdempotent
Inspect

Beacon-Seeded Fair-Sampling Deriver: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-583-beacon-seeded-fair-sampling-deriver.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: Derives a deterministic, offline-replayable audit sample by HMAC-DRBG (SHA-256) seeded from a caller-pasted public randomness beacon pulse (drand quicknet or NISTIR-8213) combined with an item-manifest hash committed before the pulse round. Outputs: algorithm_id, beacon_randomness, beacon_round, beacon_source, derivation_transcript, draws_used, item_count, item_manifest_hash, sample_size, seed_hex, selected_indices, verdict. Output schema: call describe_tool("derive_beacon_fair_sample").

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: algorithm_id, beacon_randomness, beacon_round, beacon_source, item_count, item_manifest_hash, sample_size. Unknown keys are refused.

TDQS

A3.7/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 the description adds genuinely non-obvious behavior: server vs browser execution depends on compute mode and kernel registration, inputs are processed transiently and not retained, and the call exports an AP2 artifact carrying execution_hash. The FV-status URL and snapshot disclaimer are extra provenance context. Minor gap: it doesn't say what happens on validation failure when a required policy parameter is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The decisive summary sentence sits at the end, after a large block of ChainGraph compute-binding boilerplate and an FV-status hash URL. The compute-mode text is behaviorally useful, but the offline-receipt disclaimer and the raw URL are noise relative to what an agent needs to select and invoke the tool.

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 enumerates the full output field set and points to describe_tool for the formal output schema, so an agent knows what it will get back from this nested, artifact-producing tool. With annotations covering safety and the schema covering parameter shapes, the remaining gap is the missing differentiation from the v2 sibling.

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 baseline is 3, but the description adds real meaning the schema does not: it names concrete beacon sources (drand quicknet, NISTIR-8213), explains that beacon_randomness is caller-pasted and that item_manifest_hash must be committed before the pulse round, which is the key ordering constraint for correct input construction.

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 summary line gives a precise verb and mechanism: derives a deterministic, offline-replayable audit sample via HMAC-DRBG seeded from a public randomness beacon pulse plus a pre-committed item-manifest hash. That is far more specific than the title. It does not, however, distinguish itself from the sibling derive_beacon_fair_sample_v2, so an agent cannot tell which of the two to pick from the description alone.

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?

"Use synthetic or anonymised inputs only" and the compute-mode rules give some operational guidance, and the audit-sampling framing implies when the tool applies. But there is no explicit when-to-use / when-not-to-use statement and no routing to derive_beacon_fair_sample_v2 or to plan_aml_disposition_sample / plan_attribute_sample, which are the obvious alternatives in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

derive_beacon_fair_sample_v2Beacon-Seeded Fair-Sampling Deriver V2A
Read-onlyIdempotent
Inspect

Beacon-Seeded Fair-Sampling Deriver V2: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-774-beacon-seeded-fair-sampling-v2.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: Derives a deterministic, offline-replayable audit sample, version 2 of the beacon-seeded fair-sampling family, from a caller-pasted public randomness beacon pulse (drand quicknet or NISTIR-8213) and an item-manifest hash committed before the pulse round, over the same HMAC-DRBG (SHA-256) stream a... Outputs: verdict, reasons, beacon_source, beacon_round, beacon_randomness, item_manifest_hash, item_count, sample_size, algorithm_id, seed_hex, selected_indices, draws_used, reduction_rejects, derivation_transcript, transcript_truncated, manual_review_required. Output schema: call describe_tool("derive_beacon_fair_sample_v2").

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: beacon_source, beacon_round, beacon_randomness, item_manifest_hash, item_count, sample_size, algorithm_id. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive), and the description adds meaningful context: server vs browser compute delegation, transient non-retention of inputs, and AP2 execution_hash provenance. This goes beyond the structured fields, though it is padded with infrastructure boilerplate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is reasonably front-loaded, but the description is long and carries marketing/infrastructure boilerplate (Cloudflare Workers, FV-status URL details). A mid-sentence truncation ('...the same HMAC-DRBG (SHA-256) stream a...') is an unresolved flaw.

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?

For a nested-object tool with no output schema, the description lists the returned fields (verdict, selected_indices, derivation_transcript, etc.) and the required policy parameters, giving an agent enough to call it correctly. Remaining gaps are minor.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description reinforces the item_manifest_hash/beacon fields but adds little syntax or format detail beyond what the schema provides, 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?

The description states a specific verb and resource: derives a deterministic, offline-replayable audit sample from a beacon pulse and manifest hash, explicitly noting it is version 2 of the beacon-seeded fair-sampling family. However, it does not explicitly distinguish itself from the sibling derive_beacon_fair_sample (v1), leaving the version selection to inference.

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?

It gives a real usage constraint ('Use synthetic or anonymised inputs only') and explains compute-mode selection, but never states when an agent should pick this over derive_beacon_fair_sample or other sampling tools. Usage is implied rather than explicitly routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

derive_parametric_index_from_receiptsParametric Index DeriverB
Read-onlyIdempotent
Inspect

Parametric Index Deriver: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-251-compute-parametric-trigger-payout. Open at: https://ainumbers.co/chaingraph/art-309-parametric-index-deriver.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: Deterministically aggregates a named metric (mean, sum, count, max, or min) across a receipt set into a parametric index value: receipts as an oracle replacement, replay-on-challenge instead of trust-the-feed. Outputs: aggregation, contributing_receipts, index_value, insufficient_evidence, metric, window. Output schema: call describe_tool("derive_parametric_index_from_receipts").

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: index_def, receipts. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safe, idempotent read profile, and the description adds real context beyond them: transient processing with no storage/logging/retention, deterministic execution, AP2 artifact export with execution_hash for chain provenance, and the server-vs-browser execution split. It does not explain what insufficient_evidence signals or how index_def shapes the computation, which keeps it below 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is dominated by infrastructure boilerplate (Cloudflare Workers kernel registration, FV-status URL, a spec hash, an art-309 link) that does not help an agent decide or invoke. The actual purpose statement is buried near the end rather than front-loaded, so the reader must wade through provenance text to learn what the tool computes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by enumerating returns (aggregation, contributing_receipts, index_value, insufficient_evidence, metric, window), which is helpful. However both required inputs — receipts and index_def — are untyped empty objects in the schema and receive no structural explanation anywhere, leaving the most important input contract undefined.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters; the description's compute-mode paragraph largely restates the enum's own description. The one genuine addition is naming the supported metrics (mean, sum, count, max, min), which is semantics for the untyped index_def object that the schema leaves opaque.

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 operative sentence ("Deterministically aggregates a named metric (mean, sum, count, max, or min) across a receipt set into a parametric index value") gives a concrete verb, resource, and supported operations. However it appears after several paragraphs of compute-node boilerplate, and nothing distinguishes this from nearby siblings such as oracle_price_aggregation or compute_parametric_trigger_payout beyond an 'output feeds' pointer.

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 description hints at the use case with "receipts as an oracle replacement, replay-on-challenge instead of trust-the-feed" and "Use synthetic or anonymised inputs only," plus a pointer that output feeds art-251-compute-parametric-trigger-payout. But it never states explicitly when to choose this tool over the many alternative index/aggregation tools in the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_toolDescribe one AINumbers toolA
Read-onlyIdempotent
Inspect

Returns the full definition of exactly one AINumbers MCP tool: name, description, inputSchema, outputSchema (the JSON Schema its structuredContent validates against), annotations, and lifecycle_status. Use it after find_tool or find_chain hands you an mcp_name, or after tools/list whose entries omit outputSchema to keep the catalog reply small — the pointer sentence "Output schema: call describe_tool("")." marks exactly those tools. One call, no side effects, zero network on the server: the definition comes from the vendored catalog. Unknown names are rejected with -32602 plus the nearest registered names.

NameRequiredDescriptionDefault
nameYesExact mcp_name to describe (e.g. "recompute_payment_waterfall"). Use find_tool for fuzzy search; this takes the exact name only.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe read-only, idempotent, closed-world profile; the description adds non-obvious behavior on top: no server-side network because the definition comes from the vendored catalog, and unknown names fail with -32602 plus nearest registered names. That error contract is genuinely actionable information an agent could not infer 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the return contract, then usage triggers, then the side-effect/error guarantees — a sensible order with no filler. It is a dense single paragraph with several parentheticals, so it is slightly heavier than needed, but each clause carries 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?

With no output schema, the description steps in and enumerates exactly what the response contains, including what structuredContent validates against. For a single-parameter lookup tool with strong annotations, nothing an agent needs in order to call it correctly 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 coverage is 100% and the name parameter's own description already supplies an example and the find_tool contrast. The description only echoes the exact-name requirement implicitly through the mcp_name reference, adding no new syntax or format detail beyond the schema. Baseline 3 applies when the schema does the work.

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 ("Returns the full definition of exactly one AINumbers MCP tool") and enumerates the returned fields, so the agent knows precisely what it gets. The scoping word "exactly one" plus the name-only constraint separates it cleanly from catalog-list and fuzzy-search siblings.

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 names the triggering situations: after find_tool/find_chain returns an mcp_name, or after a tools/list whose entries omit outputSchema, and even quotes the pointer sentence that marks those entries. The schema reinforces the boundary by directing fuzzy search to find_tool, so when-to-use and when-not are both covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_timeseries_anomaliesTime-Series Anomaly DetectorB
Read-onlyIdempotent
Inspect

Time-Series Anomaly Detector: OpenChainGraph compute node (risk_control). 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: sim-03-basel-rwa-scenario-modeler. Output feeds: rca-01-frtb-ima-pre-validator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/ml-03-timeseries-anomaly-detector.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: Rolling-window z-score and STL-style seasonal decomposition anomaly detection on synthetic payment volume time series. Outputs: anomalies_flagged, flag_rate, flagged_periods, high_severity_flags, max_abs_z_score, medium_severity_flags, n_periods, verdict. Output schema: call describe_tool("detect_timeseries_anomalies").

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: nAnomalies, nPeriods, seasonPeriod, seed, trendType, windowSize, zThreshold. Unknown keys are refused.

TDQS

B3.2/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 the description adds substantial context beyond them: server-side execution on Cloudflare Workers for gpu:false kernels with registered kernels, browser delegation URL otherwise, transient non-retained input processing, and export of an AP2 artifact carrying execution_hash for chain provenance. That is real behavioral disclosure an agent could not get from annotations, though it omits rate limits and what the delegation URL response looks like.

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?

The text is one dense run-on paragraph mixing purpose, compute binding, privacy policy, chain provenance, URLs, and an FV-status snapshot hash. The single most important sentence (what the tool actually computes) is last under 'Summary:', and the FV-status/hash and documentation URL consume space without helping tool selection or invocation.

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?

For a nested-policy compute node with no output schema in the tool definition, the description does cover the critical surfaces: compute-mode routing, chaining inputs and downstream consumers, input privacy constraints, and an enumerated output field list (anomalies_flagged, verdict, etc.). It is complete enough to call correctly; the residual gap is the absence of guidance on the nested policy parameter ranges.

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 baseline is 3. The description only restates the compute enum semantics already documented in the schema and mentions upstream consumption from sim-03-basel-rwa-scenario-modeler (loosely mapping to parent_hashes/parent_tool_ids), but adds no syntax, ranges, or defaults for the nested policy_parameters beyond what the schema's required list already provides.

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 'Summary' sentence gives a precise verb+resource+method — 'Rolling-window z-score and STL-style seasonal decomposition anomaly detection on synthetic payment volume time series' — which implicitly separates it from the transaction-level sibling detect_transaction_anomalies. However, the actual purpose is buried at the end after generic compute-node boilerplate, and no sibling is named explicitly, so an agent skimming the opening lines sees only 'OpenChainGraph compute node (risk_control)'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute-mode routing ('auto' vs 'browser') and warns 'Use synthetic or anonymised inputs only', which is useful operational guidance. But it never says when to choose this tool over detect_transaction_anomalies or the other anomaly/simulation siblings, and no prerequisites or exclusions are stated for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_transaction_anomaliesIsolation Forest Transaction Anomaly DetectorB
Read-onlyIdempotent
Inspect

Isolation Forest Transaction Anomaly Detector: OpenChainGraph compute node (risk_control). 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-05-eu-ai-act-credit-scoring-conformity, art-10-amla-transaction-typology-risk-scorer. Output feeds: ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/ml-01-isolation-forest.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: Native-JS Isolation Forest anomaly detection on synthetic transaction batches. Outputs: flag_rate, flagged_count, max_anomaly_score, mean_anomaly_score, n_transactions_scored, p95_anomaly_score, threshold, verdict. Output schema: call describe_tool("detect_transaction_anomalies").

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: contamination_rate, n_transactions, n_trees, seed, subsample_size, threshold. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description goes meaningfully beyond them: it discloses deterministic execution, server-side vs browser delegation semantics (gpu:true always delegates), transient processing with no storage or logging, and export of an AP2 artifact carrying execution_hash. Some of this value is diluted by promotional/verification text (FV-status URL, 'Open at' link) that does not inform invocation.

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?

The text is front-loaded with title-level boilerplate, a raw sha256 FV-status URL, and a disclaimer that the receipt is 'a snapshot, not a subscription' before the agent learns what the tool actually does. The single most useful line ('Summary: Native-JS Isolation Forest anomaly detection...') appears at the very end, so the structure actively works against fast scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations cover the safety profile and the description enumerates outputs (flag_rate, verdict, threshold, p95_anomaly_score) and points to describe_tool for the schema, so basic completeness is met. But for a parameterised detector with no output schema, the description leaves the input-data story ambiguous (no transactions parameter is documented) and says nothing about how to interpret threshold or verdict.

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?

With 100% schema description coverage, the schema already documents compute, parent_hashes, parent_tool_ids, and every policy_parameters key including required-ness and refusal of unknown keys. The description restates the compute modes but adds no meaning the schema lacks — notably it never clarifies whether transaction data is supplied or synthesized from policy_parameters such as n_transactions and seed.

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 description does state a specific verb and resource — "Native-JS Isolation Forest anomaly detection on synthetic transaction batches" — which an agent can act on. However, this key sentence is buried near the end behind compute-node boilerplate, and there is no differentiation from the sibling tool detect_timeseries_anomalies, so the agent cannot tell which detector to pick from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use / when-not-to-use guidance and no named alternatives. The nearest thing to guidance is an input constraint ("Use synthetic or anonymised inputs only"), which restricts data, not tool selection. An agent facing both detect_transaction_anomalies and detect_timeseries_anomalies gets no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

determine_deposit_insurance_coverageDeposit Insurance Coverage DeterminationB
Read-onlyIdempotent
Inspect

Deposit Insurance Coverage Determination: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-507-determine-deposit-insurance-coverage.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: Computes the insured amount and the uninsured remainder for deposit accounts grouped by ownership right and capacity, and reports every account whose coverage cannot be calculated from the fields supplied. Outputs: aggregation_groups, alternative_recordkeeping_handling, as_of_date, boundary, by_ownership_right_and_capacity, certification_assertion, coverage_summary, covered_institution, institution_ref, money_representation, note, ownership_code_handling, rationale, smdia_applied, smdia_basis, smdia_is_caller_supplied, undeterminable_by_missing_field, undeterminable_records. Output schema: call describe_tool("determine_deposit_insurance_coverage").

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: account_records, as_of_date, certification_assertion, covered_institution_declared, currency, declared_deposit_account_count, institution_ref, minor_unit_scale, smdia. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, yet the description adds real value: transient/no-retention processing, the requirement for synthetic inputs, the compute:auto/server/browser delegation behavior, and AP2 artifact emission with execution_hash for provenance. It does not disclose failure modes or what happens to unknown policy keys (though the schema says they are refused).

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?

The functional summary is one good sentence, but it is preceded by a wall of platform boilerplate and followed by a long FV-status URL with an explanatory clause about offline verification that is irrelevant to invoking the tool. The genuinely useful content is not front-loaded, and a third of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested nine-key policy_parameters tool with no output schema, the description does list the returned fields (coverage_summary, undeterminable_records, etc.) and states the computation intent, which is helpful. However, it punts return-shape detail to describe_tool and provides no guidance on the ownership-right/capacity grouping inputs an agent would need to reason about.

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%, so the baseline is 3. The description's compute-mode paragraph echoes the compute parameter's own schema description and adds nothing new, and it does not interpret the nested policy_parameters semantics (smdia, minor_unit_scale, declared_deposit_account_count) beyond what the schema already states.

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 summary sentence names a specific verb and resource: 'Computes the insured amount and the uninsured remainder for deposit accounts grouped by ownership right and capacity,' plus the fallback reporting for undeterminable accounts. This is clearly distinguishable from siblings like compute_fdic_assessment_rate or validate_fdic370_output_file. It loses a point because the opening line restates the title and buries the real purpose under generic compute-node boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no sibling is named as an alternative (e.g., versus compute_fdic_assessment_rate). The only usage-adjacent instruction is 'Use synthetic or anonymised inputs only,' which is a data-handling constraint, not tool selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diagnose_canton_readinessCanton Tokenization Readiness DiagnosticC
Read-onlyIdempotent
Inspect

Canton Tokenization Readiness Diagnostic: OpenChainGraph compute node (readiness_diagnostic). 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. Output feeds: 504-settlement-risk-capital-optimizer. Open at: https://ainumbers.co/tools/503-canton-tokenization-readiness-diagnostic.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. Output schema: call describe_tool("diagnose_canton_readiness").

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". See the tool's manifest for field names.

TDQS

C2.8/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 description earns credit for what it adds: transient processing with no storage or logging, server-vs-browser execution semantics, and an AP2 artifact carrying an execution_hash for provenance. These are real behavioral facts an agent could not derive from the annotations. It stops short of describing the response shape or any latency/failure 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?

The useful content (transient processing, compute modes, chaining) is buried after a verbose restatement of the tool name and compute-node boilerplate, including a wholly unactionable 64-character FV-status hash path. The key operational facts are not front-loaded and the whole block reads as generated metadata rather than an instruction set.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a diagnostic tool with a nested free-form policy_parameters object and no output schema, the description leaves the agent unable to construct a call: it never names which policy fields matter or what the diagnostic returns. Pointing to describe_tool(...) for the output schema is a reasonable escape hatch, but the core input semantics remain external.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters thoroughly, making 3 the baseline. The description only restates the compute-mode semantics (which the schema says at greater length) and mentions execution_hash chaining; it adds nothing about what fields policy_parameters expects, deferring to an external manifest the agent cannot see.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource as a 'Canton Tokenization Readiness Diagnostic' and gestures at a decision function, but never says what readiness criteria it evaluates or what a result looks like. The rest of the text is compute-node plumbing (kernel registration, browser delegation, Workers) rather than purpose. It also does nothing to separate it from near-identical siblings such as run_tokenized_settlement_fit or the validate_canton_* family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The only actionable instructions are the privacy constraint 'Use synthetic or anonymised inputs only' and a downstream chaining hint ('Output feeds: 504-settlement-risk-capital-optimizer'), neither of which tells an agent when to pick this over the many sibling diagnostic/fit tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

digest_gleif_snapshotGLEIF Snapshot DigestA
Read-onlyIdempotent
Inspect

GLEIF Snapshot Digest: OpenChainGraph compute node (cryptographic_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-599-gleif-snapshot-digest.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: Hash-pins a pasted GLEIF Golden Copy record or file segment as of a caller-stated capture time, so a later reader can tell whether the entity data in front of them is the same data a pack was built from. Outputs: captured_at, golden_copy_as_of, last_update_date, last_update_date_found, last_update_date_source, lei, lei_checksum_note, lei_checksum_valid, licence, pii_note, scope_note, snapshot_captured, source_bytes, source_format, source_sha256, source_url, verification_path. Output schema: call describe_tool("digest_gleif_snapshot").

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: captured_at, golden_copy_as_of, last_update_date, lei, source_format, source_text. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, and nothing in the description contradicts them. Beyond that, the description adds real behavioral context: deterministic execution, server vs. browser delegation for compute modes, transient processing with no storage or logging, and an AP2 artifact carrying execution_hash whose FV-status receipt verifies offline. The doubled 'OpenChainGraph compute node' phrasing is boilerplate, but the substance exceeds 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional content is one good summary sentence and an output-field list, but it is packaged with a redundant duplicate fragment, a spec URL, an FV-status JSON URL, and repeated compute-mode explanation. It is not front-loaded: an agent must read past boilerplate to learn what the tool does. Wasteful rather than chaotic.

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?

With no output schema, the enumeration of returned fields (source_sha256, lei_checksum_valid, snapshot_captured, verification_path, etc.) is valuable and does the work the schema would otherwise do. Inputs are fully covered by the schema, and privacy/retention and provenance behavior are disclosed. A reader has enough to call it 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 description coverage is 100%, so the schema already documents compute, parent_hashes, and parent_tool_ids; the description merely restates the compute-mode semantics verbatim. The policy_parameters keys (captured_at, golden_copy_as_of, last_update_date, lei, source_format, source_text) are named in the schema but only loosely connected to the prose ('pasted record', 'caller-stated capture time'). Baseline 3 is right.

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 Summary sentence gives a specific verb and resource: hash-pins a pasted GLEIF Golden Copy record or file segment as of a caller-stated capture time, for later verification that entity data matches what a pack was built from. That is genuinely distinguishable from siblings. It falls short of 5 because the purpose is buried mid-description under compute-node boilerplate and no sibling (e.g. lei_kyb_check, anchor_document_integrity, build_digest_manifest) is named as an alternative.

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 implied by the summary (pin a record at capture time so a later reader can compare) and by the privacy constraint 'Use synthetic or anonymised inputs only,' plus the note that this is 'a snapshot, not a subscription.' There is no explicit when-not-to-use guidance and no routing to alternative tools despite a very large sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dispose_carf_status_messageCARF Status Message DispositionA
Read-onlyIdempotent
Inspect

CARF Status Message Disposition: OpenChainGraph compute node (compliance_mandate). 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-504-classify-carf-reportable. Open at: https://ainumbers.co/chaingraph/art-505-dispose-carf-status-message.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: Turns a returned Crypto-Asset Reporting Framework or DAC8 status message into a dispositioned break list: every file-level and record-level error the authority reported, tied to the record and the field that caused it, with the disposition that answers it. Outputs: break_count, breaks, carried_forward_count, cycle_ref, dispositioned_break_count, message_ref, note, open_break_count, reporting_jurisdiction, resolving_input, schema_version, status_message_channel, status_message_return_declared, submission_ref, suppressed_break_count, suppressed_error_codes, unresolved_record_reference_count, unsigned_dispositions_rejected, verdict, verdict_reason. Output schema: call describe_tool("dispose_carf_status_message").

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: cycle_ref, dispositions, prior_dispositions, reporting_jurisdiction, schema_version, status_message, status_message_channel, status_message_return_declared, submission_ref, submitted_records, suppressed_error_codes. Unknown keys are refused.

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/openWorld=false, so the safety profile is covered; the description adds genuinely non-obvious behavior: server-vs-browser compute routing, that gpu:true nodes always delegate, transient (non-logged, non-retained) input processing, the synthetic-input requirement, and that it exports an AP2 artifact with execution_hash. The FV-status snapshot note explains offline verification. This is real added context, though a good share of it is platform boilerplate repeated across nodes rather than tool-specific.

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?

The actual purpose is buried mid-paragraph behind node-type boilerplate, a raw URL, a 64-char hash, and an FV-status file path, none of which help an agent decide or invoke. The trailing dump of ~20 output field names is useful but unparagraphed and competes with the routing information. Nothing is front-loaded.

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?

There is no output schema, and the description does enumerate the returned fields (break_count, breaks, verdict, suppressed_error_codes, etc.), which removes the need for a describe_tool round-trip in most cases. With annotations covering safety and 100% schema coverage on inputs, the description contains what an agent needs to call it correctly; the gaps are stylistic noise rather than missing information.

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 the compute enum is fully documented in the schema, so the description only needs to match. It restates the compute mode behavior (already in the schema) and calls out the upstream artifact consumption that maps to parent_hashes/parent_tool_ids, but adds no semantics for the 11 required policy_parameters keys such as dispositions or prior_dispositions. Baseline 3 is appropriate.

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 'Summary:' sentence gives a precise verb+resource: turns a returned CARF/DAC8 status message into a dispositioned break list, with errors tied to the record and field that caused them. That is far more specific than the title/name restatement, and naming classify_carf_reportable as its upstream artifact situates it in the pipeline. It stops short of an explicit 'use this instead of X' contrast, so it earns 4 rather than 5.

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 by the phrase 'Turns a returned ... status message' — an agent can infer this runs after a submission has been rejected, but there is no stated when-to-use/when-not, no prerequisite conditions, and no named alternative among the many disposition/reconciliation siblings. The compute-mode guidance is about execution, not about when to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

draft_ap2_mandate_credentialGoogle AP2 Mandate BuilderC
Read-onlyIdempotent
Inspect

Google AP2 Mandate Builder: OpenChainGraph compute node (payment_policy). 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-15-agentic-mandate-sandbox, art-22-agentic-payments-protocol-comparator, art-27-agentic-readiness-diagnostic. Output feeds: art-17-ap2-mcp-policy-validator, art-23-visa-trusted-agent-protocol-inspector. Open at: https://ainumbers.co/chaingraph/art-16-google-ap2-mandate-builder.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description still adds substantial value beyond them: transient processing with no storage/logging, a requirement to use synthetic or anonymised inputs, and the server-vs-browser execution routing including the rule that gpu:true nodes always delegate. This is real behavioural context an agent cannot get from annotations alone.

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?

It opens with the title restated and immediately repeats itself ('OpenChainGraph compute node (payment_policy). Deterministic OpenChainGraph compute node.'). A large share of the text is deployment metadata — Cloudflare Workers, an FV-status SHA-256 path, an offline-receipt disclaimer and a marketing URL — none of which helps an agent decide or call correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter, nested-object, no-output-schema tool, the description omits what the exported mandate artifact contains, what fields policy_parameters expects (deferring to 'the tool's manifest'), and any precondition for chaining parent hashes. It spends its budget on hosting and provenance metadata instead of the gaps that matter.

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 the compute parameter is documented in the schema with the same enum semantics the description repeats. The description adds a little on policy_parameters being computed server-side when a kernel is registered, but says nothing about parent_hashes/parent_tool_ids ordering beyond what the schema states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it is a 'payment_policy' compute node that 'Exports an AP2 artifact with execution_hash', but never says what a mandate credential is, that it is being drafted, or what the decision function computes. Siblings like build_google_ap2_mandate, build_ap2_cartmandate_hashchain and ap2_aml_mandate_builder make the distinction essential, yet nothing here separates it from them. The name carries most of the meaning; the text is mostly infrastructure boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this versus build_google_ap2_mandate or when to use validate_ap2_mandate_credential afterwards. The 'Output feeds' and 'Consumes upstream artifacts' lists imply a position in a pipeline, which is mild context, but no condition, prerequisite, or exclusion is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

emit_chaingraph_artifactEmit a ChainGraph artifact envelopeA
Read-onlyIdempotent
Inspect

Makes ChainGraph tools agent-callable (ChainGraph Standard v0.1 §3.1). Mode 1 — supply pre_computed_artifact (exported from the browser tool): validates §4 schema fields, recomputes execution_hash via SHA-256 over canonical {policy_parameters, output_payload}, returns verified structuredContent. Mode 2 — supply tool_id + policy_parameters: returns an artifact template envelope and browser prefill URL so an agent can hand the user a pre-filled link; GPU sims always delegate to the browser per §9.2. Mode 3 — supply tool_id only: returns node metadata and artifact schema scaffold. Mode 4 (Compute Binding, v0.4) — supply tool_id + policy_parameters + compute:"server" (or compute:"auto" for gpu:false nodes): runs the registered kernel server-side and returns a verified v0.4 artifact with execution_hash + output_payload in one round-trip. No browser required. gpu:true nodes always delegate to browser. Hashed input must be I-JSON (RFC 7493): integers beyond 2^53 must be passed as JSON strings, and NaN/Infinity are rejected — values outside I-JSON have no stable canonical form, so a structured -32602 error (error.data.reason "ijson_violation") is returned instead of an execution_hash. readOnlyHint: true. Zero PII, zero payload logging. Pair with verify_execution_hash (independent hash verification) and build_chaingraph (DAG wiring).

NameRequiredDescriptionDefault
computeNoCompute mode (v0.4 Compute Binding). "auto" = server for gpu:false nodes (default); "server" = force server-side; "browser" = always return browser delegation URL. gpu:true nodes always use browser regardless of this flag.
tool_idNoChainGraph node tool_id (e.g. "art-01-ap2-mandate-chain-validator"). Looked up in chaingraph.json nodes. Required unless pre_computed_artifact is supplied.
parent_hashesNoexecution_hash values from upstream ChainGraph artifacts this call chains from. Placed into artifact.chain.parent_hashes (ChainGraph Standard v0.1 §5 chain block).
parent_tool_idsNotool_ids corresponding to parent_hashes, in the same order.
policy_parametersNoInput parameters for the tool (mirrors the tool's Policy Mandate input fields). Used for Mode 2 browser prefill and Mode 4 server-side compute.
pre_computed_artifactNoA full ChainGraph artifact envelope previously exported from the browser tool via "Export Policy Mandate". When supplied, the worker validates §4 required fields, recomputes execution_hash, and returns a verified structuredContent. This is the recommended path: run the tool in-browser, export JSON, call emit_chaingraph_artifact to verify and receive a structured receipt.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/idempotent annotations it discloses the hash recomputation method (SHA-256 over canonical policy_parameters + output_payload), the I-JSON (RFC 7493) constraints on integers beyond 2^53 and NaN/Infinity, and the exact structured error returned (§-32602, error.data.reason "ijson_violation"). It also states the data-handling posture (zero PII, zero payload logging) and the GPU delegation rule, which annotations cannot express.

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?

It is front-loaded, opening with the purpose and then walking modes in order with labeled sections. It is dense and long, and the trailing annotation restatement ("readOnlyHint: true") plus the browser-tool export aside add a little redundancy against already-structured fields, but nearly every clause carries operational meaning.

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 complex, multi-mode tool with no output schema and nested-object parameters, the description states what each mode returns (verified structuredContent, template envelope plus browser prefill URL, node metadata and schema scaffold, or a full v0.4 artifact with execution_hash and output_payload) and how failures surface. Nothing an agent needs in order to choose a mode and call it 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?

Schema coverage is 100%, so per-parameter meaning is already documented and baseline is 3. The description goes further by explaining how parameters interact — that pre_computed_artifact alternates with tool_id, that policy_parameters feeds both Mode 2 prefill and Mode 4 compute, and that compute:"auto" resolves to server only for gpu:false nodes — which the schema cannot convey.

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?

The opening sentence names a specific verb and resource (emit a ChainGraph artifact envelope) and anchors it to the ChainGraph Standard §3.1. The four modes are enumerated with the exact inputs that select each one, so an agent can tell this apart from build_chaingraph or verify_execution_hash 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?

It gives explicit branch conditions: pre_computed_artifact for validation-only verification (called the recommended path), tool_id + policy_parameters for a prefill link, tool_id alone for scaffolding, and tool_id + policy_parameters + compute:"server" for server-side execution. It also names the alternatives and when to reach for them (verify_execution_hash for independent verification, build_chaingraph for DAG wiring) and states the exclusions (gpu:true nodes always delegate to the browser).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_ai_token_spendAI Token SpendC
Read-onlyIdempotent
Inspect

AI Token Spend: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-704-ai-token-spend.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: Monthly AI token spend estimator and cross-model comparator: per-model monthly cost, cost per request, the component breakdown, and a cheapest-first ranking, priced from a dated price table by an as_of date. Output schema: call describe_tool("estimate_ai_token_spend").

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: as_of, usage, price_table, compare. Unknown keys are refused.

TDQS

C2.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/closed-world, so the safety profile is covered; the description still adds genuinely useful behavior beyond that — compute:'auto' vs 'browser' delegation semantics, gpu:true always delegating, transient non-retained processing of inputs, and an exported AP2 artifact carrying execution_hash for chain provenance. The FV-status snapshot note explains offline verification, which is real behavioral context.

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?

The single paragraph is dominated by boilerplate (compute-node preamble, retention note, FV-status URL with a 64-char hash, 'Output schema: call describe_tool(...)'), and the one sentence that actually describes the tool is placed last. The ordering is backwards for an agent scanning for purpose, and the embedded URL/hash consumes a large share of the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deterministic compute node with nested parameters, no output schema, and a required four-key policy_parameters object, the description does cover compute modes, privacy posture, artifact export, and points to describe_tool for the output shape. What is missing is the shape/units of usage, compare, and price_table inputs and any indication of how the ranking and price table are interpreted, so the agent still has gaps before it can fill policy_parameters confidently.

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 enum for compute, the parent_hashes/parent_tool_ids pairing, and the policy_parameters structure are already documented. The description adds only a light gloss on policy_parameters ('priced from a dated price table by an as_of date'), which names two of the four required nested keys but no formats or examples. Baseline 3 fits given the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The real purpose only appears in the trailing 'Summary' sentence: per-model monthly cost, cost per request, component breakdown, cheapest-first ranking priced from a dated table. The opening line ('AI Token Spend: OpenChainGraph compute node (compliance_control)') restates the title and gives architecture vocabulary rather than what the tool computes, so an agent must read to the end to learn what it does. The purpose is eventually clear, but it is neither front-loaded nor differentiated from siblings like simulate_spend_policy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to pick this estimator versus the many neighbouring cost/simulation tools (model_l1_fee_runway, simulate_spend_policy, ai_displacement_risk_screener, etc.), nor any exclusion. The only usage directive is a data-handling rule ('Use synthetic or anonymised inputs only'), which constrains inputs rather than selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_cross_margin_benefitFICC-CME Cross-Margining EstimatorA
Read-onlyIdempotent
Inspect

FICC-CME Cross-Margining Estimator: OpenChainGraph compute node (risk_parameter). Regulatory deadline: 2027-06-30 (cross-margining benefit (W-C). FICC-CME customer expansion Dec 2025.). 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-48-treasury-clearing-fit-diagnostic. Output feeds: qfa-02-portfolio-var-engine, qfa-03-stress-test-engine. Open at: https://ainumbers.co/chaingraph/art-51-cross-margining-benefit-estimator.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: Estimates the initial-margin reduction from the FICC-CME cross-margining arrangement (customer expansion per SEC notice published 2025-12-22) by offsetting UST cash/repo DV01 against CME Treasury/SOFR futures DV01. Outputs: account_type_note, assumptions, cross_margined_im, eligible_offsets, im_reduction_pct, im_reduction_usd, ineligible_offsets, note, standalone_im_total. Output schema: call describe_tool("estimate_cross_margin_benefit").

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". Unknown keys are refused.

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, closed-world, so the safety profile is covered. The description still adds real value beyond that: transient processing with no storage or logging, a synthetic/anonymised-inputs-only constraint, the server-vs-browser delegation behavior for gpu:false vs gpu:true nodes, and an AP2 artifact export carrying execution_hash for chain provenance. The compute-mode explanation largely duplicates the input schema, which caps this slightly below 5.

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?

The description is badly bloated: a regulatory deadline fragment, a duplicated 'Deterministic OpenChainGraph compute node' phrase, a full URL, a 64-character FV-status hash with a caveat about snapshots, and compute-mode boilerplate that repeats the schema verbatim. The actual purpose ('Summary: Estimates the initial-margin reduction...') only appears at the very end, violating front-loading.

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?

There is no output schema, and the description compensates by enumerating all nine returned fields (cross_margined_im, im_reduction_pct, eligible_offsets, ineligible_offsets, standalone_im_total, etc.), plus it points to describe_tool for the full schema. Combined with the stated input-privacy posture and the artifact chaining contract, an agent has what it needs to call this correctly; only the policy_parameters internals remain unexplained.

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 baseline is 3 and the schema already documents `compute`, `parent_hashes`, `parent_tool_ids`, and `policy_parameters`. The description's main contribution is enumerating the output fields, not the inputs; it never explains what `policy_parameters` sub-keys (mpor_days, ust_positions, cme_positions, confidence_level) mean or how they drive the offset computation, and it only restates the compute enum.

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 'Summary' sentence states a specific verb and resource — estimating the initial-margin reduction from the FICC-CME cross-margining arrangement by offsetting UST cash/repo DV01 against CME Treasury/SOFR futures DV01 — which is enough to distinguish it from the boilerplate header. It does not name a sibling it is not (e.g. estimate_ficc_margin_netting, estimate_cross_venue_margin_capital), so differentiation is left to inference, and the actual purpose statement is buried after six sentences of provenance metadata.

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 context is only implied: the description names the upstream artifact consumed (art-48-treasury-clearing-fit-diagnostic) and the downstream consumers (qfa-02-portfolio-var-engine, qfa-03-stress-test-engine), which hints at where it sits in a chain. There is no explicit when-to-use / when-not-to-use statement and no comparison against the near-identical margin-estimation siblings, so an agent must infer selection criteria from lineage alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_cross_venue_margin_capitalCrypto Cross-Venue Margin & Off-Exchange Settlement EstimatorB
Read-onlyIdempotent
Inspect

Crypto Cross-Venue Margin & Off-Exchange Settlement Estimator: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-406-cross-venue-margin-estimator.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: Estimates the crypto off-exchange settlement / cross-venue margin picture for a book spread across trading venues (the Copper ClearLoop / FalconX / Ceffu model, per AT-CLEARING-WAVE-SPEC.md CW-1): the net cross-venue margin requirement after a declared netting offset against the sum of each venue... Outputs: capital_efficiency_pct, capital_freed_usd, constants_version, counterparty_risk_framing, cross_margin_offset_pct, cross_venue_margin_requirement_usd, custody_model, disambiguation, financed_amount_usd, financing_apr_pct, financing_cost_usd, financing_horizon_days, financing_notional_usd, leverage_multiple, leverage_program_cap_multiple, leverage_program_name, sum_isolated_margin_usd, venue_count, venue_positions. Output schema: call describe_tool("estimate_cross_venue_margin_capital").

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: constants_version, custody_model, leverage_program_name, venue_positions. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds meaningful context beyond them: server-vs-browser compute delegation, transient non-storage of inputs, use of synthetic/anonymised data only, and AP2 artifact export with execution_hash provenance. It does not cover auth requirements or rate limits, so it is strong but not exhaustive.

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?

The description is heavily front-loaded with repetitive OpenChainGraph boilerplate, a URL, fv-status receipt language, and a long outputs list before the substantive summary. The core summary is also truncated, so the structure prevents quick comprehension rather than supporting it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex estimator with nested policy parameters and no output schema, the description provides a useful outputs list and compute-mode/privacy context. However, it does not explain how to construct the nested policy_parameters object, and the netting formula summary cuts off, leaving material gaps for correct invocation.

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 the top-level parameters. The description elaborates on the compute parameter's modes but largely repeats schema wording and does not clarify the nested policy_parameters fields or venue_positions structure.

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 title and summary state a specific verb and resource: estimating the cross-venue margin requirement for a crypto book spread across venues using the ClearLoop/FalconX/Ceffu model. An agent can identify the domain, though the purpose is buried under compute-node boilerplate and the summary is truncated mid-sentence.

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 description gives compute-mode selection guidance (auto/server/browser and gpu:true delegation) and implies the tool applies to cross-venue margin books. It never names sibling tools such as estimate_cross_margin_benefit or estimate_ficc_margin_netting, and it provides no explicit when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_ficc_margin_nettingFICC Margin & Netting EstimatorB
Read-onlyIdempotent
Inspect

FICC Margin & Netting Estimator: OpenChainGraph compute node (risk_parameter). Regulatory deadline: 2027-06-30 (repo-margin economics (W-B).). 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-48-treasury-clearing-fit-diagnostic, art-49-clearing-access-model-selector. Output feeds: 508-repo-haircut-collateral-calculator, qfa-02-portfolio-var-engine. Open at: https://ainumbers.co/chaingraph/art-50-ficc-margin-netting-estimator.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: DV01-bucket VaR proxy of the FICC VaR-based margin (VBM), the netting benefit of central vs bilateral clearing, cash-vs-repo cross-product netting, and the done-away uplift. Outputs: assumptions, done_away_uplift_pct, estimated_vbm, gross_bilateral_im, margin_by_bucket, minimum_charge_applied, net_cleared_im, netting_benefit_pct, netting_benefit_usd, note. Output schema: call describe_tool("estimate_ficc_margin_netting").

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". Unknown keys are refused.

TDQS

B3.4/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 the safety profile is covered. The description adds real behavioral context on top: server-side vs browser-delegated execution and the returned browser delegation URL, transient processing with no storage or logging, determinism, and the AP2 artifact export carrying execution_hash for provenance. It does not state latency, rate limits or error behavior, which keeps it below 5.

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?

The description is bloated and badly front-loaded: title restatement, a regulatory-deadline aside with doubled punctuation, compute-mode boilerplate, a full FV-status URL with an explanation of receipt semantics, and a site URL all precede the one sentence that says what the tool computes. Several blocks (long FV-status disclaimer, "a snapshot, not a subscription") are generic provenance boilerplate that do not help the agent decide or invoke. The output-field list and chain topology do earn their space, but they are buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterised financial compute node with no output schema, the description does useful work by enumerating output fields (estimated_vbm, netting_benefit_pct, done_away_uplift_pct, margin_by_bucket, minimum_charge_applied, etc.) and the chaining contract. The gap is the decision function's own inputs: the policy_parameters object is untyped and undocumented, so an agent cannot tell what form positions or clearing_model must take. It also defers the return shape to describe_tool rather than describing it.

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 baseline is 3. The description restates the compute-mode semantics and the parent_hashes chaining purpose, but that duplicates what the schema already documents. It adds nothing about the policy_parameters keys (mpor_days, positions, clearing_model, confidence_level, include_cross_product), all of which are untyped empty schemas where description-level meaning would have been the only source.

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 summary sentence gives a genuinely specific computational purpose: a DV01-bucket VaR proxy of FICC VBM, netting benefit of central vs bilateral clearing, cash-vs-repo cross-product netting, and done-away uplift. However it sits at the very end of the description, after title restatement, compute-mode boilerplate and provenance URLs, so the purpose is not front-loaded. It also never distinguishes itself from near-siblings such as estimate_cross_margin_benefit, compute_multilateral_netting or compute_derivatives_margin_workbench.

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 implied through chain topology: it consumes artifacts from art-48-treasury-clearing-fit-diagnostic and art-49-clearing-access-model-selector and feeds 508-repo-haircut-collateral-calculator and qfa-02-portfolio-var-engine, which tells the agent where this sits in a workflow. There is also a hard constraint, "Use synthetic or anonymised inputs only", and compute-mode guidance. But there is no explicit when-to-use vs when-not statement and no named alternative among the many margin/netting siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_hdhp_ppo_breakevenHDHP vs. PPO Break-EvenB
Read-onlyIdempotent
Inspect

HDHP vs. PPO Break-Even: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-758-hdhp-ppo-break-even.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: Annual-cost comparator for an HDHP+HSA against a PPO: the break-even medical spend (first $50 grid point in [0, 20000] where the HDHP total is <= the PPO total), the two totals at the expected spend, the winner and savings, a fixed key-spend comparison table, the HSA tax shield, and a recommendat... Outputs: as_of, coverage, break_even_spend, hdhp_total_at_expected, ppo_total_at_expected, winner, savings, hsa_total_applied, hsa_tax_shield, comparison_table, recommendation, refusals, refusal_reason, domain_errors, scope_note. Output schema: call describe_tool("estimate_hdhp_ppo_breakeven").

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: as_of, coverage, hdhp_premium_monthly, hdhp_deductible, hdhp_oop_max, hdhp_coinsurance_pct, ppo_premium_monthly, ppo_deductible, ppo_oop_max, ppo_coinsurance_pct, employer_hsa, additional_hsa, marginal_tax_rate_pct, expected_annual_spend. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/idempotent/destructive annotations already covering safety, the description adds meaningful runtime behavior: server-side vs browser execution, GPU delegation, transient input processing with no storage/logging, synthetic-input requirement, AP2 artifact export with execution_hash, and FV-status snapshot behavior. This is substantially more than the annotations provide, though much of it is generic platform boilerplate rather than tool-specific nuance.

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?

The description is heavily bloated with repeated OpenChainGraph boilerplate, a full FV-status URL/hash, and a truncated 'recommendat...' sentence before reaching the useful summary. The core purpose and output list are present, but they are not front-loaded and several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex nested-input tool with no output schema, the description does list the main outputs and explain compute/artifact behavior, and annotations cover safety. However, it does not explain the nested policy parameter semantics or the meanings of refusal/domain error fields, and it defers output schema details to a separate describe_tool call.

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 carries the parameter-level semantics. The description only reinforces compute modes ('compute:"auto"', 'compute:"browser"') and mentions the first $50 grid point, but does not add meaning for the nested policy_parameters fields. Baseline 3 is appropriate when the schema does the heavy lifting.

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 description identifies this as an 'Annual-cost comparator for an HDHP+HSA against a PPO' and names the core output (break-even medical spend, totals, winner, savings) with specific computational scope. The opening 'HDHP vs. PPO Break-Even: OpenChainGraph compute node' is partly tautological, but the later summary gives enough specific resource-level purpose to distinguish it from generic finance calculators.

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 the annual-cost comparison scenario and operational constraints like 'Use synthetic or anonymised inputs only' and compute mode behavior. It never explicitly says when to choose this tool over siblings such as compute_breakeven or model_scorp_break_even, nor when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_iso_amt_exposureISO AMT Exposure ModelerB
Read-onlyIdempotent
Inspect

ISO AMT Exposure Modeler: OpenChainGraph compute node (consumer_finance). 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. Open at: https://ainumbers.co/chaingraph/art-759-iso-amt-exposure-modeler.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: AMT liability from an ISO exercise spread using the 2026 exemption amounts and phase-out thresholds. Output schema: call describe_tool("estimate_iso_amt_exposure").

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: shares, strike_price, fmv, ordinary_income, filing_status. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower, yet the description adds real information: inputs are processed transiently and not stored or logged, execution may be delegated to the browser with a delegation URL returned, and an AP2 artifact with execution_hash is exported for chain provenance. These are behavioral traits an agent cannot read off the schema.

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?

The purpose is the last thing stated, after several paragraphs of platform plumbing, an artifact URL, and a long hex FV-status receipt path with an offline-verification caveat. The transaction-relevant content ('AMT liability from an ISO exercise spread') could have been the first sentence; instead the reader must scan to the end.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Inputs are fully covered by the schema and the privacy/execution model is spelled out. However, with no output schema, the description only says an 'AP2 artifact with execution_hash' is exported and defers to describe_tool(); it never says whether the response carries the computed AMT amount, the phase-out breakdown, or only a receipt, which is the main remaining informational gap for a compute node.

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 every parameter (compute, parent_hashes, parent_tool_ids, policy_parameters with fmv/shares/strike_price/filing_status/ordinary_income/other_amt_adjustments) is documented in-schema. The description's compute-mode paragraph largely restates the compute parameter verbatim and adds nothing about parent_hashes/parent_tool_ids ordering or the meaning of 'other_amt_adjustments', so 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?

The 'Summary' sentence gives a specific verb+resource: AMT liability from an ISO exercise spread, using 2026 exemption amounts and phase-out thresholds. That is enough to tell a reader this is an ISO/AMT calculation rather than a generic exposure model. It is weakened by being buried after ~90% platform boilerplate, and it never distinguishes itself from near-neighbours such as compute_federal_withholding or compute_esrp_exposure.

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 only guidance offered is compute-mode selection ('auto' defaults to server for gpu:false kernels; 'browser' forces delegation) plus the constraint 'Use synthetic or anonymised inputs only'. There is no statement of when this tool is the right choice versus a sibling calculation tool, and no prerequisites for the exercise-spread scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evaluate_decision_treeDeclarative Decision-Tree EvaluatorA
Read-onlyIdempotent
Inspect

Declarative Decision-Tree Evaluator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-628-declarative-decision-tree-evaluator.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: Evaluates a caller-supplied, hash-pinned decision tree against caller-supplied facts entirely offline, client-side. Outputs: verdict, error_code, message, matched_node_id, matched_citation, path, weight, tree_id, tree_version, tree_digest_recomputed, bounds, closed_operator_set, scope_note. Output schema: call describe_tool("evaluate_decision_tree").

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". Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the description adds genuinely new behavior: transient processing with no storage or logging, deterministic evaluation, the server-vs-browser delegation split, and that an AP2 artifact with execution_hash is exported for provenance. That is substantive beyond the annotations; points are held back only by the marketing/FV-status padding mixed in.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, but the text is bloated: 'Deterministic OpenChainGraph compute node' repeats the line above it, and the artifact URL, FV-status receipt URL, and 'call describe_tool(...)' pointer are noise an agent cannot act on. The actual useful content could be half the length.

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?

With no output schema, the description helpfully enumerates the return fields (verdict, error_code, matched_node_id, path, tree_digest_recomputed, bounds, etc.), and it covers compute modes, chaining, and privacy posture. It omits any mention of failure modes or what 'bounds'/'closed_operator_set' mean, which keeps it short of full completeness.

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 description coverage is 100%, so the baseline is 3; the description earns an uplift by clarifying that the tree must be hash-pinned and facts are caller-supplied, and by explaining that parent_hashes/parent_tool_ids are for chaining from upstream execution_hash values in the exported artifact. The compute enum semantics are largely duplicated from the schema, which caps it.

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 Summary line states a specific verb and resource: 'Evaluates a caller-supplied, hash-pinned decision tree against caller-supplied facts entirely offline, client-side.' That distinguishes it from generic compute siblings like run_chain or workbook_evaluate. The opening boilerplate ('OpenChainGraph compute node (compliance_mandate)') is redundant and pushes the real purpose back, keeping it from a 5.

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?

It gives real constraints ('Use synthetic or anonymised inputs only', default compute:'auto' vs forcing 'browser'/'server', gpu:true always delegates), which is useful implied guidance. But it never says when to pick this over near neighbors such as run_chain, run_kernel_vm, or workbook_evaluate when an agent needs to evaluate a decision tree from facts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evaluate_globe_de_minimis_exclusionGloBE Permanent De Minimis Exclusion EvaluatorB
Read-onlyIdempotent
Inspect

GloBE Permanent De Minimis Exclusion Evaluator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-637-globe-de-minimis-exclusion.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: Recomputes the PERMANENT GloBE de minimis exclusion of Article 5.5 of the OECD GloBE Model Rules (Pillar Two, December 2021) from per-year figures the caller supplies. Outputs: average_globe_income_eur, average_globe_income_is_loss, average_globe_revenue_eur, averaging_window_years, de_minimis_available, deemed_zero_topup, election_made, fiscal_year, income_test_met, jurisdiction, manual_review_required, max_years_enforced, notes, parameter_set_version, partial_window_used, revenue_test_met, thresholds_applied, years_evaluated, years_excluded_no_constituent_entities, years_included. Output schema: call describe_tool("evaluate_globe_de_minimis_exclusion").

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: de_minimis_parameters, election_made, fiscal_year, jurisdiction, max_years, stateless_and_investment_entities_excluded, years, years_jurisdiction_in_scope. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context: compute mode routing (auto/server/browser, gpu delegation), transient non-retained processing, a synthetic-inputs-only constraint, and an exported AP2 artifact with execution_hash. Much of this is shared boilerplate across OpenChainGraph nodes, but it genuinely informs invocation and data-handling expectations.

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?

The definition opens with name/title restatement and a large block of generic compute-node, privacy, and provenance boilerplate before reaching the actual purpose in a 'Summary:' clause. The one useful sentence is buried mid-paragraph, and the long outputs list adds bulk without prioritization.

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?

There is no output_schema, but the description compensates by enumerating every returned field (de_minimis_available, revenue_test_met, manual_review_required, etc.) and routing to describe_tool for full schema. For a read-only deterministic evaluator this is largely sufficient, though jurisdictional input expectations remain thin.

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 input schema already documents compute, parent_hashes, parent_tool_ids and the policy_parameters contract. The description adds only the vague phrase 'from per-year figures the caller supplies' and otherwise defers output detail to describe_tool. Baseline 3 is appropriate when the schema carries the parameter burden.

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 summary states a specific verb and resource: 'Recomputes the PERMANENT GloBE de minimis exclusion of Article 5.5 of the OECD GloBE Model Rules.' That is far more specific than the name alone and disambiguates from related Pillar Two siblings like compute_globe_topup_tax. However, it never explicitly names a sibling it should be used instead of (e.g. evaluate_globe_safe_harbour_tests), so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how the node computes and what it emits, but gives no when-to-use vs when-not guidance and names no alternative sibling. The 'permanent' emphasis hints it differs from transitional tests, but the agent must infer that. It also never states prerequisites such as which caller inputs are mandatory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evaluate_globe_safe_harbour_testsGloBE Transitional Safe Harbour Test EvaluatorB
Read-onlyIdempotent
Inspect

GloBE Transitional Safe Harbour Test Evaluator: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-456-globe-safe-harbour-tests.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: Evaluates a jurisdiction against the OECD Pillar Two Transitional CbCR Safe Harbour (Dec 2022 Agreed Administrative Guidance): the de minimis test (CbCR revenue < EUR 10m AND profit before tax < EUR 1m, both versioned thresholds), the simplified ETR test (simplified covered taxes / profit before... Outputs: deemed_zero_topup, fiscal_year, passing_test_ids, safe_harbour_met, tests. Output schema: call describe_tool("evaluate_globe_safe_harbour_tests").

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: de_minimis_profit_threshold_eur, de_minimis_revenue_threshold_eur, fiscal_year, profit_before_tax_eur, revenue_eur, sbie_amount, simplified_covered_taxes, simplified_etr_rate_table. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new context: transient processing with no storage or logging, the instruction to use synthetic/anonymised inputs only, server-vs-browser execution routing, and that an AP2 artifact with execution_hash is exported for provenance. The FV-status receipt note further clarifies verification semantics. Minor deduction for not clarifying whether the exported artifact constitutes a persisted side effect given readOnlyHint=true.

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?

Roughly half the text is repeated platform boilerplate (compute-mode routing restated from the schema, privacy notice, artifact export), and the actual tool summary is truncated mid-word. Outputs are enumerated twice (once inline, once via the describe_tool pointer), and the reference URL and FV-status hash sit ahead of the substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description at least lists the return fields (deemed_zero_topup, passing_test_ids, safe_harbour_met, tests, fiscal_year), which partially covers that gap. But with nested, undocumented policy_parameters and a truncated test explanation, an agent cannot fully understand what simplified_etr_rate_table or sbie_amount must contain or how passing_test_ids are derived.

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 baseline is 3. The policy_parameters object has eight untyped properties, and the description partially compensates by naming the de minimis thresholds (revenue < EUR 10m, PBT < EUR 1m) and the ETR ratio components — but that sentence is truncated, so the ETR table and SBIE semantics remain unexplained.

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 summary names a specific verb and resource: evaluating a jurisdiction against the OECD Pillar Two Transitional CbCR Safe Harbour, with the de minimis and simplified ETR tests enumerated. However, the purpose statement is buried after several sentences of compute-node boilerplate and truncated mid-sentence ('simplified covered taxes / profit before...'), and it never distinguishes itself from near-identical siblings such as evaluate_globe_de_minimis_exclusion or compute_globe_jurisdictional_etr.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to pick this tool over alternatives, even though the sibling list contains close overlaps (evaluate_globe_de_minimis_exclusion, compute_globe_sbie_topup, compute_globe_topup_tax). The only conditional guidance is about compute mode, which is invocation mechanics rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evaluate_irrbb_sot_eveIRRBB SOT EVE EvaluatorB
Read-onlyIdempotent
Inspect

IRRBB SOT EVE Evaluator: OpenChainGraph compute node (compliance_mandate). 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-183-irrbb-eve-shock-calculator. Output feeds: art-185-irrbb-sot-nii-evaluator. Open at: https://ainumbers.co/chaingraph/art-184-irrbb-sot-eve-evaluator.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: Evaluate the EBA Supervisory Outlier Test (SOT) on Economic Value of Equity: the worst-case delta EVE decline across the 6 standardised shock scenarios versus the EU-wide hard threshold of 15% of Tier 1 capital (EBA RTS on the SOT / EBA Guidelines on IRRBB and CSRBB, EBA/GL/2022/14). Outputs: delta_eve_pct_of_tier1, eve_outlier, sot_eve_threshold_pct, tier1_capital, worst_delta_eve. Output schema: call describe_tool("evaluate_irrbb_sot_eve").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a read-only, idempotent, non-destructive, closed-world operation, and the description usefully adds beyond that: deterministic kernel execution, client-vs-server execution routing, transient processing with no retention, AP2 artifact export with execution_hash, and a verified FV-status snapshot. The repeated compute-mode boilerplate is generic and largely duplicates the schema, which keeps it out of the top band.

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?

The description opens with duplicated boilerplate ('OpenChainGraph compute node' stated twice), spends several sentences on compute-mode mechanics that the input schema already documents, and only reaches the actual purpose of the tool at the very end. Large amounts of runtime/artifact material crowd out the information an agent needs first.

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?

With no output schema, the description compensates by enumerating the five return fields (delta_eve_pct_of_tier1, eve_outlier, sot_eve_threshold_pct, tier1_capital, worst_delta_eve) and pointing to describe_tool for the full schema. It also cites the regulatory basis (EBA/GL/2022/14), the upstream/downstream artifacts, and provenance handling, leaving only the nested policy_parameters underspecified.

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%, including the compute enum and parent_hashes/parent_tool_ids chaining notes, so the baseline is 3. The description does add the upstream artifact ID (art-183-irrbb-eve-shock-calculator) that suggests what parent_hashes should carry, but it leaves the nested policy_parameters (capital, eve_shock) untyped and explains nothing the schema does not already say.

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 final 'Summary' sentence gives a specific verb and resource: evaluate the EBA Supervisory Outlier Test on Economic Value of Equity, comparing the worst-case delta EVE to the 15% of Tier 1 threshold. It also names the downstream NII evaluator (art-185), which implicitly separates it from evaluate_irrbb_sot_nii and calculate_irrbb_eve_shocks. The purpose is clear but buried under generic compute-node boilerplate that restates the title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to pick this tool versus calculate_irrbb_eve_shocks (which produces the shocks) or evaluate_irrbb_sot_nii (the NII sibling). The only directives given are execution-mode details (compute auto/server/browser) and 'Use synthetic or anonymised inputs only,' which govern how to call it, not when to choose it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evaluate_irrbb_sot_niiIRRBB SOT NII EvaluatorB
Read-onlyIdempotent
Inspect

IRRBB SOT NII Evaluator: OpenChainGraph compute node (compliance_mandate). 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-184-irrbb-sot-eve-evaluator. Open at: https://ainumbers.co/chaingraph/art-185-irrbb-sot-nii-evaluator.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: Evaluate the Net Interest Income (NII) leg of the EBA Supervisory Outlier Test: the worst-case 1-year delta NII under parallel up/down shocks versus a caller-supplied threshold (EBA leaves NII SOT calibration to competent-authority / institution discretion under EBA Guidelines on IRRBB and CSRBB,... Outputs: delta_nii_pct_of_nii, nii_outlier, projected_nii, sot_nii_threshold_pct, threshold_set, worst_delta_nii. Output schema: call describe_tool("evaluate_irrbb_sot_nii").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds useful operational context: server-side versus browser delegation, transient processing with no storage or logging, synthetic/anonymised input requirements, and AP2 artifact export with execution_hash provenance. The core behavioral profile is well disclosed, though some compute-mode detail repeats the schema.

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?

The description is long and front-loads repetitive platform boilerplate, including 'OpenChainGraph compute node' twice, a URL, and a full FV-status hash. The actual purpose and outputs are pushed to the end, so it is not front-loaded and several sentences do not earn their place for an invoking agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It lists the output fields despite having no output schema and explains the execution/chaining environment, which is helpful. However, for a complex financial computation, it leaves the critical policy_parameters structure, especially baseline and nii_shock, under-specified and does not clearly locate the caller-supplied threshold in the input schema.

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 carries most parameter semantics. The description adds the domain idea of a caller-supplied threshold and lists outputs, but it does not clarify how baseline and nii_shock inside policy_parameters map to the NII SOT calculation.

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 description eventually states a specific verb and resource: evaluate the NII leg of the EBA Supervisory Outlier Test, computing worst-case 1-year delta NII under parallel shocks versus a threshold. That is enough to distinguish it from the EVE leg, though the purpose is buried behind infrastructure boilerplate and the sibling evaluate_irrbb_sot_eve is not explicitly named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute-mode behavior but does not say when to choose this tool over alternatives such as evaluate_irrbb_sot_eve, calculate_basis_risk_nii_shock, or run_rate_shock_ladder. It mentions consuming upstream artifacts from art-184, but that is chaining context rather than tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

examine_lc_document_presentationUCP 600 / ISBP 745 Document Examination AssemblerB
Read-onlyIdempotent
Inspect

UCP 600 / ISBP 745 Document Examination Assembler: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-570-ucp600-document-examination-assembler.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: Recomputes the letter-of-credit document examination a checker already works from a paper checklist inside the 5-banking-day window, from structured fields the checker has transcribed off the presentation -- no OCR, no document upload, no parsing of any document image or free text. Outputs: clause_note, cross_document, decision, drafts, examination_window, findings, insurance_check, presentation_date, presentation_window, rejected_inputs, scope_note, tolerances, verdict. Output schema: call describe_tool("examine_lc_document_presentation").

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: bank_holidays, documents, examination_date, goods_description_conforms, lc, presentation_date. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already supply readOnly/idempotent/non-destructive, and the description goes further: transient input processing with no storage or logging, auto vs browser delegation semantics, gpu delegation behavior, and an AP2 artifact with execution_hash for provenance. That is meaningful behavioral context beyond the structured fields, though much of it is shared boilerplate rather than tool-specific 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?

The actual purpose appears only after roughly five sentences of generic compute-node, privacy, URL and FV-status-receipt boilerplate, and the SHA-256 receipt path plus page URL are noise for tool selection. The one useful sentence is buried rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so listing the thirteen output keys (verdict, findings, examination_window, tolerances, etc.) is genuinely helpful. However, for a nested four-parameter tool whose policy_parameters sub-objects are typed only as empty objects, the description does not explain what must be supplied in lc and documents, leaving a real gap.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and the policy_parameters keys, making 3 the baseline. The description adds nothing per-parameter — notably it does not explain what the nested lc/documents objects should contain, where the schema gives them empty types.

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 'Summary' sentence states a specific verb and resource: 'Recomputes the letter-of-credit document examination a checker already works from a paper checklist inside the 5-banking-day window, from structured fields.' That is a genuine distinguishing purpose, but it is buried mid-description behind compute/provenance boilerplate, and it never names a sibling (e.g. verify_trade_document_set, validate_mt700_lc_fields) that an agent might confuse it with.

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 'no OCR, no document upload, no parsing of any document image or free text' clause implicitly tells the agent this tool is for pre-transcribed structured fields only, which is real guidance. But there is no explicit when-to-use/when-not or routing to an alternative among the many LC-adjacent siblings, and the compute-mode paragraph is operational rather than selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_regrpt_varianceRegulatory Report Period-over-Period Variance ExplainerB
Read-onlyIdempotent
Inspect

Regulatory Report Period-over-Period Variance Explainer: OpenChainGraph compute node (regulatory_reporting). 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. Open at: https://ainumbers.co/chaingraph/art-485-regrpt-variance-explainer.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: Computes period-over-period variance across a regulatory report instance pair -- absolute and relative movement per line item against a policy-supplied materiality threshold (default plus per-line overrides), ranked by contribution (largest absolute movement first) -- and flags which movements re... Outputs: compliance_flags, current_as_of, note, policy_version, prior_as_of, summary, variances. Output schema: call describe_tool("explain_regrpt_variance").

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: explanations, instance_pair, materiality_policy. Unknown keys are refused.

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly=true, destructive=false, idempotent=true), so the description's added value is real: it discloses that execution is deterministic, that compute:'browser' returns a delegation URL instead of a result, that gpu:true nodes always delegate, that inputs are processed transiently and not retained, and that an AP2 artifact with execution_hash is exported for chain provenance. That is meaningful behavioral context a caller could not infer from the annotations. It stops short of describing failure modes or how long delegation URLs remain valid.

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?

Seven lines of platform boilerplate (compute-node framing, Cloudflare Workers, transient processing, a raw HTML URL, and a 64-character FV-status hash) precede the only sentence that says what the tool does, so the description is badly back-loaded. 'Deterministic OpenChainGraph compute node' is effectively stated twice, and the core Summary sentence is cut off mid-word, wasting the most valuable line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description compensates by enumerating the return fields (compliance_flags, variances, prior_as_of, current_as_of, policy_version, summary, note). The gaps are the truncated flagging clause, the empty nested policy_parameters sub-schemas (explanations, instance_pair, materiality_policy) that the description only gestures at, and the absence of any prerequisite about the instance pair needing to be comparable.

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 description coverage is 100%, so the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters, and the baseline would be 3. The description adds genuine meaning on top: it ties parent-hash chaining to the exported AP2 artifact's chain.parent_hashes and explains the server-vs-browser execution branch, and it mentions that the materiality policy has a default plus per-line overrides. It does not explain the shape of instance_pair or explanations, though those are undocumented nested keys.

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 embedded Summary gives a genuinely specific verb+resource: computes period-over-period variance across a regulatory report instance pair, absolute and relative movement per line item against a materiality threshold, ranked by contribution. That distinguishes it from validation siblings like run_regrpt_edit_checks. However the purpose statement is buried near the end and is truncated mid-clause ('flags which movements re...'), and no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance offered is a privacy constraint ('Use synthetic or anonymised inputs only') and a compute-mode selector, both of which are parameter semantics rather than when-to-use-this-tool guidance. There is no statement of prerequisites (e.g., needing a matched instance pair), no when-not-to-use, and no pointer to alternative variance or edit-check tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_artifactExport a ChainGraph artifact as xlsx / pdf / csv / xbrl / vcA
Read-onlyIdempotent
Inspect

Render a verified OpenChainGraph v0.4 artifact into a chaingraph_export profile (OCG Standard §13). Generated downstream of and EXCLUDED from the execution_hash preimage — the export is a view, not a fact; verification always routes back to the canonical JSON artifact. Pass the FULL artifact you received from a compute tool (the server is stateless — there is no hash cache). Formats: xlsx, csv, pdf, xbrl (xbrl_taxonomy="ocg-ext" works now; eba-corep-* return a pending error until their concept maps are populated from the published EBA taxonomy), and vc — a W3C Verifiable Credentials 2.0 rendering (OCG §13.11, application/vc+json) available on every node; it re-states the canonical execution_hash via ocg:hashAnchor and mints no new hash/proof. readOnlyHint: true; zero PII, zero payload logging.

NameRequiredDescriptionDefault
formatYesExport profile. xlsx/csv/pdf/xbrl/vc implemented; vc = W3C Verifiable Credentials 2.0 (base profile, all nodes).
artifactYesFull v0.4 ChainGraph artifact (policy_parameters + output_payload + execution_hash + chain).
xbrl_taxonomyNoRequired only when format="xbrl" (e.g. "eba-corep-own-funds").

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, but the description adds context they cannot: exports are excluded from the execution_hash preimage, the server is stateless with no hash cache, eba-corep-* taxonomies return a pending error, and the vc profile mints no new hash or proof while re-anchoring via ocg:hashAnchor. The zero-PII / zero-payload-logging note adds a data-handling guarantee beyond 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded in the first sentence, and the dense format/statelessness details follow in a logical order with no filler. It is a single long paragraph that leans on heavy jargon, which slightly hurts scanability, but every sentence carries information.

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?

Covers the artifact requirement, the statelessness constraint, format-specific failures, and the vc semantics — enough to call it correctly without an output schema. The notable gap is the return shape: it never says whether the export comes back as bytes, base64, or a URL/reference, which matters for a rendering tool.

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 baseline is 3, but the description adds real meaning: 'artifact' must be the complete object as received from a compute tool (not a summary or reference), which the schema only hints at, and 'xbrl_taxonomy' behavior is spelled out with a working value and a failing prefix. The format enumeration is mostly restated from the schema.

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 — render a verified OpenChainGraph v0.4 artifact into a chaingraph_export profile — and names the standard section (§13) plus all five output formats. An agent can immediately distinguish this from siblings like verify_execution_hash or emit_chaingraph_artifact, since the description explicitly casts this as a downstream view rather than a fact-producing step.

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 prerequisite: pass the FULL artifact received from a compute tool, because the server is stateless and keeps no hash cache, and that verification should route to the canonical JSON instead. Format selection guidance is included, including the xbrl_taxonomy caveat for eba-corep-*. It stops short of naming a specific sibling tool to prefer for verification, so not quite a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_chainFind ChainGraph workflow chainA
Read-onlyIdempotent
Inspect

BM25 search over all 409 AINumbers ChainGraph chains. Returns ranked chains with their full recipe: ordered node sequence, deep-links, composer URL, and entry tool mcp_name. Agent flow: find_chain(query) → read recipe → call the listed node MCP tools in order, passing parent_hashes between steps. Task-shaped queries work well: "reserve composition recompute", "FR 2052a classification", "CCP margin replication", "SR 26-2 model validation benchmark", "litigation damages recompute", "evidence pack assembly".

NameRequiredDescriptionDefault
queryYesNatural-language or keyword search (e.g. "AML programme", "DORA ICT readiness", "MiCA CASP", "PQC migration", "Basel capital", "reserve composition", "2052a classification", "CCP margin", "model validation benchmark", "damages recompute", "evidence pack").
top_nNoMax results to return (default 5).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and closed-world, so the safety profile is covered. The description adds real value beyond that: corpus size (409), ranking via BM25, and exactly what the result contains (node sequence, deep-links, composer URL, entry mcp_name).

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?

Front-loaded with the core capability, and every sentence carries information (corpus, return fields, workflow, query style). The example list is slightly long and partially duplicates the schema, which keeps it from a 5.

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?

There is no output schema, so the description must explain return values, and it does so concretely. It also covers the follow-up consumption pattern. Pagination or ranking score details are absent, but nothing an agent needs to invoke it correctly 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 coverage is 100%, so both parameters are already documented, and the schema's own examples overlap heavily with the query-style examples in the description. The one additive hint is that task-shaped queries work well, but the schema already implied this with similar examples.

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 (BM25 search over ChainGraph chains) plus retrieval scope (all 409 chains) and output shape. It is clearly distinguishable from siblings like build_chaingraph or run_chain, which create or execute rather than search.

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?

The 'Agent flow: find_chain(query) → read recipe → call the listed node MCP tools in order' sentence tells the agent exactly where this fits in a pipeline, which is strong contextual guidance. It never explicitly names a sibling to use instead or states exclusions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_prediction_arbitragePrediction Market ArbitrageC
Read-onlyIdempotent
Inspect

Prediction Market Arbitrage: OpenChainGraph compute node (event_market_pnl). 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-211-prediction-market-analyzer. Open at: https://ainumbers.co/chaingraph/art-212-prediction-market-arbitrage.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: Identifies cross-venue arbitrage opportunities in binary prediction markets. Outputs: arb_exists, capital_deployed, consensus_gap, disclaimer, fee_a, fee_b, gross_profit, gross_spread, gross_spread_pct, implied_prob_yes_a, implied_prob_yes_b, k_contracts, min_spread_to_break_even, net_edge_pct, net_profit, no_price_b, payout, stake_total, total_fees, venue_a, venue_b, yes_price_a. Output schema: call describe_tool("find_prediction_arbitrage").

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: venue_a, venue_b. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Well beyond the annotations (readOnly/idempotent/non-destructive), the description discloses the compute-mode semantics (server vs. browser delegation, gpu:true always delegates), transient non-retained input handling, AP2 artifact export with execution_hash, and upstream artifact consumption. This is meaningful behavioral context an agent could not get from the structured fields, though much of it is shared boilerplate rather than tool-specific.

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?

The text is dominated by provenance boilerplate (URL, FV-status hash path, 'snapshot, not a subscription'), a full 21-field output enumeration, and a 'call describe_tool(...)' pointer. The one useful purpose sentence appears near the end, so nothing is front-loaded and much of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does compensate by listing return fields, and it covers provenance, compute modes, and privacy. However, it omits how the arbitrage decision is parameterized (venue_a/venue_b, prices, fees) and gives no guidance on interpreting arb_exists or net_edge_pct, leaving the agent to infer the core semantics.

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 compute, parent_hashes/parent_tool_ids, and policy_parameters. The description adds only a restatement of the compute modes and the upstream chaining concept, which the schema already covers; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The actual purpose is stated only late in a long boilerplate block: 'Identifies cross-venue arbitrage opportunities in binary prediction markets.' That is a specific verb+resource, but it is buried behind compute-node metadata and does not distinguish the tool from siblings such as analyze_prediction_market.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to choose this tool over analyze_prediction_market or other market-analysis siblings, and gives no prerequisites or exclusions beyond the generic compute-mode explanation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_runway_goal_pathRunway Goal PathA
Read-onlyIdempotent
Inspect

Runway Goal Path: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-702-runway-goal-path.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: Goal-seek over a fixed monthly startup cash model: the smallest change in price, in month-over-month revenue growth, or in burn that reaches a declared goal, ranked by least effort. Outputs: baseline, baseline_meets_goal, candidates, scenarios_evaluated, none_found_reason, refusal_reason, domain_errors, scope_note. Output schema: call describe_tool("find_runway_goal_path").

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: cash_minor, monthly_revenue_minor, monthly_burn_minor, revenue_growth_bp, horizon_months, goal, levers, effort_weights, max_candidates. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-destructive annotations, it discloses that inputs are processed transiently and not stored, logged, or retained, instructs use of synthetic or anonymised inputs, notes deterministic execution, and explains that an AP2 artifact with execution_hash is exported. It also flags that unknown keys are refused. It stops short of describing cost/rate behavior or what happens on goal failure beyond naming the none_found_reason output.

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?

The actual purpose is buried behind several sentences of platform boilerplate, including a near-verbatim repetition ('OpenChainGraph compute node (compliance_control). Deterministic OpenChainGraph compute node.') and a 64-character FV-status hash URL whose value to an agent is marginal. The genuinely useful summary and outputs list arrive only at the very end.

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?

For a deterministic compute node with no output schema, the description lists the returned fields (baseline, candidates, scenarios_evaluated, none_found_reason, refusal_reason, domain_errors) and points to describe_tool for the detailed schema, which is sufficient for correct invocation. The main omission is what a 'refusal' or 'none_found' result implies for follow-up action.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description reinforces the compute-mode semantics consistently and restates the required policy_parameters keys, but adds no format, unit, or interpretation detail (e.g., what minor units or basis points mean here) beyond the schema.

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 core sentence states a specific verb and resource: goal-seek over a fixed monthly startup cash model to find the smallest change in price, revenue growth, or burn that reaches a declared goal, ranked by least effort. That is far more specific than the name alone. It does not, however, differentiate itself from any of the many sibling compute/analysis tools, and the opening 'OpenChainGraph compute node (compliance_control)' is generic platform framing rather than purpose.

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 description explains when to use compute:'auto' vs 'server' vs 'browser', which is invocation-mode guidance rather than task-level guidance. It never says when an agent should choose this tool over alternatives such as compute_stress_test_scenarios or model_l1_fee_runway, nor does it state prerequisites beyond the required policy_parameters keys.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_toolFind ChainGraph node toolA
Read-onlyIdempotent
Inspect

BM25 search over all 693 live AINumbers ChainGraph node tools. Returns ranked tools with mcp_name, URL, mandate type, and wave. Use to locate a specific computation node (e.g. "FRTB expected shortfall", "MiCA own funds", "XVA calculator", "reserve composition", "2052a", "initial margin", "model validation benchmark", "TVM / damages calculator") before calling it. Complements find_chain (chain-level) and list_ainumbers_tools (catalog-level).

NameRequiredDescriptionDefault
queryYesNatural-language or keyword search (e.g. "FRTB", "XVA", "MiCA own funds", "AML risk rating", "stress test", "reserve composition", "2052a", "initial margin", "model validation").
top_nNoMax results to return (default 5).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false. The description adds useful context beyond them: BM25 ranking, the corpus size of 693 live tools, and the returned fields (mcp_name, URL, mandate type, wave). It does not discuss result scoring or edge-case behavior, but the core behavioral profile is clearly disclosed.

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?

The description is front-loaded with the search mechanism, corpus scope, and return fields, then gives usage guidance and alternatives. The parenthetical list of eight example queries is longer than necessary and duplicates examples already present in the schema, but the overall text remains efficient.

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?

For a two-parameter search tool with no output schema, the description explains the search method, corpus scope, ranked return fields, and differentiation from siblings. It is nearly complete; minor gaps like result score field details or behavior for zero hits are not critical to correct invocation.

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 both query and top_n are documented in the schema with examples and defaults. The description's examples overlap with the schema's query examples, so it adds little parameter meaning beyond what the schema already provides. A baseline 3 is appropriate.

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?

The description states a specific verb and resource: 'BM25 search over all 693 live AINumbers ChainGraph node tools.' It explicitly distinguishes this from find_chain (chain-level) and list_ainumbers_tools (catalog-level), so an agent can identify its exact role without opening other schemas.

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?

It gives clear usage context: 'Use to locate a specific computation node ... before calling it,' and names two alternatives with the scope each covers. The agent knows when to select this search tool versus the chain-level and catalog-level siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_attribution_stringAttribution String GeneratorB
Read-onlyIdempotent
Inspect

Attribution String Generator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-207-attribution-string-generator.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: Generates a human-readable TASL (Title/Author/Source/License) attribution line plus machine-readable ccREL JSON-LD and RDFa blocks for any Creative Commons licensed work. Outputs: disclaimer, errors, json_ld, license_name, license_spdx, license_url, rdfa_html, tasl_line, valid. Output schema: call describe_tool("generate_attribution_string").

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: creator, license, source_url, title, work_url. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds real substance: inputs are computed server-side on Cloudflare Workers for gpu:false nodes, compute:'browser' returns a delegation URL, gpu:true nodes always delegate, and inputs are transiently processed and never stored or logged. It also discloses that an AP2 artifact with execution_hash is exported for chain provenance, which is a side effect not implied by 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual purpose sits in the trailing 'Summary:' sentence, behind engine boilerplate, a redundant repetition ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.'), a spec page URL, and a 64-character FV-status hash path. Front-loading is poor and several sentences serve the platform rather than this tool.

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?

For a compute-node tool with nested policy_parameters and no output schema, the description compensates well by naming every returned field (tasl_line, json_ld, rdfa_html, license_spdx, disclaimer, errors, valid) and covering compute and privacy behavior. The remaining gap is the absence of any routing guidance against license-related siblings.

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 compute modes, parent_hashes/parent_tool_ids ordering, and the required policy_parameters keys. The description adds only that the work is a Creative Commons licensed work and enumerates output field names, without new syntax or format detail for the four parameters. Baseline 3 applies when the schema carries the parameter burden.

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 'Summary:' sentence gives a specific verb and resource set: it generates a TASL attribution line plus ccREL JSON-LD and RDFa blocks for Creative Commons licensed works. That is far more than a restatement of the name. It never contrasts itself with plausible siblings such as choose_cc_license, assemble_license_terms, or build_rights_record, so an agent cannot route on purpose alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the license-assembly siblings, and no when-not-to-use condition. The only directives are operational (compute mode selection) and a data-handling caution ('Use synthetic or anonymised inputs only'), neither of which is selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_iscc_codeISCC Content Code GeneratorA
Read-onlyIdempotent
Inspect

ISCC Content Code Generator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-202-tdmrep-reservation-builder. Open at: https://ainumbers.co/chaingraph/art-201-iscc-content-code-generator.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: Generates ISO 24138 ISCC content fingerprints for digital content. Outputs: conformance_pass, data_code, datahash, input_bytes, instance_code, iscc_code. Output schema: call describe_tool("generate_iscc_code").

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: content, creator, title. Unknown keys are refused.

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/closed-world, so the safety profile is covered. The description still adds real behavioral context beyond them: determinism of the compute node, that inputs are processed transiently and not stored or logged, that gpu:true nodes always delegate to the browser, and that an AP2 artifact with execution_hash is exported for provenance.

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?

Badly front-loaded and padded: the opening repeats 'OpenChainGraph compute node' twice, then embeds a full documentation URL and a 64-character FV-status receipt hash with an offline-verification aside. The one sentence that actually defines the tool ('Summary: Generates ISO 24138...') comes last, after material an agent does not need in order to call it.

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?

For a four-parameter compute node with no output schema, the definition covers privacy handling, compute-mode behavior, chaining via execution_hash, and downstream consumption, and it lists the returned fields. The only gap is that the authoritative output schema is deferred to describe_tool rather than described inline.

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 all four parameters — including the compute enum and the policy_parameters requirement for content/creator/title — are already documented in the schema. The description largely restates the compute-mode semantics verbatim rather than adding format or interaction details, 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?

The final 'Summary' line states a specific verb and resource — 'Generates ISO 24138 ISCC content fingerprints for digital content' — plus an explicit output list, which is enough for an agent to identify the tool. Sibling differentiation is only indirect (it names the downstream consumer art-202-tdmrep-reservation-builder but never names a competing tool to avoid). The core purpose is buried at the end behind several sentences of provenance boilerplate.

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?

There is one concrete usage constraint — 'Use synthetic or anonymised inputs only' — and the 'Output feeds: art-202-tdmrep-reservation-builder' line implies where this sits in a chain. But there is no explicit when-to-use vs when-not-to-use guidance and no naming of alternatives among the many sibling fingerprint/provenance tools (e.g. validate_content_binding_assertion, compute_ipfs_cid).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_zk_compliance_proofZK Compliance Proof GeneratorA
Read-onlyIdempotent
Inspect

ZK Compliance Proof Generator: OpenChainGraph compute node (compliance_mandate). 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-10-amla-transaction-typology-risk-scorer. Output feeds: cry-04-merkle-batch-verifier, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/cry-01-zk-compliance-proof-generator.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: Synthetic ZK compliance proof token for AML/Travel Rule predicates (amount threshold, sanctions clear, KYC complete, velocity normal, source of funds). Outputs: checks, compliance_flags, constraint_count, predicate_label, predicate_type, proof_commitment, proof_ms_simulated, proof_result, proof_system. Output schema: call describe_tool("generate_zk_compliance_proof").

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: data. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world. The description adds genuine value beyond them: compute modes (auto/server/browser, gpu:true always delegates), transient processing with no storage/logging, determinism, and an exported AP2 artifact carrying execution_hash for provenance. What it omits is what the delegation URL response looks like and any rate/timing caveats.

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?

Structure is back-loaded: the actual purpose appears last, after compute-binding boilerplate. Significant noise is included – an 'Open at:' marketing URL, a full 64-hex FV-status path, and an instruction to call describe_tool for the output schema – none of which help an agent decide or invoke.

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?

With no output schema, the description compensates by enumerating the returned fields (checks, compliance_flags, constraint_count, predicate_label, predicate_type, proof_commitment, proof_ms_simulated, proof_result, proof_system). Combined with compute-mode and data-handling disclosure, an agent has enough to call it correctly; only the browser-delegation response contract is left unstated.

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, and the description earns an extra point by naming the concrete predicate domain (amount threshold, sanctions clear, KYC complete, velocity normal, source of funds) that the opaque policy_parameters.predicate_type field operates over, plus the upstream-artifact linkage for parent_hashes/parent_tool_ids. It still does not explain the shape of policy_parameters.data or seed.

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 final sentence states a specific resource – a synthetic ZK compliance proof token for AML/Travel Rule predicates (amount threshold, sanctions clear, KYC complete, velocity, source of funds) – which an agent can distinguish from siblings. However, the operative purpose is buried after several sentences of compute-node boilerplate, so the verb+resource is clear but poorly surfaced.

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?

It gives real constraints ('use synthetic or anonymised inputs only') and names the upstream and downstream artifacts in the chain, which implies sequencing. But it never says when to choose this tool over related siblings such as validate_tfr_travel_rule_batch or score_aml_typologies; usage context is implied via the chain, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ha_bundle_exportAssemble (and optionally SD-JWT-export) a §27.6 evidence bundleAInspect

Assembles a §27.6 haEvidenceBundle from a subject's collected human_accountability_records[] (reviewers, approvers, annotations, exception rationale, timestamps) -- same algorithm as the browser verify.html HA export card (kernels/_haevidence.mjs). Set sd_jwt:true to also export it as a Selective Disclosure JWT (§13.12), signed EdDSA over a fresh ephemeral did:key (generated per call, never reused) -- subject_hash/verification_result/kernel_version/policy_version/timestamps/submission_receipt are always-disclosed; reviewers/approvers/annotations/exception_rationale/input_hashes are selectively disclosable.

NameRequiredDescriptionDefault
sd_jwtNoWhen true, also return an SD-JWT export of the bundle (default false).
recordsNohuman_accountability_records over this subject. Default: [].
input_hashesNosha256: hashes of the inputs the verification ran over. Default: [].
subject_hashYesRequired. The sha256: subject hash the bundle documents.
kernel_versionNoVersion tag of the kernel that produced verification_result.
policy_versionNoVersion tag of the policy the kernel was evaluated against.
submission_receiptNoPopulate ONLY after a real transmission -- never fabricate.
verification_resultNoThe §16/§18/§20 verdict.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations by disclosing that the EdDSA signing key is a fresh ephemeral did:key generated per call and never reused (explaining the non-idempotent hint) and by enumerating exactly which claims are always-disclosed versus selectively disclosable. That is the kind of mutation/artifact semantics an agent cannot get from the structured fields alone.

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?

Front-loaded with the core action and scope in the first clause, with the optional mode and disclosure split following. It is dense with parentheticals and em-dash clauses but nearly every clause carries new information; only the file-reference parenthetical is arguably optional.

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?

For an 8-parameter assembly tool with no output schema, the description supplies the artifact's field-level composition (always-disclosed vs selectively disclosable), which effectively doubles as return-value documentation. The main residual gap is that it does not state the return shape (bundle object versus a JWT string) when sd_jwt is true.

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 already 100%, so the baseline is 3. The description still adds meaning by describing what records[] actually contains (reviewers, approvers, annotations, exception rationale, timestamps) and by mapping several parameters into the always-disclosed versus selectively-disclosable output partition, which the schema does not state.

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 (assembles) and resource (§27.6 haEvidenceBundle built from human_accountability_records[]) plus an optional mode (sd_jwt export). It also anchors the algorithm to a named reference implementation (kernels/_haevidence.mjs / verify.html HA export card), which separates it from generic siblings like build_evidence_pack or assemble_ocg_evidence_bundle.

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 description does say when to flip sd_jwt:true and that it is an add-on rather than a different call, which is useful. But it never says when to choose this tool over near-neighbours such as build_evidence_pack, assemble_ocg_evidence_bundle, ha_record_validate, or sdjwt_issue, so the routing decision is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ha_gate_statusEvaluate a §27.4/§27.5 human-accountability gate preconditionA
Read-onlyIdempotent
Inspect

Given a step's haGatePolicy and the human_accountability_records[] collected for a subject, returns whether the gate is satisfied, held, rejected, escalated, or overridden -- same algorithm as the browser verify.html HA gate card (kernels/_hagate.mjs, SPEC.md §27.4-27.5). A rejection record is terminal-blocking regardless of policy; an active time-boxed override (§27.5) takes precedence over the underlying policy. Pure function: caller supplies nowISO for determinism.

NameRequiredDescriptionDefault
roleYesThe haRole a satisfying approval record must carry.
now_isoYesCaller-supplied ISO 8601 clock (determinism; never Date.now() internally).
recordsNoCollected human_accountability_records over this subject. Default: [].
thresholdNoN for dual_control/review_required/hold. Default 1 (2 for dual_control).
gate_policyYesThe step's declared haGatePolicy.
subject_hashYesThe sealed artifact's sha256: subject hash.
require_conformantNoRequire §27.2 structural signature shape on every record (default true).

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses real decision rules: a rejection record is terminal-blocking regardless of policy, and an active time-boxed override (§27.5) takes precedence over the underlying policy. It also declares purity and the determinism contract (nowISO supplied by caller, never Date.now() internally), which is exactly the kind of behavioral context annotations cannot carry.

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?

Three sentences, front-loaded with purpose, then the precedence rules, then the determinism note. No filler; the spec/kernel reference is compact and load-bearing for an agent that needs the authoritative algorithm.

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?

With 7 parameters at full schema coverage and no output schema, the description supplies the missing return semantics by enumerating the five possible gate outcomes, which is the key gap. It stops short of describing what accompanies each outcome (e.g., which record drove the decision), leaving a small residual gap.

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; the description earns an extra point by explaining the semantics of the records array (rejection is terminal, active override wins) and the determinism role of now_iso, which the schema does not convey. It says nothing about threshold or require_conformant, so it falls short of full parameter elaboration.

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 precise verb+resource ('Given a step's haGatePolicy and ... records, returns whether the gate is satisfied, held, rejected, escalated, or overridden') and enumerates the exact outcome set, so an agent knows what it gets back. It does not name or differentiate itself from the related siblings ha_record_validate and ha_bundle_export, which keeps it below a 5.

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 description implies the usage context (evaluating a §27.4/§27.5 gate precondition for a subject before proceeding) and invokes the browser HA gate card as the reference behavior, but it never says when to call this versus ha_record_validate or ha_bundle_export, nor what to do on a 'held' vs 'escalated' result.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ha_record_validateValidate a §27 human-accountability recordA
Read-onlyIdempotent
Inspect

Structural (non-cryptographic) §27.2 signed-named-human check: does this record carry a §16 whole-artifact proof (eddsa-jcs-2022) whose verificationMethod is bound to the record's own identity.id? Does NOT verify the signature bytes -- pair with verify_execution_hash / a proof verifier for that. Use before counting a record toward ha_gate_status.

NameRequiredDescriptionDefault
recordYesA single human_accountability_records[] entry to check.

TDQS

A4.3/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), and the description adds the crucial disclosure that verification is structural only and non-cryptographic, which an agent cannot infer from annotations. It stops short of stating what the result looks like (pass/fail, reasons), 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?

Three tight sentences: the check, the exclusion, the placement in a workflow -- front-loaded and with no filler. It is dense with § references that require domain familiarity, which slightly raises parsing cost but every clause carries information.

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?

For a one-parameter read-only validator with no output schema, the description supplies the predicate, the exclusions, and the workflow position, which is enough to call it correctly. The main residual gap is that the response shape (boolean vs. diagnostic detail) is only implied by the question phrasing.

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?

Only one parameter, and the schema already documents it at 100% coverage ('A single human_accountability_records[] entry to check'). The description adds no further detail about which fields of that record matter, relying entirely on the schema and the §16/§27.2 framing.

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 (structural §27.2 signed-named-human check on a record) and narrows the exact predicate tested: presence of a §16 whole-artifact eddsa-jcs-2022 proof bound to identity.id. It explicitly distinguishes itself from sibling verify_execution_hash and from ha_gate_status counting.

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?

Gives both a positive trigger ('Use before counting a record toward ha_gate_status') and a negative boundary ('Does NOT verify the signature bytes -- pair with verify_execution_hash / a proof verifier for that'), naming the alternative to compose with.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_visa_tap_signatureVisa Trusted Agent Protocol Signature Inspector & ReadinessB
Read-onlyIdempotent
Inspect

Inspect a Visa Trusted Agent Protocol HTTP Message Signature and score TAP readiness. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("inspect_visa_tap_signature").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds valuable execution context: it renders as an interactive widget, inputs are applied via AIN Bridge prefill, and it runs client-side with zero PII and zero network. It does not explain what the readiness score represents or what the widget displays, but the added environment details are meaningful.

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?

Front-loads purpose in the first clause and keeps the description to two sentences plus a short output-schema pointer. No redundant or filler content, though the pointer to describe_tool is a workaround rather than embedded detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, execution environment, and where to find the output schema, which is enough to call the tool safely. However, it omits what TAP readiness scoring entails, what the widget presents, and how this differs from the sibling inspect_visa_trusted_agent_protocol, leaving meaningful gaps for an agent selecting the right tool.

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 'inputs' parameter is already fully described in the schema. The description adds marginal value by noting inputs are applied via the AIN Bridge, but it does not clarify the expected keys or values beyond what the schema states.

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 ('Inspect') and resource ('Visa Trusted Agent Protocol HTTP Message Signature') plus an additional scoring action ('score TAP readiness'). However, it does not differentiate from the near-identical sibling inspect_visa_trusted_agent_protocol, leaving ambiguity about which tool to choose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no explicit when-to-use guidance, no exclusions, and no mention of the closely related sibling inspect_visa_trusted_agent_protocol or describe_tool for output discovery. Only implied usage can be inferred from the action verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_visa_trusted_agent_protocolVisa Trusted Agent Protocol (TAP) Signature InspectorB
Read-onlyIdempotent
Inspect

Visa Trusted Agent Protocol (TAP) Signature Inspector: OpenChainGraph compute node (compliance_control). 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-16-google-ap2-mandate-builder, art-22-agentic-payments-protocol-comparator. Output feeds: art-18-mcp-developer-readiness-scorecard, art-24-mastercard-agentic-token-builder, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-23-visa-trusted-agent-protocol-inspector.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: Parses and scores Visa TAP Signature-Input / Signature header pairs (RFC 9421 HTTP Message Signatures). Outputs: errors, findings, parsed_label, parsed_params, passes, score, verdict, warnings. Output schema: call describe_tool("inspect_visa_trusted_agent_protocol").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world semantics, so the description only needed to add context — and it does: transient processing with no storage/logging/retention, deterministic computation, compute-mode delegation behavior, and AP2 artifact export with execution_hash for chain provenance. The main weakness is that the compute-mode text largely restates the schema, and the provenance/URL/hash sentences are noise rather than 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?

The core purpose and output list arrive last, behind OpenChainGraph/compute-node boilerplate, upstream/downstream artifact IDs, a documentation URL, and a 64-character FV-status hash. Roughly half the text is provenance infrastructure rather than guidance for invoking the tool, so it fails the front-loaded test.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the return fields and the privacy posture, and it defers to describe_tool for the schema. But it never states what input form is expected (raw header strings vs. a full signed message) or how the score/verdict are derived, which matters for a 4-parameter, nested-object tool.

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 baseline is 3. The description restates compute modes already fully documented in the schema and only implicitly maps policy_parameters' signature/signature_input keys to the header pairs it parses. It adds a little framing (upstream parent_hashes come from AP2 artifacts) but no syntax or format detail the schema lacks.

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 description does contain a specific verb+resource: "Parses and scores Visa TAP Signature-Input / Signature header pairs (RFC 9421 HTTP Message Signatures)" and lists concrete outputs (errors, findings, score, verdict, warnings). However, that sentence is buried after several paragraphs of Chaingraph/artifact boilerplate, and it never distinguishes itself from the near-identical sibling inspect_visa_tap_signature, which prevents a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only genuine usage direction is the privacy constraint "Use synthetic or anonymised inputs only." There is no guidance on when to pick this over inspect_visa_tap_signature, validate_signature_agent_card, or check_webbotauth_nonce_replay. The compute-mode paragraphs describe parameter behavior rather than when to invoke the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

intoto_record_chain_runRecord a ChainGraph chain run as in-toto linksA
Read-only
Inspect

Wraps the result of a run_chain call (server/auto compute mode) as standard in-toto links, one per successfully-executed step, plus a generated in-toto layout matching the chain's linear topology (each step MATCHes the previous step's product). Materials/products are keyed by the step's execution_hash; byproducts carries the raw execution_hash. All links and the layout are DSSE-signed with one ephemeral Ed25519 keypair scoped to this call (never persisted) — first shipping instance of "in-toto for MCP" per the 2026 research gap survey. Verify the bundle offline with the in-toto Link Builder & Verifier (chaingraph/intoto-link-builder.html verify tab) or a reference implementation. Steps that did not run (input_required, skipped_by_gate, gpu_browser_only, etc.) are listed in skipped[] rather than silently omitted.

NameRequiredDescriptionDefault
run_chain_resultYesThe structuredContent object returned by run_chain (must include chain and steps[]).

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavior beyond the annotations: one ephemeral Ed25519 keypair per call, never persisted, DSSE signing of links and layout, and explicit handling of skipped steps in skipped[]. It also explains offline verification, giving the agent a clear operational model.

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?

The description is front-loaded with the core action and remains in a single coherent paragraph. It is somewhat long and includes a research-survey reference that does not help invocation, but most of the detail is relevant to correct use.

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?

There is no output schema, but the description explains the return artifacts thoroughly: in-toto links per successful step, a generated layout, skipped[] entries, and DSSE signatures. It also tells the agent how to verify the bundle offline, making the definition complete enough to call 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 description coverage is 100%, so the single input parameter is already documented as the structuredContent object from run_chain including chain and steps[]. The description adds useful context about the lifecycle but does not add parameter-specific semantics beyond the schema.

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?

The description uses a specific verb and resource: it wraps the result of a run_chain call as in-toto links plus a generated layout. It clearly distinguishes this from run_chain itself by saying this tool records the completed run rather than executing it.

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?

It states the triggering context clearly: use after a run_chain call in server/auto compute mode. It does not name alternative sibling tools such as build_chaingraph or emit_chaingraph_artifact, so it stops short of full when-to-use/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lei_kyb_checkLive LEI data-quality grading with GLEIF fetchA
Read-only
Inspect

Fetches an entity's live GLEIF LEI record (api.gleif.org -- the worker's only egress target for this tool, RULINGS-2026-07-19-EGRESS-APEX.md R1) and grades it across six GLEIF data-quality dimensions -- registration status, renewal timeliness, corroboration level, entity status, Level-2 parent disclosure, address completeness -- using the SAME deterministic grader as the tools/551 browser workbench (pasting the same record there reproduces identical grades). Returns per-dimension grades, a composite, and a receipt with source provenance (url, retrieved_at, response_digest). This is an ASSERTED FETCH, not a zkTLS proof of origin, and grades DATA QUALITY only -- never creditworthiness, sanctions status, or entity legitimacy.

NameRequiredDescriptionDefault
leiYes20-character ISO 17442 Legal Entity Identifier to look up.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnly/openWorld annotations, it discloses the single egress target, that this is an asserted fetch rather than a zkTLS proof of origin, that grading is deterministic and reproducible in the browser workbench, and that the response includes provenance (url, retrieved_at, response_digest). It does not cover failure modes such as an unknown or malformed LEI, or rate limiting.

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?

The purpose and the egress constraint are front-loaded, and each clause carries information (dimensions, determinism, trust limitation, return contents). It is dense and clause-heavy but not padded with restated name/title.

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?

With no output schema, the description successfully describes the return (per-dimension grades, composite, receipt with provenance). Combined with the trust caveat and scope exclusions, an agent has what it needs to call it correctly; only error behavior for invalid/unknown LEIs is left unaddressed.

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 schema already documents lei as a 20-character ISO 17442 identifier. The description adds no parameter-level detail beyond that, so baseline 3 is appropriate.

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?

The description names a specific verb chain (fetch live GLEIF record + grade across six named dimensions) and enumerates the exact dimensions, so an agent knows precisely what it produces. It is clearly distinguishable from siblings like check_lei_relationship_consistency or digest_gleif_snapshot, which do not grade data quality across those six axes.

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?

It gives clear scope boundaries — data quality only, 'never creditworthiness, sanctions status, or entity legitimacy' — which routes the agent away from screening or credit tools. It stops short of naming a specific alternative sibling (e.g., sanctions screening or relationship consistency tools) for those excluded use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_ab2013_training_data_disclosureAB 2013 Training Data Disclosure LinterB
Read-onlyIdempotent
Inspect

AB 2013 Training Data Disclosure Linter: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-315-ab2013-training-data-disclosure-linter.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: Lints a supplied generative-AI training-data disclosure against the 12 datapoint categories required by California AB 2013 (Cal. Outputs: all_present, insufficient_evidence, missing_datapoints, per_datapoint, present_count, statute_citation, total_datapoints. Output schema: call describe_tool("lint_ab2013_training_data_disclosure").

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: disclosure. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description still adds real behavioural context beyond them: deterministic server-side computation on gpu:false nodes, transient processing with no storage or logging, browser delegation semantics when gpu:true, and export of an AP2 artifact with execution_hash for chain provenance. The cost is that this context arrives as a wall of boilerplate rather than targeted disclosure.

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?

The definition is dominated by unrelated platform boilerplate — compute-binding rules, Cloudflare Workers deployment, a long FV-status hash URL, and a self-referential 'call describe_tool(...)' pointer. The one sentence that actually describes the tool's function appears near the end and is even truncated mid-citation ('(Cal.'). Front-loading is poor and several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output field list (all_present, missing_datapoints, per_datapoint, present_count, etc.) usefully compensates for the absence of an output schema. However, the actual decision input is under-specified: the description never says what form the 'disclosure' in policy_parameters should take — free text, structured object, or the 12 categories — which is the single thing an agent most needs 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 description coverage is 100%, so compute, parent_hashes, parent_tool_ids and policy_parameters are already documented, and the description's compute-mode text largely restates the schema. It adds only marginal meaning, such as the chaining intent behind parent_hashes via execution_hash provenance. Baseline 3 is appropriate when the schema does the heavy lifting.

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 Summary clause states a specific verb and resource: it lints a supplied generative-AI training-data disclosure against the 12 datapoint categories required by California AB 2013. That is far more specific than the title alone and distinguishes this from generic lint_* siblings by statute and subject matter. It stops short of naming which sibling to use instead (e.g. other lint_* or check_* tools), and the statement of purpose is buried at the end behind infrastructure boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance offered is 'Use synthetic or anonymised inputs only', which is a data-handling constraint rather than a when-to-use rule. Nothing tells the agent when this linter applies versus the many other lint_* and check_* siblings, nor what preconditions (e.g. a disclosure already assembled) must hold. Usage must be inferred entirely from the statute name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_aiuc1_control_evidenceAIUC-1 Control Evidence LinterB
Read-onlyIdempotent
Inspect

AIUC-1 Control Evidence Linter: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-304-aiuc1-evidence-pack-assembler. Open at: https://ainumbers.co/chaingraph/art-303-aiuc1-control-evidence-linter.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: Lints a supplied control-evidence bundle against the 23 automatable AIUC-1 v2026-Q1 controls (pillars A-F): version-guards the catalog, classifies each automatable control receipt-backed, attestation-only, or missing, and reports per-pillar and overall coverage. Outputs: aiuc1_version, attestation_only_count, automatable_scope, insufficient_evidence, missing_count, overall_coverage, per_control, per_pillar_coverage, procedural_controls_out_of_scope, receipt_backed_count, version_mismatch. Output schema: call describe_tool("lint_aiuc1_control_evidence").

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: aiuc1_version, control_evidence. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely non-schema behavior: inputs are processed transiently and not stored or logged, compute can be server-side or delegated to the browser, and an AP2 artifact with execution_hash is exported for provenance. This is useful beyond the annotations, though much of it is generic per-node boilerplate rather than tool-specific.

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?

The payload is dominated by reusable boilerplate — OpenChainGraph node framing, Cloudflare Workers compute binding, a URL, and a long FV-status hash path — before the single sentence that explains the tool. The 'Outputs:' enumeration is reasonable, but the ordering buries what an agent most needs, and several sentences duplicate the input schema verbatim.

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?

With no output schema, the description compensates by enumerating the returned fields (per_pillar_coverage, receipt_backed_count, version_mismatch, etc.), which is exactly what an agent needs to interpret results. Combined with the 100%-covered input schema, an agent has enough to call and consume this tool; only the routing guidance 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 each of the four parameters is documented in the schema itself, including the compute enum and the parent_hashes/parent_tool_ids pairing. The description restates the compute-mode semantics but adds nothing about the policy_parameters object (aiuc1_version, control_evidence) that the schema does not already say. 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?

The 'Summary:' sentence gives a precise verb and resource: lints a control-evidence bundle against the 23 automatable AIUC-1 v2026-Q1 controls, classifies each control, and reports coverage. It even names the downstream sibling (art-304-aiuc1-evidence-pack-assembler), which distinguishes it from assemble_aiuc1_evidence_pack. However, the actual purpose is buried after ~100 words of shared compute-node boilerplate, so the tool's identity is not front-loaded.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this versus alternatives such as check_etr_control_evidence or assemble_aiuc1_evidence_pack, nor any prerequisites (e.g. input must be an evidence bundle in a particular shape). The only conditional guidance is about compute modes, which is infrastructure-level, not task-level routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_arc_xreserve_configArc xReserve Config LinterB
Read-onlyIdempotent
Inspect

Arc xReserve Config Linter: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2026-07-18 (GENIUS Act §4 eligible-asset backing requirements; MiCA Art. 54 reserve requirements for EU EMT issuers. Date basis: deadline 2026-07-18 is the GENIUS Act §13(a) implementation rulemaking date and was missed (kept as the historical rulemaking date, not corrected to a live date); the GENIUS Act federal framework effective date under §20 is 18 Jan 2027. The two dates are distinct.). 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-42-arc-fit-diagnostic. Open at: https://ainumbers.co/chaingraph/art-45-arc-xreserve-linter.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: 8-check A–F linter for an Arc xReserve / on-chain reserve configuration. Outputs: verdict, grade, fail_count, warn_count, compliance_flags. Output schema: call describe_tool("lint_arc_xreserve_config").

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". Unknown keys are refused.

TDQS

B3.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), and the description still adds real behavior: deterministic compute node, server vs browser delegation semantics for compute mode, transient non-persisted input handling, and an AP2 artifact export carrying execution_hash for chaining. That exceeds what the annotations convey, though the regulatory-deadline digression adds no operational value.

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?

The actionable summary — what the tool does and what it returns — is placed at the very end, behind a lengthy parenthetical about GENIUS Act date provenance and an FV-status hash URL. Front-loading fails badly; multiple sentences here do not earn their place for an agent deciding whether to invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It compensates well for the absent output schema by enumerating the return fields (verdict, grade, fail_count, warn_count, compliance_flags) and pointing to describe_tool for details, and it documents compute/chaining. It remains incomplete on the actual decision inputs in policy_parameters, which are the substance of the lint and are left entirely unexplained.

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 itself documents compute, parent_hashes, parent_tool_ids, and the policy_parameters container. However, the eleven nested policy keys (usdc_pct, is_eu_emt, cctp_domains, mint_role_segregated, etc.) carry no schema descriptions at all and the description does not explain them, so the baseline 3 is the correct ceiling.

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 actual purpose is stated precisely but late: "8-check A–F linter for an Arc xReserve / on-chain reserve configuration," with a concrete output list. That is a specific verb and resource, but the description never distinguishes it from the many neighbouring reserve tools (check_genius_reserve_disclosure, check_mica_reserve_disclosure, precheck_reserve_attestation, recompute_stablecoin_reserve_3source).

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: "Consumes upstream artifacts from: art-42-arc-fit-diagnostic" suggests this runs after that diagnostic, which is useful sequencing context. But there is no explicit when-to-use / when-not-to-use statement and no routing against the reserve-check siblings an agent must choose between.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_authorization_payloadAuthorization Payload LinterB
Read-onlyIdempotent
Inspect

Authorization Payload Linter: OpenChainGraph compute node (payment_policy). 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. Output feeds: art-590-x402-eip712-digest-recomputer, art-612-erc2612-permit-binding-verifier, art-614-eip7702-authorization-tuple-decoder. Open at: https://ainumbers.co/chaingraph/art-700-authorization-payload-linter.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: Lints an authorization payload before it is signed, against a signing policy the caller declares. Outputs: mode, classification, checks, not_evaluated, evaluated_count, flagged_count, policy_conformance, display, handoffs, signature_form, warnings, scope_note. Output schema: call describe_tool("lint_authorization_payload").

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: mode. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds meaningful context beyond that: transient input processing with no storage/logging, compute mode delegation behavior, AP2 artifact export with execution_hash, and downstream consumers of the output.

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?

The critical purpose statement is buried near the end in a 'Summary' sentence after compute-node boilerplate, privacy notes, output-feeds lists, a URL, and FV-status text. Much of the opening repeats schema or infrastructure context rather than front-loading what the tool does and when to call it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists output field names and notes that no output schema exists, but it does not explain what those fields mean or how to interpret checks, classification, and policy_conformance. For a nested-policy linter with no output schema, the description is adequate but leaves important interpretation gaps.

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 input schema already carries the parameter documentation burden. The description mentions compute behavior and the declared signing policy, but it adds little specific meaning beyond the schema for nested policy_parameters fields or parent hash chaining.

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 description states a specific verb and resource: it lints an authorization payload before signing against a declared signing policy. That is clear enough to distinguish it from generic validators, but it does not explicitly name or differentiate itself from nearby siblings such as validate_mcp_authorization_metadata or decode_eip7702_authorization_tuple.

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 implicitly signaled by 'before it is signed' and 'against a signing policy the caller declares', plus the instruction to use synthetic or anonymised inputs. However, there is no explicit when-to-use versus alternatives section, no when-not-to-use guidance, and no named sibling tool for comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_besu_settlement_contractBesu Settlement Contract LinterB
Read-onlyIdempotent
Inspect

Besu Settlement Contract Linter: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-292-attest-settlement-orchestrator. Open at: https://ainumbers.co/chaingraph/art-289-lint-besu-settlement-contract.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: Static conformance lint of a permissioned-EVM settlement contract (Solidity source or ABI) against six invariants: atomic PvP/DvP (paired-or-revert), no native-token/msg.value settlement dependence, a finality-hook/settlement event, a compliance-gate modifier preceding every value transfer, bound... Outputs: artifact_kind, fail_count, findings, invariants_pass, overall, ruleset_profile, warn_count. Output schema: call describe_tool("lint_besu_settlement_contract").

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: artifact_kind, ruleset_profile, source. Unknown keys are refused.

TDQS

B3.2/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 the description adds genuinely new behavior: the auto/server/browser compute routing, that gpu:true nodes always delegate to the browser, that inputs are processed transiently with no storage or logging, and that an AP2 artifact with execution_hash is exported. The compute-mode explanation duplicates the schema's compute parameter description, which tempers the score slightly.

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?

The text is long and front-loaded with reusable boilerplate (compute-node identity, FV-status receipt path, privacy notice) rather than the tool's function. Redundant material — the compute-mode rules restated from the schema, the URL, and the describe_tool pointer — crowds out the core purpose, which is buried in a truncated 'Summary' sentence.

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?

For a read-only, deterministic lint with no output schema, the description supplies output field names (overall, invariants_pass, fail_count, findings, warn_count, artifact_kind, ruleset_profile), privacy handling, provenance export semantics, and a pointer to describe_tool. The main gap is that the enumerated invariant set is cut off ('bound...'), leaving part of the ruleset profile unexplained.

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 the compute/parent_hashes/parent_tool_ids/policy_parameters fields are each documented in the schema, so the baseline of 3 applies. The description adds only a loose gloss ('Solidity source or ABI', 'ruleset_profile') and no ordering or format detail beyond what the schema already gives.

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 'Summary:' segment states a specific verb and resource — static conformance lint of a permissioned-EVM settlement contract (Solidity source or ABI) — and enumerates named invariants (paired-or-revert PvP/DvP, no msg.value dependence, finality hook, compliance gate), which distinguishes it from sibling linters like lint_settlement_orchestrator_conformance and lint_securities_settlement_message. It loses a point because roughly half the text is generic compute-node boilerplate before the actual purpose appears, and the invariant list is truncated mid-word ('bound...').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to choose this linter versus the many other lint_*/validate_* settlement tools. The only adjacent hint is 'Output feeds: art-292-attest-settlement-orchestrator', which implies a downstream chain position but not a selection rule. 'Use synthetic or anonymised inputs only' is an input constraint, not when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_cbom_structureCBOM Structural Lint & CNSA-2.0 ClassifierA
Read-onlyIdempotent
Inspect

CBOM Structural Lint & CNSA-2.0 Classifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-386-lint-cbom-structure.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: Validates a pasted CycloneDX 1.6 Cryptography Bill of Materials against a hand-derived field subset (algorithm, key size, certification level, crypto functions) and classifies declared algorithm assets as quantum-vulnerable (RSA, ECDSA/ECDH, DH, SHA-1) or CNSA-2.0 target-aligned (ML-KEM-1024, ML-... Outputs: cbom_structurally_valid, cnsa2_ready_count, compliance_flags, data_version, findings, structural_issues, structurally_invalid_count, total_algorithm_assets, total_components, unclassified_count, verdict, vulnerable_count. Output schema: call describe_tool("lint_cbom_structure").

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: cbom. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses compute routing (server-side Workers vs browser delegation URL, gpu:true always delegates), transient non-retention of inputs, a synthetic-inputs-only constraint, and AP2 artifact export with execution_hash. That is meaningful behavioral context, though it is diluted by infrastructure boilerplate.

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?

The useful content is buried behind repeated 'OpenChainGraph compute node' boilerplate, a long external URL, and a full FV-status hash URL. The Summary sentence is also truncated ('ML-...'), and output listing is a raw comma-separated dump rather than structured prose.

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?

With no output schema, the description compensates by listing output fields such as verdict, findings, compliance_flags, and vulnerable_count, and it explains the compute-mode branching. It is close to complete for invocation, though it does not explain allowed verdict values or the expected CBOM minimal shape.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description partly compensates for the nested policy_parameters object by clarifying that the cbom input is a pasted CycloneDX 1.6 document, but otherwise largely restates the compute enum already in the schema.

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 Summary names a specific verb and resource: validates a CycloneDX 1.6 CBOM and classifies algorithm assets as quantum-vulnerable or CNSA-2.0 aligned. It does not distinguish itself from adjacent siblings such as validate_cyclonedx_sbom or classify_blockchain_quantum_risk, which keeps it below a 5.

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 by the purpose: you have a pasted CycloneDX CBOM and want linting plus CNSA-2.0 classification. There is no explicit when-to-use guidance, no exclusions, and no routing to the SBOM or quantum-risk siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_cbpr_structured_addressCBPR+ Structured Address LinterA
Read-onlyIdempotent
Inspect

CBPR+ Structured Address Linter: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-242-pacs008-party-completeness-validator. Open at: https://ainumbers.co/chaingraph/art-241-cbpr-structured-address-linter.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: Lints a single pacs.008 PostalAddress24 block against the SWIFT CBPR+ structured-address requirement (formerly 14 November 2026; deferred by Swift on 27 August 2026 under a controlled extension of Standards Release 2026, new date not yet published). Outputs: cbpr_plus_deadline, compliant, disambiguation, error_count, pii_note, readiness_pct, regulatory_basis, structure_type, table_source, table_version, violations. Output schema: call describe_tool("lint_cbpr_structured_address").

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: address_lines, building_number, country, country_subdivision, post_code, street_name, town_name. Unknown keys are refused.

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 and closed-world behaviour, so the safety bar is low. The description goes further by disclosing compute routing (server kernel vs browser delegation URL for compute:'browser', gpu:true always delegating), transient processing with no storage or logging, the synthetic-input requirement, the AP2 execution_hash export, and the regulatory deferral date. Most of this is shared platform boilerplate, but it is still genuine behavioural context beyond 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The tool name is restated, then roughly five sentences of platform boilerplate, an FV-status hash URL and a receipt disclaimer all precede the single sentence that actually says what the tool does. The genuinely useful content (purpose, regulatory date, output list) is not front-loaded, and an agent skimming the opening learns nothing about the linter.

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?

With no output schema, the description usefully enumerates the return fields (compliance, error_count, violations, regulatory_basis, table_version, readiness_pct, etc.), and it pins the regulatory basis including the Swift deferral, which matters for interpreting the deadline output. What is missing is any guidance on the required address sub-fields or on how violations map to remediation.

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 compute, parent_hashes, parent_tool_ids and policy_parameters semantics are already documented in the schema. The description adds no field-level meaning beyond repeating the compute:'auto'/'browser' behaviour, and does not say anything about the seven required address fields inside policy_parameters. 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?

The summary sentence names a specific verb and resource: 'Lints a single pacs.008 PostalAddress24 block against the SWIFT CBPR+ structured-address requirement', which an agent can act on without opening the schema. It does not distinguish itself from near siblings such as lint_fedwire_structured_address or validate_pacs008_party_completeness. The purpose is also buried at the end of a long preamble rather than stated first.

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?

There is no explicit when-to-use or when-not-to-use guidance. The 'Output feeds: art-242-pacs008-party-completeness-validator' line hints at a downstream workflow position, which implies usage context but does not tell the agent how to choose between this linter and the pacs.008 party-completeness validator or the Fedwire address linter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_compelling_evidence_ce30_agenticAgentic Dispute CE3.0 Evidence LinterB
Read-onlyIdempotent
Inspect

Agentic Dispute CE3.0 Evidence Linter: OpenChainGraph compute node (compliance_mandate). 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-23-visa-trusted-agent-protocol-inspector, art-24-mastercard-agentic-token-builder, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-297-agentic-dispute-ce30-linter.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: Deterministic lint of a supplied agentic-dispute evidence bundle against Visa CE3.0 compelling-evidence requirements, agentic-transaction profile: authorization-at-delegation (AP2 mandate), agent-identity (TAP signature + agentic token), fulfillment (delivery proof), plus the CE3.0 prior-transact... Outputs: ce30_prior_txn_test, ce30_readiness, insufficient_evidence, missing_elements, network, not_a_win_prediction, per_element, reason_code. Output schema: call describe_tool("lint_compelling_evidence_ce30_agentic").

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: dispute, evidence. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds real behavioral context: compute:"auto" computes server-side on Workers, compute:"browser" returns a delegation URL, gpu:true always delegates, inputs are processed transiently and not stored or logged, and the export is an AP2 artifact with execution_hash for chain provenance. These are non-obvious traits beyond the annotations, though the prose is tangled with platform boilerplate.

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?

The text is bloated with duplicated OpenChainGraph boilerplate ("OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node."), a URL, an FV-status receipt and hash, and a truncated Summary. The actual purpose appears mid-paragraph rather than being front-loaded, and several sentences repeat structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description partially compensates by listing output fields (ce30_prior_txn_test, ce30_readiness, insufficient_evidence, missing_elements, per_element, reason_code) and pointing to describe_tool. However, for a complex nested-policy tool it never explains what evidence/dispute content is expected, what "readiness" or "not_a_win_prediction" mean, or how insufficient evidence should be interpreted.

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 baseline is 3. The description restates the compute-mode behavior and mentions chaining via upstream execution_hash values, both of which the schema already documents. It adds no meaningful guidance on the required policy_parameters.dispute and policy_parameters.evidence contents, which are untyped empty objects in the schema.

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 Summary states a specific verb and resource: "Deterministic lint of a supplied agentic-dispute evidence bundle against Visa CE3.0 compelling-evidence requirements, agentic-transaction profile." That is clear enough for an agent to know what the tool does, but the statement is buried after compute-node boilerplate and the truncated ending ("plus the CE3.0 prior-transact...") leaves the scope incomplete.

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: the tool is a linter for an agentic-dispute evidence bundle, and it names upstream artifacts it consumes (art-01, art-23, art-24, cry-05), which hints at chain placement. There is no explicit when-to-use / when-not-to-use guidance versus siblings such as validate_ap2_mandate_chain or lint_aiuc1_control_evidence, and no prerequisite statement beyond "Use synthetic or anonymised inputs only."

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_crypto_asset_whitepaperCrypto-Asset Whitepaper Linter (iXBRL)B
Read-onlyIdempotent
Inspect

Crypto-Asset Whitepaper Linter (iXBRL): OpenChainGraph compute node (compliance_mandate). 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-98-mica-casp-fit-diagnostic. Output feeds: cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-102-crypto-asset-whitepaper-linter.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: Validates Art 6/8 whitepaper: Annex I section completeness + iXBRL/XHTML well-formedness + ESMA MiCA taxonomy structural conformance (ITS 2024/2984). Outputs: annex_i_gaps, conformance_grade, ixbrl_valid, note, reference_version, sections_checked, taxonomy_conformant, taxonomy_note. Output schema: call describe_tool("lint_crypto_asset_whitepaper").

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". Unknown keys are refused.

TDQS

B3.4/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 behavior. The description adds meaningful behavior beyond them: compute auto/server/browser delegation, gpu delegation, transient non-retention, and AP2 artifact emission with execution_hash. It does not cover auth or rate limits, but annotations carry the safety profile.

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?

The description is bloated with repeated 'OpenChainGraph compute node' phrasing, a full FV-status URL, and infrastructure metadata before the actual validation purpose appears. The useful summary and output list are present, but the structure is not front-loaded and many sentences do not help tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex compliance linter with no output schema, the description does list returned fields such as annex_i_gaps and conformance_grade, and covers privacy and compute behavior. However, it never explains how the whitepaper document is supplied through policy_parameters.inputs, which is a material gap for correct invocation.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description clarifies compute defaults and links execution_hash to chain provenance, but it does not explain the generic policy_parameters.inputs or what whitepaper content to supply. Baseline 3 is appropriate.

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 summary states a specific verb and resource: validates an Art 6/8 crypto-asset whitepaper for Annex I completeness, iXBRL/XHTML well-formedness, and ESMA MiCA taxonomy conformance. That is much clearer than the name alone, though it is buried after compute-node boilerplate and does not explicitly contrast with sibling MiCA tools.

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 description gives workflow context by naming the upstream fit diagnostic and downstream verifier, and warns to use synthetic or anonymised inputs. However, it never states when to choose this linter over related siblings such as run_mica_casp_fit or assess_mica_casp_readiness, and it gives no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_fedwire_structured_addressFedwire Structured Address LinterB
Read-onlyIdempotent
Inspect

Fedwire Structured Address Linter: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-350-fedwire-address-sweep. Open at: https://ainumbers.co/chaingraph/art-349-fedwire-structured-address-linter.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: Lints a Fedwire or CHIPS ISO 20022 PostalAddress24 block against the Fedwire structured-address end state (network param selects fedwire or chips; rules verified byte-identical between the two networks at build time). Outputs: compliant, disambiguation, error_count, fedwire_chips_deadline, network, pii_note, readiness_pct, regulatory_basis, structure_type, table_source, table_version, violations. Output schema: call describe_tool("lint_fedwire_structured_address").

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: address_lines, building_number, country, country_subdivision, network, post_code, street_name, town_name. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), so the description earns credit for adding things annotations cannot: transient/no-retention processing, determinism, an AP2 artifact with execution_hash for provenance, and the compute-mode delegation behavior. This is boilerplate shared across the tool family, but it is genuinely useful context 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is badly front-loaded: two near-identical 'compute node' clauses, a full compute-binding paragraph that duplicates the schema, and a long FV-status hash URL all precede the actual purpose. The genuinely valuable content (what it lints, what it outputs) is buried and could be half the length.

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?

There is no output schema, so the description compensates by enumerating the return fields (compliant, disambiguation, error_count, readiness_pct, violations, etc.) and by explaining chaining via parent_hashes/parent_tool_ids and the AP2 export. An agent has enough to call it correctly, though the absence of explicit alternative-tool routing leaves one gap.

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 carries most parameter meaning and a 3 is the baseline. The description does add real semantics for the network parameter ('selects fedwire or chips; rules verified byte-identical between the two networks at build time'), which slightly exceeds the schema, but the compute and parent_hash parameters are only restated.

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 description does state a specific verb and resource: 'Lints a Fedwire or CHIPS ISO 20022 PostalAddress24 block against the Fedwire structured-address end state', and the network parameter distinction is spelled out. However, this core sentence is buried mid-paragraph behind repeated boilerplate ('OpenChainGraph compute node... Deterministic OpenChainGraph compute node'), and it never explicitly distinguishes itself from siblings like lint_cbpr_structured_address or sweep_fedwire_addresses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use statement. The only usage-adjacent lines are 'Use synthetic or anonymised inputs only' and 'Output feeds: art-350-fedwire-address-sweep', which give context but not selection criteria against the many overlapping lint_* and address tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_insurance_evidence_freshnessAIUC-1 Evidence Freshness LintA
Read-onlyIdempotent
Inspect

AIUC-1 Evidence Freshness Lint: OpenChainGraph compute node (compliance_mandate). 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-304-aiuc1-evidence-pack-assembler. Open at: https://ainumbers.co/chaingraph/art-305-aiuc1-evidence-freshness-lint.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: Freshness lint keyed to the AIUC-1 quarterly re-test cadence: flags any control whose newest receipt is more than 90 days old and computes cert_expiry (cert_anniversary plus 12 months) with cert_expired / cert_expiring_within_days flags. Outputs: as_of, cert_expired, cert_expiring_within_days, cert_expiry, insufficient_evidence, stale_controls, stale_count. Output schema: call describe_tool("lint_insurance_evidence_freshness").

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: as_of, cert_anniversary, controls. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only and idempotent annotations, the description discloses compute modes, server-side versus browser delegation, transient input handling, and AP2 artifact export with execution_hash. These are meaningful behavioral details, though much of the text is generic compute-node boilerplate rather than tool-specific 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?

The actual purpose is buried under generic compute-node text, privacy boilerplate, provenance details, a URL, and an FV-status path. The summary is useful but not front-loaded, and several sentences do not earn their place for tool selection.

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?

There is no output schema, but the description lists the output fields including as_of, cert_expired, cert_expiring_within_days, cert_expiry, insufficient_evidence, stale_controls, and stale_count. Combined with the input schema and behavioral notes, this is largely complete enough for an agent to call the tool, though the required policy_parameters are left to the schema.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description reinforces compute modes but does not add parameter semantics beyond what the schema provides; baseline 3 is appropriate.

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 description states a specific verb and resource: it is a freshness lint for AIUC-1 evidence, flagging controls with receipts older than 90 days and computing cert_expiry. The purpose is clear once the summary is reached, though it does not explicitly differentiate from sibling lint_aiuc1_control_evidence.

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?

It implies usage by tying the lint to the AIUC-1 quarterly re-test cadence and 90-day staleness threshold, but it never states when to choose this tool over alternatives such as lint_aiuc1_control_evidence or assemble_aiuc1_evidence_pack. No exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_lei_payment_bindingWolfsberg Payment Transparency & LEI Binding LinterB
Read-onlyIdempotent
Inspect

Wolfsberg Payment Transparency & LEI Binding Linter: OpenChainGraph compute node (compliance_mandate). 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-242-pacs008-party-completeness-validator. Open at: https://ainumbers.co/chaingraph/art-246-lei-payment-binding-linter.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: Full ISO 17442 LEI check-digit validation via ISO 7064 Mod 97-10 for originator and beneficiary LEIs in pacs.008. Outputs: error_count, issues, lei_results, lei_valid, pii_note, regulatory_basis, table_source, table_version, wolfsberg_field_results, wolfsberg_transparency_score, wolfsberg_transparency_tier. Output schema: call describe_tool("lint_lei_payment_binding").

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: beneficiary_account, beneficiary_lei, beneficiary_name, originator_account, originator_lei, originator_name. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real context beyond them: transient processing with no storage/logging/retention, a synthetic-input restriction, server-vs-browser delegation behavior, and AP2 export with execution_hash for provenance. This is meaningful disclosure, though much of it is generic platform boilerplate rather than tool-specific 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?

The text is bloated with platform boilerplate (compute node, Cloudflare Workers, gpu:true delegation), a long FV-status hash URL, and a documentation URL, with the actual tool purpose pushed into a mid-paragraph 'Summary'. The important content is not front-loaded despite a few efficient sentences.

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?

For a nested-object, read-only linter with no output schema, the description covers inputs, enumerated outputs (error_count, issues, lei_results, lei_valid, wolfsberg_transparency_score/tier, etc.), provenance, and data handling, and it points to describe_tool for the full output schema. Nearly complete, with only the sibling-selection gap remaining.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids, and the policy_parameters fields including required keys. The description only restates compute-mode behavior and the artifact chaining, adding little beyond what the schema provides; 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?

The 'Summary' sentence gives a specific verb+resource: ISO 17442 LEI check-digit validation (ISO 7064 Mod 97-10) of originator and beneficiary LEIs in pacs.008. It is buried behind compute-node boilerplate and never distinguishes itself from siblings like validate_pacs008_party_completeness, lei_kyb_check, or check_lei_relationship_consistency, so it is clear but not differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is operational (synthetic/anonymised inputs only, compute mode semantics) and the upstream artifact note. There is no statement of when to use this linter versus the many sibling LEI/pacs.008 validators, nor any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_mcp_server_conformanceMCP Server Self-Attestation PackB
Read-onlyIdempotent
Inspect

MCP Server Self-Attestation Pack: OpenChainGraph compute node (infrastructure_mandate). 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. Output feeds: cry-05-agent-action-audit-trail-aggregator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-33-mcp-server-self-attestation-pack.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: Combines the five MCP-dev checks: tool-definition lint (JSON Schema 2020-12), server.json validation (2025-12-11 schema), OAuth 2.1 audit (RFC 9728 PRM, RFC 8707 audience), tool-poisoning scan, and ops/readiness, into one self-reported conformance lint: composite A-F ship-readiness grade plus per... Outputs: composite_grade, composite_score, fail_count, pass_count, per_domain_scores, remediation, warn_count. Output schema: call describe_tool("lint_mcp_server_conformance").

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: oauth_flags, security_flags, server_json, tool_definition. Unknown keys are refused.

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/non-destructive/closed-world, so the bar is lower, yet the description adds substantive behavior: transient server-side processing with no storage, logging, or retention; compute:'auto' vs 'browser' execution semantics with browser delegation for gpu:true nodes; and an AP2 artifact export carrying execution_hash. The data-handling and delegation details are real value beyond annotations, though diluted by infrastructure boilerplate.

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?

Badly bloated and not front-loaded: title restatement, compute-node mandate jargon, a documentation URL, and a whole paragraph about an FV-status receipt file precede any statement of purpose, and the capability list is literally truncated mid-sentence ('plus per...'). The final line 'Output schema: call describe_tool(...)' is a routing instruction, not description content. Much of the text would apply to every node in the catalog rather than this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Helpful elements are present — the five constituent checks and the explicit output field list (composite_grade, composite_score, per_domain_scores, remediation, counts) compensate for the absent output schema. But for a tool whose only real input is a nested policy_parameters object with four untyped sub-objects, the description gives zero guidance on what belongs in oauth_flags, security_flags, server_json, or tool_definition, leaving the agent dependent on describe_tool.

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%, so baseline is 3. The description duplicates the compute-mode semantics that the schema already spells out, and says nothing additional about parent_hashes/parent_tool_ids ordering beyond the schema's own text. Critically, it never hints at the shape of the untyped nested objects (oauth_flags, security_flags, server_json, tool_definition) whose sub-properties have no schema at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The real purpose only surfaces in the middle of the description: 'Combines the five MCP-dev checks: tool-definition lint, server.json validation, OAuth 2.1 audit, tool-poisoning scan, and ops/readiness, into one self-reported conformance lint.' That is a specific verb+resource, but it is preceded by ~100 words of 'OpenChainGraph compute node (infrastructure_mandate)' boilerplate that restates the title and tells an agent nothing about what the tool does. The composite nature does distinguish it from the individual lint siblings, but only if the agent reaches that sentence.

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?

'Combines the five MCP-dev checks ... into one' implies the trade-off against lint_mcp_tool_definition, validate_mcp_server_json, audit_mcp_oauth, and scan_tool_poisoning, and 'Use synthetic or anonymised inputs only' is a genuine usage constraint. However, no sentence explicitly says 'use this instead of the five individual lints when you want a single ship-readiness grade', and no exclusions or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_mcp_tool_definitionMCP Tool-Definition Linter & Annotation DesignerA
Read-onlyIdempotent
Inspect

Validate an MCP tool definition against JSON Schema 2020-12 and current naming, output-schema, and annotation rules; returns findings, a conformance score, and a recommended annotation set. Use when a developer wants to check an MCP tool definition before publishing. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("lint_mcp_tool_definition").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A3.9/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), and the description adds real context beyond them: widget rendering, inputs applied via the AIN Bridge prefill, client-side execution, zero PII, zero network. That is meaningfully non-obvious behavior for an agent to know. It does not detail rate limits or what happens on an invalid definition input.

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?

Front-loaded with purpose and outputs in sentence one, then usage, then execution model, then a pointer to describe_tool. Four sentences, each carrying distinct information, though the widget/AIN Bridge sentence is somewhat stacked with unexplained terms.

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?

For a single-parameter read-only validator with no output schema, the definition covers what it does, when to use it, and what it returns at a high level, and even redirects to describe_tool for the full output contract. What 'findings' contain and their severity structure is left entirely to that redirect.

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?

Only one parameter (`inputs`), and schema description coverage is 100%, so the schema already explains the ID-to-value map. The description adds a small amount by saying inputs are applied via AIN Bridge prefill, but nothing about expected keys or the manifest input_schema is expanded.

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 (validate) and resource (an MCP tool definition), plus the rule families checked (JSON Schema 2020-12, naming, output-schema, annotation) and the outputs (findings, conformance score, recommended annotation set). The 'tool definition' scope implicitly separates it from server-level siblings like lint_mcp_server_conformance, but no sibling is named explicitly.

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 clear trigger: 'Use when a developer wants to check an MCP tool definition before publishing.' That is a concrete life-cycle moment rather than a vague gesture. It stops short of exclusions or naming an alternative (e.g. lint_mcp_server_conformance for server-wide checks, score_mcp_readiness for scoring).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_metro2_recordMetro 2 Credit-Reporting Record LintA
Read-onlyIdempotent
Inspect

Metro 2 Credit-Reporting Record Lint: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-398-lint-metro2-record.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: Lints a Metro 2 credit-reporting base-segment record from a PUBLIC SUBSET of the format: field presence/format, account-status and payment-rating code validity, and DOFD (date of first delinquency) cross-field consistency per FCRA 15 U.S.C. Outputs: compliant, disambiguation, error_count, field_status, is_delinquent_status, issues, metro2_subset_score, obsolete_per_fcra, pii_note, regulatory_basis, subset_coverage_statement, table_source, table_version, warning_count. Output schema: call describe_tool("lint_metro2_record").

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: account_status, account_type, amount_past_due, current_balance, date_of_first_delinquency, date_opened, date_reported, has_j1_segment, has_j2_segment, has_k_segment, payment_rating. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world, and the description stays consistent with them. It adds genuinely non-annotation context: inputs are processed transiently and not stored or logged, gpu:true nodes always delegate to the browser, and an AP2 artifact with execution_hash is exported for provenance. The 'PUBLIC SUBSET' caveat also sets expectations about scope, though the boilerplate is generic to all ChainGraph nodes rather than specific to this lint.

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?

Roughly two-thirds of the text is platform boilerplate (OpenChainGraph compute node, Cloudflare Workers, FV-status hash URL) identical across nodes, and the actual tool purpose appears only in the trailing 'Summary:' after that noise. The outputs list and describe_tool pointer are useful, but the front-loading is inverted for an agent deciding whether to call this.

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?

With no output schema, the description compensates by enumerating all thirteen return fields (compliant, issues, obsolete_per_fcra, subset_coverage_statement, etc.), and annotations plus the description cover the safety and execution model. What's missing is interpretation guidance — e.g., how to read metro2_subset_score or what subset_coverage_statement implies for compliance claims — and the return contract is only reachable via describe_tool.

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 the schema already documents compute mode, parent_hashes chaining, and the full required key list for policy_parameters. The description repeats the compute-mode semantics rather than adding anything new (e.g., what date_of_first_delinquency format is expected or how amount_past_due is interpreted). Baseline 3 applies when the schema carries the parameter burden.

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 'Summary:' sentence gives a specific verb and resource — lints a Metro 2 credit-reporting base-segment record — plus the exact checks (field presence/format, account-status and payment-rating code validity, DOFD consistency per FCRA). The resource is distinct enough from siblings like lint_mismo_uldd_ulad or lint_x12_claim_records, but the description never explicitly routes against those alternatives, and the purpose statement is buried behind ~120 words of platform boilerplate.

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 only real usage constraint is 'Use synthetic or anonymised inputs only', which is explicit and useful. There is no statement of when to pick this tool over a sibling lint tool or what to do when the record is outside the public subset; the compute:'auto' vs 'browser' text is parameter behavior, not tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_mismo_uldd_uladULDD/ULAD Structural LinterB
Read-onlyIdempotent
Inspect

ULDD/ULAD Structural Linter: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-226-mismo-uldd-ulad.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: ULDD Phase 5 / ULAD structural lint of required data points, enumerations, and conditionality rules. Outputs: error_count, errors, field_results, fields_supplied, license_note, lint_pass, pii_note, regulatory_basis, table_source, table_version, uldd_mandate_date, uldd_phase, warning_count, warnings. Output schema: call describe_tool("lint_mismo_uldd_ulad").

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: loan_data. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/non-destructive, and the description adds genuinely new behavioral facts: execution location (server-side Cloudflare Workers vs browser delegation URL), the transient-processing/no-storage data-handling guarantee, and that an AP2 artifact with execution_hash is exported for chain provenance. The compute-mode explanation largely restates the schema's own `compute` description, and the FV-status snapshot note is useful but tangential.

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?

The definition is badly back-loaded: platform identity, compute binding, privacy policy, artifact export, a URL and a 64-hex FV-status path all precede the one sentence that says what the tool does. Substantial material (the long chain-provenance hash URL) does not help an agent decide or invoke, so several sentences do not earn their 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?

For a read-only linter with fully described parameters, the definition covers purpose, execution model, data handling, and enumerates the full output field set with a pointer to describe_tool for the output schema. An agent has enough to call it correctly; the gap is prioritisation of that information, not missing substance.

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 all four parameters are already documented, and the description's compute-mode text duplicates what the schema says verbatim. It adds the 'Required: loan_data / Unknown keys are refused' constraint, but that same text already lives in the policy_parameters schema description, so 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?

The 'Summary' sentence states a specific verb+resource: 'ULDD Phase 5 / ULAD structural lint of required data points, enumerations, and conditionality rules', which distinguishes it from adjacent linters such as lint_metro2_record or lint_x12_claim_records by naming the standard being validated. However, the real purpose appears only after ~80 words of platform boilerplate, so an agent skimming the opening sentences learns nothing about what is linted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to pick this tool versus a sibling linter, no prerequisites, and no exclusions. The only guidance-like text is an input constraint ('Use synthetic or anonymised inputs only') and the compute-mode mechanics, neither of which tells the agent when this lint is the right call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_securities_settlement_messageSecurities-Settlement Message Linter (ISO 20022 sese/semt)A
Read-onlyIdempotent
Inspect

Securities-Settlement Message Linter (ISO 20022 sese/semt): OpenChainGraph compute node (compliance_mandate). 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-81-allocation-affirmation-conformance. Output feeds: cry-04-merkle-batch-verifier, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-82-securities-settlement-message-linter.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: Validates ISO 20022 securities-settlement messages (sese.023 instruction, sese.024 status advice, semt.044 account statement) for schema conformance, mandatory-field presence, ISIN (ISO 6166), and BIC (ISO 9362) validity. Outputs: fail_count, in_scope_message_types, note, out_of_scope_count, pass_count, pass_rate, reference, results, scope_guard_note, total_issues, total_messages, warn_count. Output schema: call describe_tool("lint_securities_settlement_message").

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". Unknown keys are refused.

TDQS

A3.7/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), and the description adds genuinely new behavior: transient processing with no storage/logging/retention, the server-vs-browser execution split, and export of an AP2 artifact with execution_hash for chain provenance. Minor deduction for boilerplate (FV-status receipt hash, URL) that adds little actionable behavior for an invoking agent.

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?

The actual purpose ("Summary: Validates ISO 20022 ...") appears only after roughly a hundred words of compute-kernel boilerplate, provenance links, and a verification receipt hash. Roughly half the text is chain-infrastructure scaffolding rather than information needed to select or invoke the linter, so it is poorly front-loaded despite being individually accurate.

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?

There is no output schema, but the description enumerates the return fields (pass_count, fail_count, warn_count, pass_rate, results, scope_guard_note, etc.) and points to describe_tool for the schema, which covers the return contract. Upstream/downstream chaining is also disclosed; the only real gap is guidance on supplying the messages payload.

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%, so the schema already documents compute, parent_hashes, and parent_tool_ids, and the description adds no syntax or format detail beyond that. Critically, the actual payload location — policy_parameters.messages — has an empty schema entry and is never explained in the description, so the agent gets no help on where to place the messages to be linted.

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?

The description names the specific resource (ISO 20022 securities-settlement messages) and enumerates the in-scope message types (sese.023 instruction, sese.024 status advice, semt.044 account statement) plus the exact checks performed (schema conformance, mandatory fields, ISIN/ISO 6166, BIC/ISO 9362). This differentiates it clearly from adjacent siblings such as validate_dtcc_ca_iso20022_message, check_iso20022_pqc_readiness, and map_iso20022_to_evm_calldata.

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 context is implied through the upstream artifact (art-81-allocation-affirmation-conformance) and downstream consumers, and one hard constraint is stated ("Use synthetic or anonymised inputs only"). However, there is no explicit when-to-use/when-not guidance versus the many sibling ISO 20022 linters/validators, and the compute-mode text is about execution routing rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_settlement_orchestrator_conformanceSettlement Orchestrator AttestationA
Read-onlyIdempotent
Inspect

Settlement Orchestrator Attestation: OpenChainGraph compute node (infrastructure_mandate). 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-289-lint-besu-settlement-contract. Open at: https://ainumbers.co/chaingraph/art-292-attest-settlement-orchestrator.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: Extends the lint_mcp_server_conformance (art-33) self-reported conformance lint to the settlement decision path: checks the off-chain orchestrator deciding commit/halt on a shared-ledger orchestration layer, never the ledger itself. Outputs: attestation, checks, overall, per_domain_scores. Output schema: call describe_tool("lint_settlement_orchestrator_conformance").

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: decision_policy_ref, kernel_bindings, orchestrator_manifest, transport. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring read-only, idempotent, non-destructive behavior, the description adds useful operational context: server-side vs browser delegation, transient input handling, synthetic-input guidance, and AP2 artifact export with execution_hash. It does not contradict the annotations and materially improves predictability.

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?

The description is cluttered with repeated compute-node boilerplate, a long FV-status URL, and the substantive purpose summary is buried near the end. Useful details are present, but many sentences do not earn their place for tool selection.

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?

Given the rich schema and annotations, the description covers the important invocation context: compute behavior, privacy constraints, upstream artifact linkage, and output categories. It is not fully self-contained on policy_parameters, but the schema and described outputs make it sufficiently complete for correct use.

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 carries the main parameter semantics. The description reinforces compute modes and upstream artifact chaining but does not add much parameter meaning beyond what the schema already documents.

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 description states a specific lint/attestation purpose for the settlement orchestrator decision path and distinguishes it from ledger-level checks by saying it checks the off-chain orchestrator, never the ledger itself. It also ties itself to lint_mcp_server_conformance, but the boilerplate compute-node framing dilutes the opening.

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?

It implies usage by describing the settlement-orchestrator scope and upstream artifact consumption, and it gives compute-mode guidance. However, it does not explicitly say when to choose this tool over sibling settlement lint or validation tools, leaving alternatives to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_stock_token_valuationValuation Double-Count / Decimal LinterA
Read-onlyIdempotent
Inspect

Valuation Double-Count / Decimal Linter: OpenChainGraph compute node (collateral_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-319-rhc-valuation-linter.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: Lints Robinhood Chain stock-token USD valuation expressions for the double-count bug: the Chainlink price feed already includes corporate actions, so multiplying raw balance by price and then by uiMultiplier applies the same corporate action twice. Outputs: computed_usd_value_under_test, correct_value, corrected_expression, delta, discrepancy, double_counted_value, verdict. Output schema: call describe_tool("lint_stock_token_valuation").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description only needs to add execution behavior — and it does: compute:'auto' runs server-side for gpu:false nodes with a registered kernel, compute:'browser' returns a delegation URL instead, gpu:true nodes always delegate, inputs are transient and not logged, and an AP2 artifact with execution_hash is exported. The FV-status receipt note adds provenance context. Deductions for the boilerplate tone and the fact that the most decision-relevant trait (transient, non-retained input handling) is buried mid-paragraph.

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?

Roughly two-thirds of the text is generic platform boilerplate — OpenChainGraph compute node restated twice, Cloudflare Workers, a URL, an FV-status snapshot disclaimer — none of which is specific to this linter. The one sentence that explains the tool's actual decision function is at the end, so the description is back-loaded rather than front-loaded. The useful content would fit in two sentences.

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?

There is no output schema, and the description compensates by enumerating the return fields (computed_usd_value_under_test, correct_value, corrected_expression, delta, discrepancy, double_counted_value, verdict) and explaining the underlying double-count logic that produces them. Combined with the schema's parameter docs and the safety annotations, an agent has enough to call it correctly. It falls short of 5 only because the boundary of accepted input expressions and the significance of the verdict values are never stated.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters in detail. The description adds some semantic color by naming the valuation quantities in the summary (raw balance, Chainlink price, uiMultiplier) and restating the compute enum behavior, but it does not explain the interaction of policy_parameters keys — for example whether computed_usd_value_under_test is reconciled against the expression or supplied as the value under test. Baseline 3 for high schema coverage is right.

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 Summary states a specific verb+resource: it lints Robinhood Chain stock-token USD valuation expressions for the double-count bug where the Chainlink price feed already includes corporate actions and uiMultiplier reapplies them. That is genuinely distinguishable from siblings like compute_stock_token_collateral_haircut or reconcile_erc8056_multiplier. The problem is placement: the actual purpose arrives only after several sentences of platform boilerplate, so clarity is earned late rather than on line 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?

Usage is implied by the bug description — an agent can infer it applies when checking a valuation expression that multiplies balance by price and then by a ui multiplier. But there is no explicit 'use this when / not when', no mention of the adjacent sibling tools, and no statement of prerequisites or input requirements. Minimum viable context, no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_trace_cat_reportsTRACE / CAT Reporting LintB
Read-onlyIdempotent
Inspect

TRACE / CAT Reporting Lint: OpenChainGraph compute node (compliance_mandate). 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-396-compute-15c3-3-reserve. Open at: https://ainumbers.co/chaingraph/art-397-lint-trace-cat-reports.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: TRACE (FINRA Rule 6730) trade-report timeliness lint against a caller-declared trading calendar and hours window, computing the reporting deadline from the execution timestamp with weekend/holiday-aware rollover, plus a CAT (Consolidated Audit Trail) equity/option order-event structural format-li... Outputs: cat_events_checked, cat_events_valid, cat_violations, note, regulatory_basis, rules_version, trace_result. Output schema: call describe_tool("lint_trace_cat_reports").

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: calendar, cat_events, execution_timestamp, report_timestamp, trading_hours. Unknown keys are refused.

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real value beyond that: compute modes (server kernel vs. forced browser delegation returning a URL), gpu:true always delegating, transient non-retained processing, and an AP2 artifact exported with execution_hash for chain provenance plus consumed upstream artifact art-396.

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?

Badly structured: duplicated boilerplate ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.'), a verification URL, a 64-hex FV-status receipt path, and a mid-word truncation of the one sentence that actually describes the computation. The useful content is neither front-loaded nor intact.

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?

For a nested-policy compute tool with annotations covering safety, the definition supplies the execution model, provenance/chaining behavior, upstream dependency, and an enumerated output field list, which is close to sufficient. The truncated summary and the deferred 'call describe_tool(...)' for the output schema leave the exact lint rules and violation semantics incomplete, so it falls short of fully complete.

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 compute, parent_hashes, parent_tool_ids and policy_parameters including its required keys. The description only restates compute mode behavior (already in the schema) and never explains the semantics of calendar, trading_hours, report_timestamp or execution_timestamp, so it adds little beyond baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title and the 'Summary:' sentence identify a specific verb+resource — a TRACE (FINRA Rule 6730) timeliness lint plus a CAT order-event structural format lint — which is genuinely distinguishable from siblings. However, that purpose statement is buried after ~800 characters of compute-node boilerplate and is truncated mid-word ('structural format-li...'), so the agent never gets the full scope statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use/when-not guidance and no named alternative among the many sibling lint_* tools. The only directive is the input constraint 'Use synthetic or anonymised inputs only,' which is a data-handling rule, not tool-selection guidance; the caller must infer applicability from the FINRA/CAT regulatory framing alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_ucp_checkout_payloadUCP Checkout Payload LintA
Read-onlyIdempotent
Inspect

UCP Checkout Payload Lint: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-12-acp-checkout-conformance-validator. Open at: https://ainumbers.co/chaingraph/art-564-ucp-checkout-payload-lint.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: Deterministic, verify-only structural lint of a caller-supplied Universal Commerce Protocol (UCP; Google + Shopify, announced NRF 2026-01-11, Apache-2.0 spec on GitHub) checkout resource against the schema pinned at tag v2026-04-08 of github.com/Universal-Commerce-Protocol/ucp. Outputs: error_count, finding_count, findings, note, rationale, ucp_spec_pinned_tag, ucp_spec_source, ucp_version_declared, verdict, warning_count. Output schema: call describe_tool("lint_ucp_checkout_payload").

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: payload. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world, so the bar is lower; the description still adds real behavior: inputs are processed transiently with no storage or logging, 'verify-only' means no mutation of the payload, and an AP2 artifact with execution_hash is exported for chain provenance. The compute:'auto'/'browser' delegation semantics are restated from the schema rather than added, keeping it from 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Roughly half the text is ChainGraph compute-binding boilerplate duplicated in the schema, an FV-status URL plus an 80-character hex hash, and a multi-field output enumeration followed by 'call describe_tool(...)' even though no output schema exists. The useful lint description is buried after that front matter and the closing summary, so the useful part is neither front-loaded nor compact.

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?

With no output schema, the description compensates by enumerating the returned fields (verdict, error_count, findings, ucp_spec_pinned_tag, etc.), and it pins the spec source and version, which an agent needs to interpret results. Only the absence of any sibling-selection rule keeps it below complete.

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 every property, including the compute enum and the required 'payload' key, is documented in the schema itself. The description adds only that the payload is 'caller-supplied' and that the lint runs against a pinned spec tag; it does not explain parent_hashes chaining or policy_parameters beyond what the schema says, so this is the baseline.

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 'Summary' sentence states a specific verb and resource: a deterministic, verify-only structural lint of a caller-supplied UCP checkout resource against a schema pinned at tag v2026-04-08. That distinguishes it from validation siblings like validate_acp_checkout and audit_acp_ucp_product_feed only indirectly, and the first three sentences are ChainGraph infrastructure boilerplate that delays the actual purpose.

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?

It says 'Use synthetic or anonymised inputs only' and that the output feeds art-12-acp-checkout-conformance-validator, which implies downstream usage. But there is no explicit when-to-use-this-vs-validate_acp_checkout guidance and no statement of when not to call it, so the agent must infer placement in the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_x12_claim_recordsX12 837/835 Healthcare-Claim Records LintB
Read-onlyIdempotent
Inspect

X12 837/835 Healthcare-Claim Records Lint: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-399-lint-x12-claim-records.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: Lints X12 837 (health-care claim) and 835 (claim payment/remittance advice) ENVELOPE control-number continuity (ISA13/IEA02, GS06/GE02, ST02/SE02) and 835 payment-amount balancing (total paid ties to the sum of claim-level payments, pure arithmetic). Outputs: claim_count, compliant, disambiguation, error_count, issues, message_type, phi_note, regulatory_basis, subset_coverage_statement, table_source, table_version, total_charge_amount, warning_count. Output schema: call describe_tool("lint_x12_claim_records").

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: claims, envelope, message_type, remittance. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely useful behavior: deterministic execution, server- vs browser-side compute with delegation URLs for gpu:true nodes, transient processing with no storage/logging/retention, and an exported AP2 artifact carrying execution_hash. That is real context beyond the annotations and does not contradict them; the dense infra/FV-status material dilutes rather than extends this.

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?

The definition is front-loaded with infrastructure boilerplate (compute node, Cloudflare Workers, kernel registration), a marketing URL, and a 64-character FV-status receipt hash before reaching the one sentence that explains the tool. Several phrases are pure repetition ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.'), and the actual lint scope arrives last.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the return fields (claim_count, compliant, issues, phi_note, regulatory_basis, etc.) and points to describe_tool for the full schema, which covers the output side. However, it leaves the opaque nested input structures (claims/envelope/remittance/message_type declared as empty objects) entirely unexplained, so an agent still cannot construct a valid call from this text alone.

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 top-level parameters (compute, parent_hashes, parent_tool_ids, policy_parameters) are already documented and the description only restates the compute modes and required policy keys. It adds nothing about the shape of the nested policy_parameters sub-objects (claims, envelope, remittance, message_type are declared as bare `{}`), which is where an agent actually needs help.

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 'Summary:' sentence names a specific verb and resource — lints X12 837 (health-care claim) and 835 (remittance advice) ENVELOPE control-number continuity (ISA13/IEA02, GS06/GE02, ST02/SE02) plus 835 payment-amount balancing — which is precise enough to separate it from sibling linters like lint_metro2_record or lint_mismo_uldd_ulad. It does not explicitly name a sibling it is not, and the real purpose is buried at the end after a wall of compute-node boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus alternatives, no prerequisite conditions, and no exclusion of adjacent tools (e.g. other X12/claim linting or EDI validation siblings). The only directive-like content is the input-safety constraint 'Use synthetic or anonymised inputs only', which is a restriction, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_x402_v2_migrationx402 v2 Wire-Format Migration LinterC
Read-onlyIdempotent
Inspect

x402 v2 Wire-Format Migration Linter: OpenChainGraph compute node (compliance_control). 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-26-x402-payload-decoder-flow-simulator. Output feeds: art-61-x402-batch-settlement-reconciler, art-394-x402-deferred-handshake-validator. Open at: https://ainumbers.co/chaingraph/art-393-x402-v2-migration-linter.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. Output schema: call describe_tool("lint_x402_v2_migration").

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". See the tool's manifest for field names.

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world; the description does add genuinely non-schema context: compute modes ('auto'/'browser'/gpu delegation), transient non-retention of inputs, and generation of an AP2 artifact carrying execution_hash. What it omits is behavior specific to a linter — which wire-format rules are evaluated, whether failures are returned as violations vs. an error, and how severity is expressed — so it falls short of what a compliance check tool needs.

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?

The bulk of the text is platform boilerplate (transient processing, retention policy, FV-status snapshot URL with a full hash) rather than tool-specific information. The one genuinely differentiating sentence — the artifact chaining — is buried after generic compute-node prose, and the opening sentence just repeats the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description partially compensates by saying an AP2 artifact with execution_hash is exported and by pointing to describe_tool() for the shape. However, for a nested-parameter compliance linter it never states what the verdict/result contains (pass/fail per rule, violation list), which is the key thing an agent needs before calling it.

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 all four parameters (compute, parent_hashes, parent_tool_ids, policy_parameters) are already documented in the schema. The description only restates compute-mode semantics and adds nothing about parent_hash/parent_tool_ids ordering or policy_parameters required fields (which the schema defers to 'the tool's manifest'). Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name and title establish a specific verb+resource (lint x402 v2 wire-format migration), but the body never explains what the lint actually checks or what a violation looks like. It also does nothing to distinguish this from siblings such as 'verify_migration_completeness', 'recompute_x402_eip712_digest', or 'validate_x402_deferred_handshake' — the only differentiator offered is the artifact ID and upstream/downstream linkage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use / when-not-to-use guidance and no stated prerequisites. The 'Consumes upstream artifacts from…' and 'Output feeds…' lines imply pipeline placement but never say to call this instead of the decoder or the validator, so the agent must infer routing from names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ainumbers_toolsList AINumbers toolsA
Read-onlyIdempotent
Inspect

Search the AINumbers catalog (1220+ client-side fintech tools). Returns deep-links; prefill-enabled tools accept #in=<base64url(JSON of {element_id: value})>[&run=1] for one-click invocation.

NameRequiredDescriptionDefault
limitNoMax rows to return. Default 20.
queryNoFree-text search over tool name and description. Omit to list without filtering.
cursorNoPage token: echo the nextCursor from the previous reply to fetch the next page (keyset on tool name — stable across catalog regens).
categoryNoRestrict results to one catalog category (e.g. "mortgage", "kyc"). Omit for all categories.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a read-only, idempotent, closed-world, non-destructive operation. Beyond that, the description adds useful behavior: it returns deep-links and explains that prefill-enabled tools accept a specific '#in=<base64url(JSON...)>[&run=1]' fragment for one-click invocation. It does not cover pagination or auth, but the annotations lower the burden and the prefill detail is substantive.

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?

The description is compact and front-loads the core action before adding return and prefill details. Every clause earns its place: catalog scope, deep-link return behavior, and invocation fragment syntax.

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?

For a four-optional-parameter read-only catalog search with no output schema, the description provides enough context to understand the return shape ('deep-links') and the special prefill invocation pattern. Pagination and category details are handled by the fully described schema, so the remaining omissions are minor.

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 limit, query, cursor, and category are already documented in the schema. The description does not add meaning to those parameters; the prefill fragment syntax is more about returned links than input parameter semantics. Baseline 3 is appropriate when the schema does the parameter work.

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 description states a specific verb and resource: 'Search the AINumbers catalog' of 'client-side fintech tools' with a concrete scale ('1220+'). It is clear what the tool does, but it does not distinguish itself from nearby discovery siblings such as find_tool or describe_tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no exclusions, and no named alternatives in a sibling set that contains find_tool, describe_tool, call_tool, and suggest_tool_idea. The purpose implies search behavior, but the description does not help an agent decide why to choose this catalog search over those alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_mletr_jurisdiction_adoptionMLETR Jurisdiction-Adoption LookupB
Read-onlyIdempotent
Inspect

MLETR Jurisdiction-Adoption Lookup: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-354-mletr-jurisdiction-adoption-lookup.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: Static citation-table lookup of UNCITRAL MLETR (Model Law on Electronic Transferable Records) adoption status per jurisdiction -- statute, scope, and effective date, data_version stamped -- and a corridor verdict for whether an electronic bill of lading (eBL) is legally effective end-to-end betwe... Outputs: corridor, data_version, disambiguation, ebl_legally_effective, table_source, verdict. Output schema: call describe_tool("lookup_mletr_jurisdiction_adoption").

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: destination_jurisdiction, origin_jurisdiction. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior, but the description adds meaningful context: transient input processing, no storage or logging, synthetic-input guidance, server-vs-browser compute delegation, and AP2 execution_hash provenance. Some of this is boilerplate, but it goes well beyond the annotations without contradicting them.

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?

The description is poorly front-loaded: it begins with a redundant title and long compute/privacy/provenance boilerplate before reaching the actual lookup purpose. It also includes a URL, an FV-status path, and a truncated summary sentence, making it longer and noisier than needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 100% schema coverage and read-only annotations, the description covers the tool's purpose, privacy posture, compute behavior, and output fields such as corridor and ebl_legally_effective. However, it lacks clear when-to-use guidance and does not cleanly distinguish this static lookup from related tools like validate_mletr_record.

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 input schema already explains compute, parent_hashes, parent_tool_ids, and the nested policy_parameters fields. The description adds only indirect context via 'corridor' and 'per jurisdiction' and does not clarify the origin/destination jurisdiction semantics beyond the schema.

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 description eventually states a specific verb and resource: a static citation-table lookup of UNCITRAL MLETR adoption status per jurisdiction, including statute, scope, effective date, and an eBL corridor verdict. That is distinguishable from siblings like validate_mletr_record, but the purpose is buried after heavy infrastructure boilerplate and the summary is truncated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this lookup versus alternatives such as validate_mletr_record, check_digital_trade_rules, or run_digital_trade_fit. The compute-mode explanation is operational detail, not use-case routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_reg_z_thresholdsReg Z Threshold LookupC
Read-onlyIdempotent
Inspect

Reg Z Threshold Lookup: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-220-reg-z-threshold-lookup.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: Reg Z version-pinned threshold lookup service. Outputs: available_years, data, note, regulatory_basis, table, year. Output schema: call describe_tool("lookup_reg_z_thresholds").

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: table. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description still adds real information beyond that: transient processing with no storage or logging, the AP2 artifact with execution_hash for chain provenance, and the gpu:true browser-delegation behavior. The FV-status receipt and URL are noise, but the data-handling and provenance disclosure is genuinely useful.

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?

The description is bloated and poorly front-loaded: it opens by restating the title, repeats "OpenChainGraph compute node" twice, and embeds a long FV-status hash path and URL before the one-sentence summary that actually defines the tool. Several sentences do not earn their place for an invoking agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It does list return fields (available_years, data, note, regulatory_basis, table, year) in lieu of an output schema and covers privacy and provenance, which is helpful. However, with a nested policy_parameters object whose "table" property is untyped in the schema and only called out as "Required: table", the description leaves a real calling gap: an agent still does not know valid table values or threshold semantics.

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%, so the baseline is 3. The description's explanation of compute:"auto"/"server"/"browser" restates what the schema already documents rather than adding meaning, and it never explains what the required "table" argument accepts or how "version-pinned" maps to the year/table inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The core statement "Reg Z version-pinned threshold lookup service" names a verb and resource, so the agent can tell it retrieves regulatory thresholds rather than computes an APR. But it never says which thresholds or tables, and it does not distinguish itself from nearby siblings such as test_hoepa_high_cost, check_qm_points_and_fees, or compute_reg_z_appendix_j_apr. The actual purpose statement is also buried after boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no named alternative. The only directives are the compute-mode mechanics (duplicated from the schema) and "Use synthetic or anonymised inputs only", which is an input constraint rather than selection guidance. An agent has no way to know when this beats the other Reg Z siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_agent_payment_mandateAgent Payment Mandate Cross-Protocol MapperB
Read-onlyIdempotent
Inspect

Agent Payment Mandate Cross-Protocol Mapper: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-476-map-agent-payment-mandate.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: Translates an agentic-payment mandate declared under one protocol (AP2, x402, or ACP) into the field vocabulary of another, pivoting through one internal canonical schema so each protocol needs only one mapping in and one mapping out. Outputs: canonical_pivot, mapping_ok, mapping_receipt, mapping_table_version, missing_required_target_fields, protocol_versions, source_protocol, target_protocol, translated_mandate. Output schema: call describe_tool("map_agent_payment_mandate").

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: source_mandate, source_protocol, target_protocol. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/destructive:false), the description discloses substantive traits: server-vs-browser compute delegation, transient non-retained processing, deterministic kernels, and that it exports an AP2 artifact with execution_hash for chain provenance. It also implicitly signals failure surfaces via 'missing_required_target_fields'. This is real value above 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is padded with infrastructure boilerplate (Cloudflare Workers, gpu:false kernels, compute-mode repetition, FV-status link) that duplicates schema content, and the actual purpose is buried at the very end under 'Summary:'. Structure is not front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by enumerating the return fields (canonical_pivot, mapping_ok, mapping_receipt, missing_required_target_fields, translated_mandate, etc.), which is helpful. However, for a nested-object mapping tool it stays silent on error/refusal behavior and version-pinning implications of mapping_table_version.

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%, so every parameter is already documented in the schema. The description only restates the compute default and does not clarify the semantics of policy_parameters fields (source_mandate/source_protocol/target_protocol) or how parent_hashes/parent_tool_ids must align. Baseline 3 for high coverage.

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 'Summary:' section states a specific verb and resource: it translates an agentic-payment mandate from one protocol (AP2, x402, ACP) into another's field vocabulary via a canonical pivot. That is clear and concrete, but it appears only after a wall of platform boilerplate and never distinguishes the tool from near-neighbours like compare_agentic_payment_protocols or crosswalk_agent_payment_rail_trust.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose this mapper over the many sibling crosswalk/compare/validate tools, and no when-not-to-use conditions. The only usage constraint is 'Use synthetic or anonymised inputs only,' which is a data-handling warning rather than selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_ai_act_procurement_clausesAI Act Procurement Clause MapperA
Read-onlyIdempotent
Inspect

AI Act Procurement Clause Mapper: OpenChainGraph compute node (compliance_mandate). 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-64-ai-act-highrisk-fit-diagnostic. Output feeds: art-411-ai-addendum-assembler. Open at: https://ainumbers.co/chaingraph/art-412-ai-act-procurement-clause-mapper.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: Maps an EU AI Act risk tier (derived from an upstream classifier such as the AI Act high-risk fit diagnostic) to the European Commission's Model Contractual AI Clauses (MCC-AI) template selection: High-Risk or Light, plus the applicable Chapter III clause set (transparency, risk management, data... Outputs: applicable_chapter_iii_clauses, checks, disclaimer, license_mode, not_legal_advice, official_source_url, risk_tier, template, variable_map. Output schema: call describe_tool("map_ai_act_procurement_clauses").

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: deployment_context, risk_tier. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description still adds real behavioral context: deterministic compute, server-vs-browser delegation via the compute parameter, transient non-logged input handling, synthetic/anonymised input guidance, and an exported AP2 artifact carrying execution_hash for provenance. Much of this reads as shared node boilerplate rather than tool-specific behavior, which keeps it below 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is badly front-loaded: the identity sentence is followed by compute-binding mechanics, data-retention language, artifact chaining, a documentation URL, and a lengthy FV-status hash receipt with a meta-explanation that it is 'a snapshot, not a subscription.' The substantive mapping description is buried near the end, and the output list is truncated mid-word.

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?

For a computed node with a nested policy_parameters object and no real output schema (it defers to describe_tool), the description does supply the enumerated output fields, the two template options, and the chain position, which is enough to call it confidently. Remaining gaps are minor: no explanation of what checks or variable_map contain.

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%, so every parameter is already documented in the schema, including the exact policy_parameters requirements and the compute enum semantics. The description adds only one genuinely new semantic detail — that risk_tier is normally derived from an upstream classifier rather than chosen freely — which is why it sits at the baseline rather than above it.

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?

Once past the boilerplate, the description gives a specific verb+resource: maps an EU AI Act risk tier to the European Commission's MCC-AI template selection (High-Risk or Light) plus the applicable Chapter III clause set. That is precise enough to distinguish it from generic siblings like assess_ai_act_conformity. Points are withheld because the actual purpose sentence appears eighth, after several paragraphs of node-runtime boilerplate.

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 chain position: it names its upstream (art-64-ai-act-highrisk-fit-diagnostic) and downstream (art-411-ai-addendum-assembler) artifacts, which lets an agent infer it belongs mid-pipeline. There is no explicit when-to-use/when-not-to-use statement, nor any comparison with sibling tools that also produce AI Act clause or addendum output.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_bhc_schedule_hcFR Y-9C Schedule HC (Consolidated Balance Sheet) MapperC
Read-onlyIdempotent
Inspect

FR Y-9C Schedule HC (Consolidated Balance Sheet) Mapper: OpenChainGraph compute node (regulatory_reporting). 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. Output feeds: art-436-bhc-schedule-hcr-capital. Open at: https://ainumbers.co/chaingraph/art-435-bhc-schedule-hc-balance-sheet.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: Maps caller-declared FR Y-9C (Financial Statements for Holding Companies) Schedule HC line items -- cash, securities, loans and leases, other assets; deposits, borrowings, other liabilities; common stock, surplus, retained earnings, AOCI -- into Schedule HC totals (Total assets BHCK2170, Total li... Outputs: assets, boundary_note, entity_id, equity, identity_balanced, identity_delta_usd, liabilities, report_form, reporting_period, rounding_tolerance_usd, schedule, taxonomy_note, total_assets_mdrm, total_assets_usd, total_equity_capital_mdrm, total_equity_capital_usd, total_liabilities_and_equity_usd, total_liabilities_mdrm, total_liabilities_usd. Output schema: call describe_tool("map_bhc_schedule_hc").

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: entity_id, reporting_period. Unknown keys are refused.

TDQS

C2.7/5.0
Behavior3/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 the safety profile is covered. The description adds genuinely useful context beyond that: transient, non-logged, non-retained processing; deterministic execution; and an AP2 artifact carrying execution_hash for provenance. It loses points because the compute-mode text largely restates the `compute` parameter's own schema description, and nothing is said about failure behavior (e.g., unbalanced identity or rejected unknown keys).

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?

The description is badly mis-front-loaded: three sentences of generic compute-node plumbing precede any statement of what the tool maps. It also embeds a documentation URL and a 64-character FV-status hash path, then truncates the substantive summary mid-sentence ('Total li...') while appending an 18-field output enumeration. Much of the volume is reusable boilerplate that does not help an agent invoke this particular mapper.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description is responsible for return semantics, and it only lists output field names (identity_balanced, boundary_note, taxonomy_note, identity_delta_usd) without explaining what they mean or what an unbalanced identity implies. It does cover chaining and privacy adequately, and the 100%-covered input schema handles parameters, but the decision function's expected inputs and the balance-check semantics remain unexplained.

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 baseline is 3. The description's only parameter-related content is the compute/server/browser explanation, which duplicates the schema's `compute` field description almost verbatim and adds no new semantics. It says nothing about policy_parameters contents (entity_id, reporting_period, rounding_tolerance_usd) or how parent_hashes/parent_tool_ids must stay order-aligned beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The tool's actual function appears in one specific sentence ("Maps caller-declared FR Y-9C Schedule HC line items -- cash, securities, loans and leases ... into Schedule HC totals"), which gives a clear verb and resource. However, that sentence is buried behind platform boilerplate and is truncated mid-word ("Total li..."), so the mapping's output side is incomplete. It never names or contrasts with the adjacent sibling map_bhc_schedule_hcr beyond an oblique "Output feeds: art-436-bhc-schedule-hcr-capital".

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this mapper versus alternatives such as map_bhc_schedule_hcr or map_call_report_schedule_rc/rcr, and no prerequisites for the caller-declared line items. The only conditional guidance concerns compute mode (auto/server/browser) and chaining via parent_hashes, which is operational rather than selection guidance. The 'use synthetic or anonymised inputs only' line is a constraint, not usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_bhc_schedule_hcrFR Y-9C Schedule HC-R (Regulatory Capital) CalculatorA
Read-onlyIdempotent
Inspect

FR Y-9C Schedule HC-R (Regulatory Capital) Calculator: OpenChainGraph compute node (regulatory_reporting). 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-435-bhc-schedule-hc-balance-sheet. Open at: https://ainumbers.co/chaingraph/art-436-bhc-schedule-hcr-capital.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: Given caller-supplied CET1/Tier1/Tier2 capital components and risk-weighted assets, computes FR Y-9C Schedule HC-R standard capital ratios plus the supplementary leverage ratio (SLR), including the enhanced-SLR (eSLR) buffer effective 2026-04-01 (§0.2), for top-tier bank holding companies (Y-9C p... Outputs: additional_tier1_capital_usd, boundary_note, cet1_capital_usd, constants_version, entity_id, eslr, is_gsib, ratios, report_form, reporting_period, schedule, taxonomy_note, tier1_capital_usd, tier2_capital_usd, total_capital_usd, total_leverage_exposure_usd, total_rwa_usd. Output schema: call describe_tool("map_bhc_schedule_hcr").

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: constants_version, entity_id, is_gsib, reporting_period, tier1_capital_usd. Unknown keys are refused.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/closed-world annotations, it discloses execution placement (Cloudflare Workers kernels), browser-delegation fallback behavior, transient input processing with no storage or logging, deterministic execution, refusal of unknown keys, and the AP2 artifact/execution_hash provenance output. These are substantive traits an agent could not infer 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical purpose statement is buried after boilerplate ('OpenChainGraph compute node (regulatory_reporting). Deterministic OpenChainGraph compute node.') and a long FV-status hash URL, and the summary is truncated mid-sentence ('Y-9C p...'). The 18-field output dump and receipt-verification aside add length without adding decision-relevant information.

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?

With no output schema, the description usefully enumerates return fields (ratios, eslr, total_rwa_usd, boundary_note, taxonomy_note, etc.) and covers inputs, compute modes, provenance, and the effective date. The truncated scope sentence and lack of any note on which policy_parameters are mandatory (outside the schema text) leave a small gap.

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; the description goes further by naming the economic content of policy_parameters (capital components, RWA, leverage exposure) and by tying parent_hashes/parent_tool_ids to the upstream art-435 artifact. It still doesn't explain the required-key set or ordering semantics outside the schema description.

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?

The Summary names a specific verb and resource: given caller-supplied CET1/Tier1/Tier2 capital components and RWA, it computes FR Y-9C Schedule HC-R capital ratios plus the SLR/eSLR buffer effective 2026-04-01. It also distinguishes itself from the balance-sheet sibling by naming the upstream artifact 'art-435-bhc-schedule-hc-balance-sheet' it consumes.

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?

It gives concrete operating guidance: compute:"auto" vs "server" vs "browser", gpu:true always delegating, and a data-handling constraint ('Use synthetic or anonymised inputs only'). What is missing is an explicit routing statement such as when to pick this over map_bhc_schedule_hc or compute_rwa_erba_2026 for adjacent capital work.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_call_report_schedule_rcCall Report Schedule RC (Balance Sheet) MapperA
Read-onlyIdempotent
Inspect

Call Report Schedule RC (Balance Sheet) Mapper: OpenChainGraph compute node (regulatory_reporting). 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. Output feeds: art-434-call-report-edit-check-gate. Open at: https://ainumbers.co/chaingraph/art-432-call-report-rc-balance-sheet.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: Maps caller-declared FFIEC Call Report (FFIEC 031) Schedule RC line items -- cash, securities, loans and leases, other assets; deposits, borrowings, other liabilities; common stock, surplus, retained earnings, AOCI -- into Schedule RC totals (Total assets RCON2170, Total liabilities RCON2948, Tot... Outputs: assets, boundary_note, entity_id, equity, identity_balanced, identity_delta_usd, liabilities, report_form, reporting_period, rounding_tolerance_usd, schedule, total_assets_mdrm, total_assets_usd, total_equity_capital_mdrm, total_equity_capital_usd, total_liabilities_and_equity_usd, total_liabilities_mdrm, total_liabilities_usd, xbrl_json_annex1_note. Output schema: call describe_tool("map_call_report_schedule_rc").

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: entity_id, reporting_period. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, closed-world), the description discloses data handling (inputs processed transiently, not stored or logged), deterministic execution, compute routing rules for auto/server/browser and gpu:true nodes, AP2 artifact export with execution_hash, and an offline-verifiable FV-status receipt. That is substantial behavioural context not derivable from 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It opens with a redundant restatement ('...Mapper: OpenChainGraph compute node (regulatory_reporting). Deterministic OpenChainGraph compute node.'), buries the actual mapping semantics mid-paragraph, and truncates the useful summary ('Total...'). The long output field list is helpful but the boilerplate around it dilutes the signal.

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?

With no output schema, the enumerated output fields, the downstream consumer (art-434-call-report-edit-check-gate), the compute modes and the privacy posture give an agent most of what it needs. The missing pieces are the truncated mapping summary and any explanation of the policy_parameters keys beyond their required names.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters in detail. The description's compute-mode paragraph merely restates the schema's compute description, and it adds nothing about the required entity_id / reporting_period keys or the parent-hash chaining pairs.

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 description names a specific resource (FFIEC Call Report Schedule RC balance sheet) and enumerates the line items mapped and the resulting totals (RCON2170, RCON2948, equity). It is truncated mid-sentence ('Tot...') and never explicitly distinguishes itself from the sibling map_call_report_schedule_rcr, which an agent must infer from the 'Balance Sheet' parenthetical.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when this tool should be chosen over map_call_report_schedule_rcr, run_call_report_edit_checks, or run_regrpt_edit_checks. The only constraint offered is 'Use synthetic or anonymised inputs only', which is an input restriction rather than selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_call_report_schedule_rcrCall Report Schedule RC-R (Regulatory Capital) MapperB
Read-onlyIdempotent
Inspect

Call Report Schedule RC-R (Regulatory Capital) Mapper: OpenChainGraph compute node (regulatory_reporting). 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. Output feeds: art-434-call-report-edit-check-gate. Open at: https://ainumbers.co/chaingraph/art-433-call-report-rcr-capital.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: Maps caller-declared FFIEC Call Report (FFIEC 031) Schedule RC-R regulatory-capital components -- CET1, additional Tier 1, Tier 2 capital, total risk-weighted assets, total leverage exposure -- into the standard capital ratios (CET1, Tier 1, Total capital, supplementary leverage ratio) and the 20... Outputs: additional_tier1_capital_usd, boundary_note, cet1_capital_usd, constants_version, entity_id, eslr, is_gsib, mdrm_note, ratios, report_form, reporting_period, schedule, tier1_capital_usd, tier2_capital_usd, total_capital_usd, total_leverage_exposure_usd, total_rwa_usd. Output schema: call describe_tool("map_call_report_schedule_rcr").

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: constants_version, entity_id, is_gsib, reporting_period, tier1_capital_usd. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/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 adds genuinely useful non-obvious traits: deterministic execution, transient processing with no storage or logging, the synthetic-input requirement, AP2 artifact export carrying an execution_hash for chain provenance, and the FV-status receipt semantics. The compute-mode paragraph largely repeats the schema's `compute` description, which dilutes the value somewhat.

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 fraction of the text is platform boilerplate (compute binding, FV-status URL disclaimer, 'Output schema: call describe_tool(...)', a bare output-field list) that precedes and buries the actual purpose statement. Worst of all, the one sentence that explains what the tool does is truncated ('and the 20...'), so the highest-value content is cut while low-value boilerplate is preserved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deterministic compute node with no output schema, the description does list all 18 output field names and discloses data-handling and provenance behaviour, so an agent knows roughly what comes back. But it gives no semantics for the ratio values or boundary/constants fields, and the truncated summary leaves the mapping logic incompletely stated.

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%, so the schema carries the parameter burden and a 3 is the baseline. The description does add meaning by naming the actual regulatory-capital components that populate policy_parameters (CET1, AT1, Tier 2, RWA, leverage exposure) — useful since the nested sub-properties have no per-field descriptions — but it omits the threshold/buffer parameters (cet1_min_pct, slr_min_pct, eslr_buffer_pct) and says nothing about parent_hashes/parent_tool_ids chaining.

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 summary states a specific verb and resource: maps caller-declared FFIEC 031 Schedule RC-R capital components (CET1, AT1, Tier 2, RWA, leverage exposure) into CET1/Tier1/Total/SLR ratios. That is concrete enough to distinguish it from generic compute tools. However the sentence is truncated mid-thought ('and the 20...') and the description never distinguishes this from the near-identically named sibling map_call_report_schedule_rc.

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?

It states the output feeds 'art-434-call-report-edit-check-gate' and instructs the caller to use synthetic or anonymised inputs only, which implies a pre-edit-check pipeline position. But there is no explicit when-to-use vs. when-not, no mention of the RC vs. RC-R alternative, and no prerequisites or ordering guidance beyond the downstream consumer hint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_irrbb_standardised_approachIRRBB Standardised Approach MapperC
Read-onlyIdempotent
Inspect

IRRBB Standardised Approach Mapper: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-187-irrbb-csrbb-scope-checker. Open at: https://ainumbers.co/chaingraph/art-186-irrbb-standardised-approach-mapper.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: Map non-maturing deposit (NMD) positions to the EBA standardised / simplified-standardised approach behavioural caps (BCBS d368 para 87 / Annex 2): retail transactional core proportion capped at 90% / average maturity capped at 5 years; retail non-transactional (savings) core capped at 70% / 4.5... Outputs: behavioural_mortgage_prepay_pct, behavioural_option_addon_required, core_capped, core_deposit_pct_applied, core_deposit_pct_input, deposit_category, maturity_cap_years. Output schema: call describe_tool("map_irrbb_standardised_approach").

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". Unknown keys are refused.

TDQS

C2.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/closed-world, and the description adds real substance beyond them: deterministic execution, server-side vs browser delegation semantics, transient processing with no storage or logging, a synthetic-or-anonymised input restriction, and an exported AP2 artifact carrying execution_hash. Disclosure of the data-handling and provenance behavior is exactly what a compliance compute node needs, though the truncation leaves parts of the behavioral spec cut off.

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?

The definition is badly front-loaded: it opens with generic OpenChainGraph boilerplate and repeats compute-mode behavior that the `compute` schema property already explains verbatim. The URL and a 64-character FV-status file hash consume significant space, and the single most important sentence — the methodology summary — is cut off mid-word list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does list the return fields (core_capped, maturity_cap_years, deposit_category, etc.) and gives downstream chain context, which is helpful. However, for a domain-specific mapper whose only real input is an untyped positions object, the description neither documents that payload nor completes the regulatory-cap specification, leaving the agent able to invoke it but not to construct a valid call confidently.

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 baseline is 3, and the description adds little for the three plumbing parameters (compute, parent_hashes, parent_tool_ids) already documented in the schema. Critically, the actual domain payload lives in policy_parameters.positions, which is an empty object with no schema, and the description's truncated summary never states the required input fields for that payload. Output field names are listed, but input semantics for the real work remain undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb+resource does appear ("Map non-maturing deposit (NMD) positions to the EBA standardised / simplified-standardised approach behavioural caps"), but it is buried in the back half after generic compute-node boilerplate, and the sentence is truncated mid-spec ("retail non-transactional (savings) core capped at 70% / 4.5..."). Nothing distinguishes it from close siblings such as map_nmd_behavioral_repricing, calculate_irrbb_eve_shocks, or run_irrbb_disclosure_fit, which an agent could easily confuse with this tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this mapper versus the IRRBB siblings, no prerequisites, and no exclusions. The only guidance-like content is the pipeline hint "Output feeds: art-187-irrbb-csrbb-scope-checker" and the compute-mode mechanics, which tell the agent what happens downstream but not when to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_iso20022_to_evm_calldataISO 20022-to-EVM Calldata MapperB
Read-onlyIdempotent
Inspect

ISO 20022-to-EVM Calldata Mapper: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-291-screen-onledger-transfer-batch. Open at: https://ainumbers.co/chaingraph/art-288-map-iso20022-to-evm-calldata.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: Deterministic bind of an ISO 20022 pacs.008 (customer credit transfer) or pacs.009 (FI credit transfer) payment message to EVM contract-call arguments, plus an OCG receipt of the mapping: resolved call, field bindings, unmapped required fields, and ABI type coercions. Outputs: abi_type_coercions, draft_pinned, field_bindings, iso_message_type, mapping_ok, mapping_profile, mapping_profile_version, resolved_call, unmapped_required_fields, warnings. Output schema: call describe_tool("map_iso20022_to_evm_calldata").

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: contract_abi_fragment, iso_fields, iso_message_type, mapping_profile. Unknown keys are refused.

TDQS

B3.2/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 behavior. The description adds meaningful context beyond that: server-side vs browser compute routing, gpu:true always delegating, transient processing with no storage/logging, synthetic-input-only policy, and AP2 artifact export with execution_hash.

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?

The core purpose is buried after redundant phrasing ('OpenChainGraph compute node' repeated) and before link/FV-status metadata. Several sentences do not assist tool selection, and the useful summary would be stronger if front-loaded; the definition is unnecessarily long for the information it conveys.

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?

For a 4-parameter compute tool with no output schema, the description supplies key context: compute routing, privacy constraints, artifact provenance, and a list of output fields. It could say more about return value shape, but annotations and the schema already cover safety and inputs.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description repeats compute-mode semantics and required policy keys but adds no format examples or coercion rules for the nested policy_parameters fields, making the baseline 3 appropriate.

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 description states a specific verb-resource pair: deterministic bind of an ISO 20022 pacs.008/pacs.009 message to EVM contract-call arguments, plus a receipt of the mapping. It does not explicitly contrast with sibling tools, so the agent must infer scope from the wording rather than from a direct sibling comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance or named alternative. The only routing note is 'Output feeds: art-291-screen-onledger-transfer-batch', while the compute-mode discussion explains parameter behavior rather than when to choose this tool over siblings like validate_pacs008_party_completeness or screen_onledger_transfer_batch.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_mt9xx_to_camtSwift MT9xx to camt Statement Migration MapperA
Read-onlyIdempotent
Inspect

Swift MT9xx to camt Statement Migration Mapper: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-563-mt9xx-camt-statement-migration-mapper.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: Maps a pasted Swift MT900/910/940/942/950 statement or notification message to a camt.052/053/054-shaped JSON mapping object, plus a fidelity report (truncation findings, unmappable tags, and a 60F + sum(61) = 62F balance-consistency check for statement types). Outputs: account_id, camt_message_root, coexistence_note, default_target, disambiguation, fidelity_report, mapping, message_id, mt_type, mt_type_conflict, no_swift_endorsement, notification, pii_note, rejected_inputs, statement, target, target_overridden, verdict. Output schema: call describe_tool("map_mt9xx_to_camt").

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: declared_mt_type, message_text, target. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), yet the description adds real behavioral context: transient processing with no storage/logging, a compute-binding mode with browser delegation, and an AP2 artifact with execution_hash for provenance. That is meaningful information beyond annotations; only the output-shape detail is left thin.

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?

The essential content is one sentence at the end; ahead of it sit URL, FV-status hash, AP2/chain-provenance and compute-binding boilerplate that a calling agent does not need to select or invoke the tool. Not front-loaded, and much of the text is repeated from schema fields.

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?

For a no-output-schema tool, the description enumerates all output keys (mapping, fidelity_report, verdict, mt_type_conflict, etc.) and specifies the 60F + sum(61) = 62F balance-consistency check, so an agent knows what it gets back. Remaining gaps are the exact input shapes for message_text/target, which the schema covers.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description adds only the required-key list (declared_mt_type, message_text, target) and the unknown-key refusal, both of which largely restate schema text, so baseline 3 is appropriate.

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 Summary sentence gives a specific verb and resource: mapping pasted MT900/910/940/942/950 statements to camt.052/053/054-shaped JSON plus a fidelity report, which distinguishes it from siblings like camt053_parse or score_mt_mx_translation_fidelity. However, the actual purpose is buried behind two sentences of compute-node boilerplate and the title restatement, so it's not front-loaded.

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?

It gives implied usage context (pasted MT9xx messages, synthetic/anonymised inputs only, choosing between compute auto/server/browser), which helps. But it never says when to pick this over siblings such as camt053_parse or validate_mt700_lc_fields, nor any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_nist_ai_rmf_functionsNIST AI RMF Function MapperA
Read-onlyIdempotent
Inspect

NIST AI RMF Function Mapper: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-175-gpai-code-of-practice-conformance, art-314-traiga-safe-harbor-pack-builder. Open at: https://ainumbers.co/chaingraph/art-174-nist-ai-rmf-function-mapper.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: Map supplied AI controls and evidence to NIST AI RMF Govern (5 controls), Map (4), Measure (4), and Manage (4) functions: 17 controls total. Outputs: all_gaps, controls_present, coverage_band, function_coverage, overall_coverage, total_controls. Output schema: call describe_tool("map_nist_ai_rmf_functions").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description explains compute modes, server-side versus browser delegation behavior, transient input processing, the synthetic/anonymised input requirement, AP2 artifact export with execution_hash, and downstream artifact feeds. It does not contradict the read-only annotations and adds meaningful operational context.

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?

The description is heavily bloated with OpenChainGraph boilerplate, FV-status receipt details, URLs, and provenance language before reaching the actual mapping purpose. The useful summary and output list are present but not front-loaded, and several sentences do not help an agent select or invoke the tool.

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?

For a complex mapping tool with no output schema, the description gives the core purpose, output fields, compute/provenance behavior, and privacy constraints. It still lacks explicit routing guidance against sibling tools, but an agent has enough information to invoke it 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 description coverage is 100%, so the schema already explains compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds some context via compute-mode behavior and synthetic-input guidance, but it mostly repeats or loosely references what the schema already documents.

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 summary states a specific verb and resource: map supplied AI controls and evidence to NIST AI RMF Govern, Map, Measure, and Manage functions, with 17 controls total. It is clearly distinguishable from generic governance-fit siblings, though the purpose is buried after OpenChainGraph compute-node boilerplate.

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 description implies when to use the tool by naming the NIST AI RMF mapping task and listing outputs, but it never explicitly states when to choose it over related AI governance or conformance siblings. No alternatives or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_nmd_behavioral_repricingNMD Behavioral Repricing MapperA
Read-onlyIdempotent
Inspect

NMD Behavioral Repricing Mapper: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-442-nmd-behavioral-repricing-mapper.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: OCC 2010-1 Interagency Advisory on IRR: maps non-maturity deposit (NMD) segment balances into a bucketed net-repricing-gap schedule using a caller-declared behavioral allocation (per-bucket repricing fractions) and a deposit beta -- never a baked-in regulatory decay curve. Outputs: buckets_used, convention, net_repricing_gap, segment_results, total_balance, total_net_repricing_gap, total_rate_sensitive_balance, weighted_avg_beta. Output schema: call describe_tool("map_nmd_behavioral_repricing").

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: nmd_segments. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnly/idempotent/non-destructive/openWorld=false, the description adds substantial beyond-schema context: inputs are processed transiently and not stored or logged, determinism is guaranteed, and the call exports an AP2 artifact carrying execution_hash for chain provenance. It also flags that the FV-status receipt is a snapshot, not a subscription. Missing only failure behaviour and limits, so a 4 rather than 5.

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?

Badly front-loaded: the first hundred-plus words are generic compute-binding boilerplate that duplicates the `compute` parameter description, and the actual purpose only appears in the Summary. A 64-character FV-status hash and a URL consume attention disproportionate to their decision value. Much of the content is legitimate, but the ordering wastes the most-read position.

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?

For a 4-parameter analytics node with no output schema, the description is largely self-sufficient: it enumerates all eight return fields, states the input constraint and artifact/provenance behaviour, and points to describe_tool for the full output contract. The remaining gap is the internal structure of nmd_segments, which an agent must guess or fetch separately.

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%, but the nested policy_parameters.nmd_segments is an untyped array, so the schema alone tells an agent nothing about its contents. The description compensates by explaining that segments carry per-bucket repricing fractions and a deposit beta, plus how parent_hashes/parent_tool_ids drive the export chain. It still does not describe the shape of individual segment objects.

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 Summary sentence gives a specific verb+resource and methodology: mapping NMD segment balances into a bucketed net-repricing-gap schedule via caller-declared behavioral allocation and a deposit beta, explicitly 'never a baked-in regulatory decay curve'. That is far more precise than the name alone. However, the actual purpose is buried after roughly 150 words of compute-node boilerplate, and it never contrasts itself with near-neighbours such as map_irrbb_standardised_approach or run_rate_shock_ladder.

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 by the domain (IRR/Basel-style NMD repricing) and by the constraint 'Use synthetic or anonymised inputs only'. Compute-mode selection is explained, but that is invocation mechanics, not when-to-prefer-this-tool guidance. There is no statement of when to choose a sibling like calculate_irrbb_eve_shocks instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_pil_flavorStory PIL Flavor MapperB
Read-onlyIdempotent
Inspect

Story PIL Flavor Mapper: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-197-pil-flavor-mapper.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: Maps creator answers (commercial use, derivatives allowed, optional minting fee, revenue share percent) to a Story Protocol Programmable IP License flavor and emits the full PILTerms struct. Outputs: disclaimer, docs, flavor, flavor_label, license_terms_id, pil_terms. Output schema: call describe_tool("map_pil_flavor").

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". Unknown keys are refused.

TDQS

B3.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), and the description adds genuinely new behavior: server-side vs browser delegation semantics, transient non-stored processing, deterministic execution, and an AP2 artifact carrying execution_hash for provenance. It does not cover error/failure modes or what happens with unknown policy keys beyond 'refused', which keeps it short of 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening is generic platform boilerplate — and 'OpenChainGraph compute node' is repeated verbatim in back-to-back sentences — while the actual purpose statement appears near the end. The FV-status hash URL and receipt-verification aside consume substantial space without helping an agent decide to call the tool or how.

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?

For a 4-parameter compute node with no output schema, the description does list the returned fields (flavor, flavor_label, license_terms_id, pil_terms, docs, disclaimer) and points to describe_tool for the full schema, plus it discloses the provenance artifact. What it omits is any indication of failure conditions or how a delegated-browser response differs structurally from a computed one.

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 baseline is 3, but the description adds real meaning the schema lacks: the nested policy_parameters properties (minting_fee, rev_share_pct, commercial_use, derivatives_allowed) are untyped empty objects with no per-property descriptions, and the description explains what creator answers they carry and what they map to. The compute mode and parent_hashes chaining intent are also restated in business terms.

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 core sentence — 'Maps creator answers (commercial use, derivatives allowed, optional minting fee, revenue share percent) to a Story Protocol Programmable IP License flavor and emits the full PILTerms struct' — is a specific verb+resource with concrete inputs and outputs. However, it is buried under three sentences of generic OpenChainGraph/platform preamble, and it never distinguishes itself from near-siblings like assemble_license_terms, certify_license_election, or choose_cc_license.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to pick this tool over assemble_license_terms or the other license-selection siblings. The 'Use synthetic or anonymised inputs only' line is an input constraint, not usage routing, and the compute-mode explanation describes parameter behavior rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_robinhood_chain_regimeFinancial-Instrument Regime MapperB
Read-onlyIdempotent
Inspect

Financial-Instrument Regime Mapper: OpenChainGraph compute node (crypto_regulatory_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-318-rhc-regime-mapper.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: Maps the regulatory regime implied by a pasted Robinhood Chain stock-token characterization. Outputs: assumptions, disclose_no_voting_rights, issuer_entity, mica_carveout_applies, mifid2_transferable_security, note, prospectus_exposure, regime_tree, us_persons_gate_violated. Output schema: call describe_tool("map_robinhood_chain_regime").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses useful behavior: deterministic computation, server-side vs browser delegation semantics, transient processing with no storage/logging, and export of an AP2 artifact carrying execution_hash for chain provenance. Nothing contradicts the readOnly/idempotent/non-destructive hints. It stops short of describing error or refusal behavior or what happens with unknown policy_parameters keys at runtime beyond the schema note.

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?

The text is dominated by repeated infrastructure boilerplate ('OpenChainGraph compute node' stated twice), a long FV-status URL with a 64-character hash, and a compute-mode paragraph duplicated from the schema. The one sentence that actually explains the tool's purpose sits near the end under 'Summary', so the definition is not front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the output fields and points to describe_tool for their schema, and it covers compute/provenance behavior well. But for a tool whose input is a nested free-form policy_parameters object, the absence of any explanation of those inputs leaves an agent guessing about how to characterize the stock token, and there is no sibling routing context.

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 baseline is 3. The description does explain compute modes and parent-hash chaining context, but it never characterizes the policy_parameters members (wrapper, issuer_entity, voting_rights, instrument_type, holder_of_record, target_jurisdictions), which are declared as untyped empty objects in the schema — an area where the description could have added real value.

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 'Summary' sentence states a specific verb and resource: it maps the regulatory regime implied by a pasted Robinhood Chain stock-token characterization, and the output list (mica_carveout_applies, mifid2_transferable_security, us_persons_gate_violated) confirms the intended analysis. However, the purpose statement is buried under infrastructure boilerplate and no sibling (e.g. classify_digital_asset_regulatory, scope_mica_token_and_service, run_robinhood_chain_fit_diagnostic) is named as the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance and no named alternative among the many regulatory-classification siblings. The only usage constraints present are input-handling ones ('Use synthetic or anonymised inputs only') and compute-mode selection, which are prerequisites rather than routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_tempo_settlementTempo Agentic Checkout Settlement MapperB
Read-onlyIdempotent
Inspect

Tempo Agentic Checkout Settlement Mapper: OpenChainGraph compute node (settlement_mandate). 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-34-tempo-fit-diagnostic, art-36-tempo-mpp-agent-mandate. Open at: https://ainumbers.co/chaingraph/art-40-tempo-agentic-checkout.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: Binds an ACP / Visa TAP / ISO 20022 checkout to a TIP-20 settlement. Outputs: iso20022_pacs008, memo, protocol, protocol_binding, tip20_transfer, truncated. Output schema: call describe_tool("map_tempo_settlement").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), but the description adds genuinely non-obvious behavior: server-side vs. browser delegation depending on compute mode and gpu flag, transient processing with no storage or logging, the synthetic-data constraint, and an AP2 artifact carrying execution_hash for provenance. The FV-status receipt is noted as an offline-verifiable snapshot rather than a live check, which prevents a wrong assumption about freshness.

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?

The structure is inverted: the single sentence that states what the tool does sits at the end, behind Cloudflare Workers execution mode detail, a documentation URL, and a long FV-status hash path. Several sentences restate the same determinism/no-retention claims, so the description is substantially longer than the information it carries.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It does list the returns (iso20022_pacs008, memo, protocol_binding, tip20_transfer, truncated) in the absence of an output schema, and it names upstream artifacts, which is useful. What is missing is any explanation of the policy_parameters fields, which is the substance an agent must actually supply to get a correct settlement mapping.

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 top-level parameters are already documented; the description's compute-mode sentence largely restates the compute property's own schema text. It adds no meaning for the policy_parameters object, whose ten nested keys (amount, senderLei, creditorBic, settlementDate, etc.) carry no descriptions anywhere, so the most consequential inputs remain unexplained.

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 description does contain a specific verb and resource: "Binds an ACP / Visa TAP / ISO 20022 checkout to a TIP-20 settlement," which tells an agent exactly what is produced. However, that sentence is buried at the very end after roughly ten lines of infrastructure boilerplate, and nothing distinguishes it from adjacent siblings such as map_agent_payment_mandate, select_agentic_checkout_protocol, or validate_acp_checkout.

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 the prerequisite chain: it "consumes upstream artifacts from art-34-tempo-fit-diagnostic, art-36-tempo-mpp-agent-mandate," so an agent can infer it runs after those steps. There is no explicit when-to-use / when-not statement and no routing to an alternative tool for a different settlement shape.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

match_confirmationsBank/AR Confirmation MatcherB
Read-onlyIdempotent
Inspect

Bank/AR Confirmation Matcher: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-464-confirmation-matcher.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: Joins caller-supplied bank and accounts-receivable confirmation responses against caller-supplied ledger balances on (counterparty_id, type), and classifies each pair EXACT_MATCH, TOLERANCE_MATCH, or MISMATCH, plus confirmations with no corresponding ledger balance and ledger balances with no cor... Outputs: duplicate_confirmation_keys, duplicate_ledger_keys, exact_count, matched, matched_count, tolerance_count, tolerance_used, total_confirmations, total_ledger_balances, unmatched, unmatched_count. Output schema: call describe_tool("match_confirmations").

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: confirmations, ledger_balances, tolerance_abs, tolerance_pct. Unknown keys are refused.

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/non-destructive), the description adds real behavioural facts: the node is deterministic, inputs are processed transiently and not stored or logged, and it exports an AP2 artifact with execution_hash for chain provenance. The FV-status receipt reference, while verbose, also tells the agent the result is verifiable offline.

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?

Roughly two thirds of the text is platform boilerplate (compute binding, Cloudflare Workers, FV-status URL) placed before the actual purpose, so the useful sentence is back-loaded and truncated. A reader must wade through infrastructure prose to learn what the tool matches.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does list the return keys (exact_count, matched, unmatched, duplicate_confirmation_keys, etc.) and the three classification labels, which is genuinely helpful. However it never explains how tolerance_abs and tolerance_pct combine or what the unmatched/duplicate buckets contain, both of which are decision-critical for this matcher.

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 earns more: it reveals that ledger_balances and confirmations are matched on the (counterparty_id, type) key and that tolerance classification drives tolerance_abs/tolerance_pct outcomes (tolerance_used is returned). That join-key semantics is nowhere in the schema, which only says 'Input parameters for this tool's decision function'.

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 Summary sentence gives a precise verb+resource: it joins caller-supplied bank and AR confirmation responses against ledger balances on (counterparty_id, type) and classifies each pair EXACT_MATCH/TOLERANCE_MATCH/MISMATCH. That is specific enough to distinguish it from generic siblings, but no sibling is ever named (recon_match, match_invoice_three_way, check_iolta_three_way_reconciliation all sit adjacent), and the sentence is truncated mid-word ('ledger balances with no cor...').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage constraint given is 'Use synthetic or anonymised inputs only' plus compute-mode routing, which is parameter mechanics rather than when-to-use. There is no guidance on when this reconciliation matcher is the right choice versus sibling reconciliation tools, and no when-not guidance at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

match_invoice_three_wayThree Way Invoice MatchC
Read-onlyIdempotent
Inspect

Three Way Invoice Match: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-701-three-way-invoice-match.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: Matches one invoice against its purchase order and its goods receipt and decides whether the invoice can be paid: explicit line pairing (declared po_line, then exact sku, then a free same-number PO line; no fuzzy text matching), a fixed first-apply line-verdict order (quantity over received, rece... Outputs: outcome, refusal_reason, po_number, receipt_id, lines, totals, mismatches, duplicates, domain_errors, hold_recommended, scope_note. Output schema: call describe_tool("match_invoice_three_way").

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: currency, invoice, vendor_terms, duplicate_window_days. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description does add genuinely non-structured context: inputs are processed transiently and not stored or logged, synthetic/anonymised inputs only, deterministic matching with no fuzzy text, and an AP2 artifact with execution_hash for provenance chaining. However, it never explains what actually happens on a failed match beyond naming hold_recommended/refusal_reason, so the behavioural picture is partial rather than rich.

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?

The useful content is in the last two paragraphs; the front half is generic compute-node, Cloudflare Worker, delegation-URL and FV-status receipt boilerplate that does not help an agent decide or invoke. The Summary is also truncated mid-sentence, and the trailing 'call describe_tool(...)' defers rather than informs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description only lists output field names without meaning — an agent cannot tell what values 'outcome' or 'hold_recommended' take, nor how to interpret mismatches/duplicates. Given the tool's complexity (nested document objects, provenance chaining via parent_hashes) and the missing output contract, the definition leaves substantive gaps.

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%, so baseline is 3. The description goes somewhat beyond the schema by explaining the matching strategy over policy_parameters (declared po_line, then exact sku, then same-number PO line, no fuzzy matching) and the fixed verdict order, which is useful since invoice/purchase_order/goods_receipt are opaque nested objects in the schema. It adds no detail on parent_hashes/parent_tool_ids beyond what the schema already says.

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 Summary sentence states a specific verb and resource: matches one invoice against its purchase order and goods receipt and decides whether it can be paid. That is concrete and distinguishable from generic list/compare tools, but it is buried under several paragraphs of compute-node boilerplate, and no sibling (e.g. check_iolta_three_way_reconciliation, match_confirmations, recon_match) is named as the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains execution modes (auto/server/browser), not when to choose this tool over alternatives. There is no stated precondition (e.g. 'use when you have all three documents'), no exclusion, and no routing to the reconciliation-family siblings that overlap with it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mobilize_margin_collateralMargin Call Collateral MobilizerB
Read-onlyIdempotent
Inspect

Margin Call Collateral Mobilizer: OpenChainGraph compute node (collateral_mandate). 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: 505-tokenized-collateral-eligibility-checker. Output feeds: 506-onchain-cash-leg-finality-checker. Open at: https://ainumbers.co/tools/513-margin-call-collateral-mobilizer.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: Compute initial and variation margin requirements and identify eligible collateral to mobilize. Outputs: collateral_detail, gap, im_call, shortfall, total_mobilizable, total_required, vm_call. Output schema: call describe_tool("mobilize_margin_collateral").

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". Unknown keys are refused.

TDQS

B3.4/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 the description adds real context beyond them: deterministic computation, compute-mode delegation semantics (auto/server/browser, gpu:true always delegates), transient non-retained processing with a synthetic-inputs warning, and AP2 execution_hash provenance export. The main cost is that much of this restates schema text rather than adding new 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?

The purpose sentence, the single most important line, appears after several paragraphs of compute-node plumbing, a privacy paragraph, and an FV-status hash URL that is not actionable for a caller. Significant text is repeated ('OpenChainGraph compute node' twice, compute-mode behavior twice) and the closing 'call describe_tool(...)' pointer does not function as an output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output field list (collateral_detail, gap, im_call, shortfall, total_mobilizable, total_required, vm_call) and the upstream/downstream chain neighbors give an agent a reasonable picture. But there is no output schema, the return values are described only by bare names, and the description defers to describe_tool rather than explaining result semantics.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters; the description mostly restates the compute-mode enum. Critically, it sheds no light on the opaque policy_parameters keys (mta, aana, portfolio_mtm, collateral_rows), which is where the description could have added value.

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 sentence 'Compute initial and variation margin requirements and identify eligible collateral to mobilize' states a clear verb and resource, and the title matches. However it is buried near the end behind infrastructure boilerplate, and nothing distinguishes it from related siblings such as compute_derivatives_margin_workbench, estimate_ficc_margin_netting, or check_tokenized_collateral_eligibility.

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?

'Consumes upstream artifacts from: 505-tokenized-collateral-eligibility-checker' and 'Output feeds: 506-onchain-cash-leg-finality-checker' imply workflow position, which is genuinely useful. But there is no explicit statement of when to prefer this tool over the margin/collateral siblings, and no exclusions or preconditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_agent_service_meteringAgent-Service Metering & Marketplace Economics ModelerA
Read-onlyIdempotent
Inspect

Agent-Service Metering & Marketplace Economics Modeler: OpenChainGraph compute node (payment_policy). 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-60-agent-economy-runtime-fit-diagnostic. Output feeds: art-03-x402-settlement-modeler, ml-03-timeseries-anomaly-detector. Open at: https://ainumbers.co/chaingraph/art-63-agent-service-metering-modeler.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: Educational unit-economics modeler for agent-service micropayment marketplaces: per-call pricing, x402 V2 batch-settlement savings, marketplace take-rate, net margin, break-even volume, and sensitivity analysis across batch sizes. Outputs: batch, batch_savings_pct, batch_size, breakeven_calls_day, currency, gross_revenue_day, model, net_margin_day, net_margin_pct, note, rail, sensitivity, settlement_cost_day, status_asof, take_and_infra_day, unit_price_minor. Output schema: call describe_tool("model_agent_service_metering").

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: pricing. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description goes further and adds real behavioral context: compute:'auto' vs 'browser' delegation semantics, gpu:true always delegating, transient processing with no storage or logging, and an AP2 artifact carrying execution_hash for provenance. These are traits not derivable from the annotations and are the strongest part of the definition.

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?

The definition is bloated: the title is restated as a first sentence, 'OpenChainGraph compute node' appears twice, and a raw FV-status URL plus hash path is inlined. The purpose statement that actually matters ('Educational unit-economics modeler...') appears only after several paragraphs of boilerplate, so the useful content is not front-loaded.

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?

For a fairly complex chained compute node, the description covers compute modes, privacy handling, upstream/downstream artifact chaining, and an explicit output field inventory, and it points to describe_tool for full output details. The main missing element is guidance on which sibling modeler to choose for adjacent economics questions.

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 both compute and parent_hashes/parent_tool_ids ordering are already documented in the schema. The description restates the compute='auto' default behavior but adds no syntax, format, or constraint detail for policy_parameters beyond what the schema says. Baseline 3 is appropriate when the schema carries the parameter burden.

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 summary sentence names a specific verb-plus-domain: 'Educational unit-economics modeler for agent-service micropayment marketplaces: per-call pricing, x402 V2 batch-settlement savings, marketplace take-rate, net margin, break-even volume, and sensitivity analysis.' That is precise enough to distinguish it from nearby siblings like model_x402_settlement or model_tempo_payment_economics. However, that clarity is buried behind boilerplate ('OpenChainGraph compute node (payment_policy)' repeated twice) and no sibling is named explicitly.

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 lineage notes: 'Consumes upstream artifacts from: art-60-agent-economy-runtime-fit-diagnostic' and 'Output feeds: art-03-x402-settlement-modeler, ml-03-timeseries-anomaly-detector.' That tells an agent where it sits in a pipeline but not when to pick it over model_x402_settlement, simulate_x402_flow, or model_stablecoin_corridor_economics. No explicit when-not conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_arc_cpn_economicsArc CPN Corridor Economics ModelB
Read-onlyIdempotent
Inspect

Arc CPN Corridor Economics Model: OpenChainGraph compute node (treasury_mandate). 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-42-arc-fit-diagnostic. Open at: https://ainumbers.co/chaingraph/art-43-arc-cpn-model.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: Model CPN corridor economics vs SWIFT/ACH/SEPA/card/RTP for cross-border USD flows. Outputs: verdict, rail, compliance_flags. Output schema: call describe_tool("model_arc_cpn_economics").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, closed-world), the description discloses non-obvious runtime behavior: auto/server/browser compute delegation, that gpu:true nodes always return a browser delegation URL, that inputs are processed transiently and not retained, that only synthetic/anonymised inputs are permitted, and that an AP2 artifact with execution_hash is emitted. That is substantive context. It loses a point because the FV-status hash/URL passage is metadata about a receipt file rather than behavior an agent can act on.

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?

The discriminating sentence ('Summary: Model CPN corridor economics vs...') is the last line, behind templated OpenChainGraph boilerplate that restates the compute-mode enum already fully documented in the schema, plus an artifact URL and a long FV-status receipt explanation. Front-loading is inverted and a substantial fraction of the text does not earn its place for tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a pocket-of-value model tool with no output schema, the description does state outputs (verdict, rail, compliance_flags), the comparison set, upstream chaining, and privacy handling, which is enough to call it. It omits what the model actually assumes or returns (units, currency basis, whether a policy_parameters baseline is required) and defers return shape to describe_tool, leaving real gaps against this tool's complexity.

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 nominally 100%, so the schema carries compute, parent_hashes, parent_tool_ids, and policy_parameters. However, the nested policy_parameters keys (rail, cpn_fee_usd, impl_months, notional_usd, fx_spread_bps, monthly_volume) have empty schemas and no units or semantics anywhere, and the description adds nothing about them — it only says 'Unknown keys are refused' indirectly via the schema. Baseline 3 for a schema-covered tool, but a definition of a financial model should explain the fee/spread/notional 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 sentence gives a specific verb+resource+scope: 'Model CPN corridor economics vs SWIFT/ACH/SEPA/card/RTP for cross-border USD flows', which is genuinely discriminating. It never distinguishes this from near-name siblings such as model_stablecoin_corridor_economics, compare_corridor_cost, or check_g20_corridor_cost_gap, and the actual purpose is buried after several sentences of infrastructure boilerplate.

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?

'Consumes upstream artifacts from: art-42-arc-fit-diagnostic' implies a workflow prerequisite (run the fit diagnostic first and chain via parent_hashes), which is real usage context. But there is no explicit when-to-use, no when-not-to-use, and no naming of the sibling corridor-cost tools an agent should weigh against this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_arc_paymaster_economicsArc Paymaster Economics ModelA
Read-onlyIdempotent
Inspect

Arc Paymaster Economics Model: OpenChainGraph compute node (treasury_mandate). 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-42-arc-fit-diagnostic. Open at: https://ainumbers.co/chaingraph/art-46-arc-paymaster-model.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: ERC-4337 Paymaster economics model for Arc. Outputs: verdict, compliance_flags. Output schema: call describe_tool("model_arc_paymaster_economics").

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". Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses determinism, compute delegation behavior, transient non-retention of inputs, synthetic-input requirements, AP2 artifact export with execution_hash, and upstream artifact dependency. None of this contradicts the readOnly, idempotent, or non-destructive annotations.

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?

The description is long and front-loads generic OpenChainGraph boilerplate, including repeating 'compute node' in consecutive sentences. The actual purpose appears near the end, while external URL and FV-status details consume space that could have been used for usage guidance.

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?

It covers compute behavior, privacy, upstream dependency, outputs, and points to describe_tool for the output schema. It lacks explicit routing against sibling tools, but is otherwise sufficient for an agent to invoke it 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 description coverage is 100% for the four top-level parameters, so the schema already documents their meaning. The description repeats the compute-mode semantics and notes unknown keys are refused, but adds no detail about the seven nested policy_parameters keys, making the baseline 3 appropriate.

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 a specific domain: an ERC-4337 Paymaster economics model for Arc, with outputs verdict and compliance_flags. It does not explicitly contrast with sibling model_* tools, and the purpose is buried behind generic compute-node boilerplate.

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 description gives prerequisite context by naming the upstream artifact (art-42-arc-fit-diagnostic) and an input constraint (use synthetic or anonymised inputs only). However, it does not explicitly say when to use this tool versus alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_arc_stablefx_rfqArc StableFX RFQ Economics ModelC
Read-onlyIdempotent
Inspect

Arc StableFX RFQ Economics Model: OpenChainGraph compute node (treasury_mandate). 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-42-arc-fit-diagnostic. Open at: https://ainumbers.co/chaingraph/art-44-arc-stablefx-model.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: Quantify Herstatt risk elimination and FX spread savings from Arc StableFX 24/7 atomic PvP settlement vs non-CLS bilateral FX. Outputs: verdict, compliance_flags. Output schema: call describe_tool("model_arc_stablefx_rfq").

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". Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is free. The description does add genuine context beyond that: transient processing with no retention, server-vs-browser delegation rules, AP2 artifact emission with execution_hash, and an offline-verifiable FV receipt. However the compute-mode and provenance text is verbose boilerplate shared across many OCG nodes rather than tool-specific insight.

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?

The actual purpose is stranded after several sentences of generic compute-node boilerplate and a raw FV-status hash URL. Front-loading is poor: the reader must reach the final 'Summary:' clause to learn what the tool does, which is waste in a high-noise tool list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety and no output schema, the description needn't explain return values, and naming verdict/compliance_flags is sufficient there. But for a tool with seven undocumented nested policy parameters, the description leaves a real gap in what inputs govern the decision function, and much of its length addresses platform mechanics instead.

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?

Top-level schema coverage is 100% and the compute enum is well documented in the schema, so baseline 3 applies. The seven policy_parameters keys (impl_months, stablefx_fee_bps, herstatt_spread_bps, etc.) are untyped and undescribed in both schema and description; the description only says unknown keys are refused, adding no meaning for those substantive 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 summary sentence states a specific analytical purpose: quantify Herstatt risk elimination and FX spread savings from Arc StableFX atomic PvP settlement vs non-CLS bilateral FX, with named outputs (verdict, compliance_flags). It is clear but buried beneath compute-node boilerplate, and there is no explicit differentiation from near-identical siblings like model_arc_cpn_economics or model_arc_paymaster_economics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and upstream artifact consumption but never says when to use this model instead of the many sibling economics models. An agent must infer selection from the summary alone, with no exclusions or alternative routing provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_buy_in_exposureBuy-In Exposure ModelerB
Read-onlyIdempotent
Inspect

Buy-In Exposure Modeler: OpenChainGraph compute node (compliance_mandate). 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-78-csdr-penalty-calculator. Output feeds: cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-83-buy-in-exposure-modeler.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: Models CSDR Refit last-resort mandatory buy-in exposure: eligible trigger date per asset class, extension period (liquid equity ~7 cal days, gov bond ~12, SME ~22), buy-in cost mark-up (default 5%), and cash-compensation alternative. Outputs: buyin_triggered_count, modeled_fails, note, reference, status_note, total_buyin_exposure, total_cash_comp_exposure, total_fails. Output schema: call describe_tool("model_buy_in_exposure").

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". Unknown keys are refused.

TDQS

B3.4/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 the safety profile is covered. The description adds genuinely new behavioral facts: transient processing with no storage/logging, a 'use synthetic or anonymised inputs only' constraint, compute-mode semantics (auto vs browser delegation for gpu:true nodes), and an AP2 artifact export carrying execution_hash for chain provenance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The substantive modeling summary is buried mid-paragraph behind compute-node boilerplate, a long FV-status receipt URL and a file hash, which is low-value noise for tool selection. Front-loading is weak: the actual purpose appears only after two generic opening sentences. Still, most of the middle content is useful, so it is not bloated to the point of being unusable.

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?

With no output schema, the description compensates by enumerating outputs (buyin_triggered_count, modeled_fails, total_buyin_exposure, total_cash_comp_exposure, etc.) and by naming the upstream and downstream chain artifacts. Combined with the compute-mode and transient-processing notes, an agent has enough to invoke it correctly; only the missing alternative-tool guidance keeps it below top marks.

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%, so all four parameters are already documented, and the description largely mirrors the compute-mode text. It does add a small amount of meaning the schema does not: the default 5% mark-up, the per-asset-class extension periods, and the cash-compensation alternative, which give the agent an idea of what policy_parameters expects despite their untyped {} schema entries. That is incremental rather than decisive, so a solid baseline score 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?

The description eventually states a precise verb and resource: 'Models CSDR Refit last-resort mandatory buy-in exposure: eligible trigger date per asset class, extension period..., buy-in cost mark-up (default 5%), and cash-compensation alternative.' That clearly separates it from siblings like calculate_csdr_penalty or recompute_csdr_penalty. However, the opening two sentences ('Buy-In Exposure Modeler: OpenChainGraph compute node... Deterministic OpenChainGraph compute node') merely restate the title and node type before any real purpose appears.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use / when-not-to-use guidance and no routing to alternatives despite many adjacent CSDR penalty tools in the sibling list. The only contextual hooks are the chain notes ('Consumes upstream artifacts from: art-78-csdr-penalty-calculator. Output feeds: cry-05-agent-action-audit-trail-aggregator'), which describe lineage rather than selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_cbam_certificate_costCBAM Certificate Cost & Free-Allocation EngineA
Read-onlyIdempotent
Inspect

CBAM Certificate Cost & Free-Allocation Engine: OpenChainGraph compute node (compliance_mandate). 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-69-cbam-embedded-emissions-calculator. Output feeds: cry-05-agent-action-audit-trail-aggregator, art-76-climate-scenario-applicator. Open at: https://ainumbers.co/chaingraph/art-71-cbam-certificate-cost-engine.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: Converts embedded emissions into a CBAM certificate liability: applies the CBAM factor (free-allocation phase-out 2.5% 2026 to 100% 2034), deducts origin carbon price already paid, and projects the quarterly holding and surrender schedule to the 30 Sep deadline. Outputs: cbam_factor, cbam_factor_applied, cbam_factor_year, certificate_liability_eur, certificates_required, eua_reference_price, free_allocation_phaseout_pct, gross_liability_tco2e, net_liability_eur, note, origin_price_credit, quarterly_holding_schedule, reference, surrender_deadline. Output schema: call describe_tool("model_cbam_certificate_cost").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the operation read-only, non-destructive, idempotent, and closed-world. The description adds meaningful behavior beyond that: compute:"auto"/"server"/"browser" semantics, GPU delegation, transient non-retention of inputs, synthetic-input guidance, AP2 artifact export with execution_hash, and upstream/downstream provenance. It does not contradict 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and front-loads generic ChainGraph compute-node boilerplate, data-retention language, an external URL, and FV-status receipt text before reaching the actual purpose in the final summary. Several sentences do not help an agent select or invoke this specific CBAM tool, and the core function is buried rather than front-loaded.

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?

For a complex compute node with no output schema, the description is fairly complete: it explains compute binding, chaining via parent hashes/tool IDs, transient processing, artifact export, upstream and downstream artifacts, and lists the returned fields. The main remaining gap is that nested policy_parameters are not semantically documented, but the high schema coverage and output list make invocation feasible.

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 carries the baseline parameter documentation. The description reinforces compute-mode behavior and mentions policy concepts such as CBAM factor year, EUA reference price, embedded emissions, and origin carbon price, but it does not map or explain the individual nested policy_parameters keys beyond what the schema names provide.

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 summary states a specific verb and resource: it converts embedded emissions into a CBAM certificate liability, applies the CBAM factor, deducts origin carbon price, and projects the surrender schedule. That clearly distinguishes it from a pure embedded-emissions calculator, though the core purpose is buried at the end and the description does not explicitly name sibling alternatives.

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 implied through the workflow language: it consumes upstream artifacts from the CBAM embedded-emissions calculator and its output feeds audit-trail and scenario tools. However, there is no explicit statement of when to choose this tool over siblings like calculate_cbam_embedded_emissions or resolve_cbam_default_value, and no when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_clearing_access_economicsClearing Access Model SelectorA
Read-onlyIdempotent
Inspect

Clearing Access Model Selector: OpenChainGraph compute node (treasury_mandate). Regulatory deadline: 2026-12-31 (flagship access-model decision (W-A).). 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-48-treasury-clearing-fit-diagnostic. Output feeds: 504-settlement-risk-capital-optimizer, art-50-ficc-margin-netting-estimator. Open at: https://ainumbers.co/chaingraph/art-49-clearing-access-model-selector.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: Selects and costs the FICC access model - Direct vs Sponsored (done-with) vs Sponsored/Agent (done-away) - across cost, execution-access, margin/netting efficiency, and ops. Outputs: annual_cost_by_model, cfo_memo, eligibility_gates, execution_access_score, im_estimate_by_model, model_scores, netting_efficiency_pct, note, recommended_model, segregation_recommendation. Output schema: call describe_tool("model_clearing_access_economics").

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". Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, it discloses server vs browser compute delegation, transient processing with no storage/logging/retention, synthetic-input constraints, and AP2 execution_hash export for provenance. Those are material behavioral and data-handling traits not captured by readOnly/idempotent annotations; there is no contradiction.

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?

The core purpose is buried after compute-mode, provenance, URL, and FV-status boilerplate; the FV-status hash and long URL do not help tool selection. The description is dense and not front-loaded, though it is not purely redundant.

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?

It covers the selection purpose, compute/delegation behavior, data handling, upstream/downstream workflow, and output field names despite lacking a formal output schema. The remaining gap is that the nested policy_parameters semantics are left opaque, which matters for a complex decision model.

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%, so compute, parent_hashes, parent_tool_ids, and policy_parameters are already structurally documented, and the description mostly repeats compute behavior. It adds little meaning for the nested policy_parameters fields, so baseline 3 is appropriate.

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 summary gives a specific verb and resource — selecting and costing the FICC access model — and names the three models and four evaluation axes. It is clear what the tool does, but it does not explicitly distinguish itself from neighboring clearing/margin estimators by naming which sibling to use instead.

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?

The description supplies clear workflow context: treasury_mandate scenario, 2026-12-31 regulatory deadline, upstream artifact art-48, and downstream feeds to settlement/capital and margin-netting tools. It does not state explicit exclusions or name a sibling alternative, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_l1_fee_runwayL1 Continuous-Fee Runway ModelB
Read-onlyIdempotent
Inspect

L1 Continuous-Fee Runway Model: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-496-l1-continuous-fee-runway.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: Avalanche Evergreen L1 continuous-fee TCO and depletion-runway model. Outputs: annual_tco, as_of, breakdown, current_balance, depletion_offset_days, fee_growth_rate_annual_pct, fee_rate_avax_per_validator_month, fee_rate_defaulted, horizon_months, infra_cost_annual, months_to_depletion, rationale, refill_amount_required, runway_flag, target_runway_months, validator_count. Output schema: call describe_tool("model_l1_fee_runway").

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: as_of, current_balance, fee_growth_rate_annual_pct, fee_rate_avax_per_validator_month, horizon_months, infra_cost_annual, target_runway_months, validator_count. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety bar is lower. The description still adds real value: transient processing with no storage/logging, synthetic-inputs-only requirement, deterministic execution, and AP2 artifact export with execution_hash for chain provenance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The most useful content, the one-line model summary and output list, is buried after boilerplate about Cloudflare Workers, FV-status receipt hashes, and URLs. Much of the node/URL/hash material is scaffolding that dilutes the signal.

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?

With no output schema, listing the returned fields is genuinely useful, and the privacy/compute/provenance behavior is covered. An agent has enough to call it correctly, though task-selection guidance 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%, so the schema already documents every parameter including compute mode and the policy_parameters fields. The description restates compute mode behavior rather than adding semantics beyond the schema; 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?

The description states a specific resource (Avalanche Evergreen L1 continuous-fee TCO and depletion-runway model) and enumerates concrete outputs (annual_tco, months_to_depletion, runway_flag), so an agent can tell it computes runway analysis. It doesn't explicitly contrast with neighbors like find_runway_goal_path or other fee models, so differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus alternatives, nor when-not to use it. The compute-mode paragraph explains server/browser execution behavior, which is parameter mechanics, not task-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_perp_positionPerp Position LifecycleB
Read-onlyIdempotent
Inspect

Perp Position Lifecycle: OpenChainGraph compute node (derivatives_margin_health). 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-213-perp-liquidation-calculator. Open at: https://ainumbers.co/chaingraph/art-214-perp-position-lifecycle.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: Models a full perpetual futures position from open to close. Outputs: close_fee, close_fee_type, close_ts, disclaimer, entry_price, exit_price, funding_rate_per_interval, initial_margin, leverage, liq_price, maintenance_threshold, margin_return_pct, margin_returned, mmr_pct, n_intervals, notional, open_fee, open_fee_type, open_ts, position_size, price_delta, realized_pnl_gross, realized_pnl_net, side, total_fees, total_funding_impact, total_net_pnl, venue. Output schema: call describe_tool("model_perp_position").

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: close_fee_type, close_ts, mmr_pct, open_fee_type, open_ts, side, venue. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behaviour: deterministic execution, server-vs-browser delegation semantics, transient input handling with a 'use synthetic inputs only' constraint, and an AP2 artifact with execution_hash for provenance. That is real context beyond the annotations; it stops short of describing pagination/error behaviour or how far the position model diverges from venue reality.

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?

The description opens with a redundant restatement ("...compute node... Deterministic OpenChainGraph compute node") and then spends most of its length on infrastructure boilerplate, a documentation URL, and a raw FV-status hash. The actual purpose sentence and the output list are buried, so an agent must scan past noise to find the useful content.

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?

With no output schema, enumerating the ~28 returned fields (liq_price, realized_pnl_net, funding impact, fees) is necessary and it is present. Combined with the compute-mode and provenance explanation, an agent has enough to call and interpret the tool; only the venue/side enum value domains and the relationship to sibling perp tools are unaddressed.

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 compute enum, parent_hashes/parent_tool_ids chaining, and the required policy_parameters keys are already documented in the schema. The description's only added semantics is naming the upstream artifact that supplies lineage, which is marginal, so 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?

The summary line states a specific verb and resource: "Models a full perpetual futures position from open to close." That is far clearer than the title and lets an agent recognise a margin/PnL computation. It does not, however, distinguish itself from close siblings such as compute_perp_margin or compute_perp_funding, which an agent could easily mistake for the same calculation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over compute_perp_margin, compute_perp_funding, or compute_derivatives_margin_workbench. The only usage-adjacent hint is "Consumes upstream artifacts from: art-213-perp-liquidation-calculator" and the compute-mode explanation, which tells an agent how to chain but not when this tool is the right pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_scorp_break_evenS-Corp Election Break-Even ModelerC
Read-onlyIdempotent
Inspect

S-Corp Election Break-Even Modeler: OpenChainGraph compute node (readiness_diagnostic). 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. Open at: https://ainumbers.co/chaingraph/art-713-scorp-election-break-even.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: S-Corp election break-even modeler: from net self-employment income, a reasonable W-2 salary share and an annual admin cost, compute the sole-proprietor SE tax, the S-Corp payroll tax, the savings net of admin cost, the five-year saving, the grid break-even income, and a QBI section 199A trade-of... Output schema: call describe_tool("model_scorp_break_even").

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: net_se_income. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive and closed-world, yet the description adds genuinely useful behaviour: inputs are processed transiently and never stored or logged, execution routes server-side on Cloudflare Workers or delegates to a browser URL depending on gpu/compute, and an AP2 artifact with execution_hash is exported for chain provenance. The FV-status receipt note is extra but still behavioural. It does not contradict 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Badly front-loaded: the first ~120 words are shared platform boilerplate, followed by a long FV-status hash URL and a disclaimer, with the one sentence that describes the model last and truncated mid-word. The signal is also duplicated ('OpenChainGraph compute node' restated three times in different words).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does try to carry the return burden by enumerating the computed outputs (SE tax, payroll tax, net savings, five-year saving, grid break-even income, QBI 199A), which is useful, but the enumeration is truncated and it defers to describe_tool for the actual output shape. For a nested-parameter financial model with no output schema, this is adequate but incomplete.

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 compute mode, parent_hashes, parent_tool_ids and policy_parameters are all documented in the schema itself. The description only names the domain inputs (net SE income, reasonable salary share, admin cost) which map onto policy_parameters, adding no syntax, defaults or constraints beyond what the schema already provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The actual purpose appears only in the trailing 'Summary' sentence: computing sole-proprietor SE tax vs S-Corp payroll tax, savings, five-year saving, break-even income and QBI 199A treatment from net SE income, salary share and admin cost. That is a specific verb+resource, but it is buried after ~150 words of platform boilerplate and is cut off mid-clause ('QBI section 199A trade-of...'), so an agent skimming the first lines learns nothing about the purpose. No differentiation against near-neighbours such as compute_breakeven or estimate_hdhp_ppo_breakeven.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is operational: 'Use synthetic or anonymised inputs only' and the compute-mode routing rules. There is no statement of when this modeler is the right choice versus a plain break-even calculator or other tax tools, no prerequisites, and no exclusions beyond the synthetic-input constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_stablecoin_corridor_economicsStablecoin Corridor Economics ModelA
Read-onlyIdempotent
Inspect

Stablecoin Corridor Economics Model: OpenChainGraph compute node (analytics_mandate). 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. Output feeds: art-249-compare-corridor-cost. Open at: https://ainumbers.co/chaingraph/art-250-model-stablecoin-corridor-economics.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: Models the all-in cost of a USDC-based remittance corridor: on-ramp fee, chain gas fee, off-ramp/local-rail fee, FX spread, and pre-funding float savings vs correspondent banking. Outputs: break_even_usd, chain_fee_usd, correspondent_cost_pct, correspondent_cost_usd, disambiguation, float_savings_usd, fx_markup_share_of_traditional, fx_spread_usd, gross_cost_bps, gross_cost_pct, gross_stablecoin_cost_usd, meets_sdg_target, net_cost_bps, net_cost_pct, net_stablecoin_cost_usd, off_ramp_fee_usd, on_ramp_fee_usd, pii_note, regulatory_basis, savings_vs_traditional_pct, savings_vs_traditional_usd, sdg_target_pct, send_amount_usd, table_source, table_version. Output schema: call describe_tool("model_stablecoin_corridor_economics").

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: chain_fee_usd, correspondent_cost_pct, float_days, float_savings_rate_pct, fx_spread_pct, off_ramp_fee_pct, on_ramp_fee_pct, send_amount_usd. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Well beyond the annotations, it discloses transient/no-retention processing, synthetic-input requirement, AP2 artifact with execution_hash, offline-verifiable FV receipt, and compute forcing behavior. Only minor boilerplate repeats annotation-implied safety.

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?

The description is long and not front-loaded: the core purpose appears near the end after compute modes, provenance, and an FV-status URL, and the exhaustive output-field list is heavy. Much could be trimmed or reordered to lead with the purpose.

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?

For a compute tool with no output schema, it compensates by enumerating output fields, explaining compute modes, privacy handling, provenance artifact, and a domain summary. A reader can call it correctly, though the buried purpose and overflow of outputs slightly reduce clarity.

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 baseline is 3, but the summary maps inputs (on-ramp fee, gas, off-ramp, FX spread, float days/rate, send amount) to concrete cost-model roles, adding real meaning beyond the schema property names.

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 'Summary' sentence states a specific verb and resource: models all-in cost of a USDC-based remittance corridor with enumerated cost components, which is far beyond tautology. However, the actual purpose is buried at the end behind compute/provenance/FV boilerplate, and it doesn't crisply distinguish itself from siblings like compare_corridor_cost or check_g20_corridor_cost_gap beyond a terse 'Output feeds' link.

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?

It gives detailed guidance for the compute mode (auto/server/browser) and states inputs must be synthetic/anonymised, plus that output feeds art-249-compare-corridor-cost. But it never says when to choose this tool over the many overlapping corridor/cost-model siblings, leaving the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_tempo_gas_economicsTempo Fee-Sponsorship & Gas-AMM EconomicsB
Read-onlyIdempotent
Inspect

Tempo Fee-Sponsorship & Gas-AMM Economics: OpenChainGraph compute node (treasury_mandate). 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-35-tempo-payments-business-case. Open at: https://ainumbers.co/chaingraph/art-107-tempo-gas-economics.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: Model Tempo enshrined-AMM gas cost paid in any major stablecoin, server-paid fee sponsorship, and net per-tx saving vs card/SWIFT/ACH baselines. Outputs: amm_slippage_bps, annual_saving, baseline_fee, blended_gas_cost, cfo_memo, effective_cost, per_tx_saving, server_paid_pct, sponsorship_breakeven_tx. Output schema: call describe_tool("model_tempo_gas_economics").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds context those fields cannot: deterministic server-side vs browser-delegated execution, transient processing with no storage or logging, an AP2 artifact export carrying execution_hash for chain provenance, and an offline-verifiable FV-status receipt. The boilerplate about Cloudflare Workers is verbose but it does disclose where computation happens. Only gap: nothing about latency, cost, or what a refused unknown policy key looks like.

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?

The first sentence restates the title, then a long block of chain-graph and FV-status boilerplate runs before the actual purpose and output list, which appear only at the very end. The substantive content — what is modelled, what comes back — is the last thing an agent reads and could have been the first. Substantial truncation of the compute/receipt preamble would lose nothing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a modelling tool with no output schema, the description does list the return metrics (amm_slippage_bps, per_tx_saving, sponsorship_breakeven_tx, cfo_memo, etc.), which compensates somewhat. But it leaves the seven nested policy input keys wholly unexplained, and an agent has no way to know units, defaults, or valid values for monthly_volume, tx_amount_usd, or baseline_rail. With annotations covering safety, the remaining behavioural disclosure is adequate but the input semantics gap is real.

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 itself carries the parameter burden and a baseline 3 is appropriate. The description's compute-mode text duplicates the schema's compute description rather than adding to it, and the seven nested policy_parameters keys (fee_mix, impl_months, amm_slippage, baseline_rail, tx_amount_usd, monthly_volume, server_paid_pct) are undocumented in both places. It also adds nothing on parent_hashes/parent_tool_ids ordering beyond the schema.

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 final summary sentence states a specific computation: enshrined-AMM gas cost in stablecoins, server-paid fee sponsorship, and net per-tx saving vs card/SWIFT/ACH baselines, and it enumerates the output metrics. That is enough to distinguish it from convert_tempo_fee_amm or model_tempo_payment_economics on substance, but the description never names those siblings explicitly, so routing is left to inference. The purpose statement is also buried at the end rather than up front.

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 description gives real usage context for the compute parameter (auto vs server vs browser, gpu:true always delegating) and a data-handling constraint ('use synthetic or anonymised inputs only'), plus the upstream artifact it consumes (art-35-tempo-payments-business-case). However, it never says when to choose this tool over the many near-neighbours such as model_tempo_payment_economics, convert_tempo_fee_amm, or compute_tempo_mainnet_fee_capacity. Usage is implied by the modelled quantities, not stated as selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_tempo_payment_economicsTempo Payments Business CaseB
Read-onlyIdempotent
Inspect

Tempo Payments Business Case: OpenChainGraph compute node (treasury_mandate). 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-34-tempo-fit-diagnostic. Output feeds: art-37-tempo-stablecoin-issuance, art-36-tempo-mpp-agent-mandate. Open at: https://ainumbers.co/chaingraph/art-35-tempo-payments-business-case.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: CFO-level cost-and-savings model for migrating a payment flow (payroll / remittance / merchant settlement) from card/SWIFT/ACH/SEPA to Tempo. Outputs: annual_saving_usd, break_even_months, impl_cost_usd, monthly_saving_usd, per_tx_incumbent_usd, per_tx_saving_usd, per_tx_tempo_usd, rail, saving_bps, stablecoin, verdict. Output schema: call describe_tool("model_tempo_payment_economics").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower, yet the description still adds real behavior: inputs are processed transiently and not stored or logged, an AP2 artifact with execution_hash is exported for chain provenance, and compute:'browser' returns a delegation URL while gpu:true nodes always delegate. This is meaningful context beyond the annotations. It loses a point because the compute-mode paragraph largely duplicates the schema's compute description.

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?

The actual purpose appears only after five sentences of infrastructure boilerplate (compute-node framing, Cloudflare Workers, transient-processing language), and 'Deterministic OpenChainGraph compute node' is stated twice. The useful content — summary, output field list, chain links — is real, but it is buried rather than front-loaded, forcing an agent to read past irrelevant runtime detail to learn what the tool computes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Return values are enumerated and execution_hash provenance is explained, which covers a lot for a tool with no output schema. But a cost model is only as usable as its inputs, and the description leaves policy_parameters.rail/.stablecoin (empty schemas) and the units/scale of monthly_volume and tx_amount_usd undefined, and never says what 'verdict' values mean — gaps an agent cannot close from structured fields.

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 baseline is 3. The description adds nothing about parameter semantics that the schema lacks; in fact the most semantically opaque parameters (policy_parameters.rail and .stablecoin are untyped with empty schemas, and monthly_volume/tx_amount_usd have no unit guidance) are not clarified anywhere in the description.

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 description eventually states a specific verb-and-resource: a CFO-level cost-and-savings model comparing incumbent rails (card/SWIFT/ACH/SEPA) against Tempo, and enumerates the outputs (annual_saving_usd, per_tx_saving_usd, saving_bps, verdict). That is far more specific than a restatement of the name. However, it never positions itself against near-identical siblings such as model_stablecoin_corridor_economics, model_tempo_gas_economics, or run_tempo_fit_diagnostic, so an agent still has to guess which economics model applies.

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?

Chain placement is given (consumes art-34-tempo-fit-diagnostic, output feeds art-37 and art-36) and one hard constraint is stated ('Use synthetic or anonymised inputs only'). But there is no explicit statement of when to pick this tool over the other Tempo/stablecoin economics siblings, and no prerequisites such as whether the upstream diagnostic must be run first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

model_x402_settlementx402 Settlement Cost & Finality ModelerA
Read-onlyIdempotent
Inspect

x402 Settlement Cost & Finality Modeler: OpenChainGraph compute node (settlement_mandate). 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-12-acp-checkout-conformance-validator. Output feeds: art-30-agent-commerce-conformance-validator, art-61-x402-batch-settlement-reconciler, cry-04-merkle-batch-verifier, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-03-x402-settlement-modeler.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: Rail-selection and finality recommendation across x402 (HTTP 402), Stripe USDC, card, ACH, and SWIFT. Outputs: eligible_rails, finality_sec, monthly_cost_usd, per_tx_fee_usd, recommended_rail. Output schema: call describe_tool("model_x402_settlement").

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: amount_usd. Unknown keys are refused.

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/closed-world, so the bar is lower, yet the description adds real context beyond them: transient processing with no storage or logging, the compute:auto/server/browser binding, and an AP2 artifact export carrying execution_hash for provenance. It does not describe rate limits or error behavior, keeping it from 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Much of the text is boilerplate that does not help an agent select or invoke the tool: the full compute-binding paragraph duplicates the schema, and the landing URL plus the long FV-status hash path add noise. The genuinely useful purpose/output content is buried mid-paragraph rather than front-loaded.

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?

There is no output schema, but the description enumerates the return values and explains the artifact it emits, so an agent knows what to expect. Combined with 100% schema coverage and annotations, it is functionally complete, though the absence of a described failure/error shape leaves a minor gap.

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 all four parameters (including nested policy_parameters fields and the compute enum) are already documented. The description restates the compute binding already in the schema and adds no new semantics for parent_hashes or policy_parameters. Baseline 3 is appropriate.

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 Summary line states a specific outcome: rail-selection and finality recommendation across x402, Stripe USDC, card, ACH, and SWIFT, plus named outputs (eligible_rails, finality_sec, monthly_cost_usd, per_tx_fee_usd, recommended_rail). This is far clearer than the name alone. It does not explicitly contrast itself with nearby siblings like classify_settlement_finality or optimize_settlement_capital, so it stops short of a 5.

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 implied by the domain (choose a rail and estimate its cost/finality), and the upstream/downstream artifact lists suggest where it fits in a chain. But there is no explicit when-to-use vs when-not-to-use guidance or named alternative for overlapping tasks such as compare_agentic_rail_protocols or classify_settlement_finality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

optimize_settlement_capitalSettlement-Risk Capital Efficiency OptimizerC
Read-onlyIdempotent
Inspect

Settlement-Risk Capital Efficiency Optimizer: OpenChainGraph compute node (capital_assessment). 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: 503-canton-tokenization-readiness-diagnostic. Open at: https://ainumbers.co/tools/504-settlement-risk-capital-optimizer.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: Quantify RWA and capital saving from Canton atomic DvP vs legacy settlement. Outputs: cet1_ratio, cost_of_capital, portfolio_bps, rows, total_annual_saving, total_capital_freed, total_notional_usd, total_rwa_delta_usd, verdict. Output schema: call describe_tool("optimize_settlement_capital").

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: cet1_ratio, cost_of_capital, positions. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds substantive context beyond them: server vs client execution semantics, transient processing with no storage/logging, the AP2 execution_hash export, and the requirement to use synthetic or anonymised inputs only. This is useful behavioral disclosure, though the FV-status URL receipt language is noisy.

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?

The purpose sentence, the single most important information, sits in the middle behind title restatement, compute-binding mechanics, privacy boilerplate, a hash URL, and an output list. Much of the text (FV-status snapshot language, describe_tool pointer) does not help an agent decide or call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description does enumerate outputs (cet1_ratio, total_capital_freed, verdict, etc.) and disclose compute modes and the provenance export, which covers the essentials. Gaps remain around how policy_parameters.positions must be shaped and what the verdict values mean.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description's mention of 'auto'/'browser' compute and upstream artifact chaining roughly restates the schema without adding new syntax or format detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The actual purpose is stated: 'Quantify RWA and capital saving from Canton atomic DvP vs legacy settlement,' which is a specific verb+resource. However it is buried late in a block of compute-node boilerplate, and nothing distinguishes it from siblings like compute_rwa_scenarios, compute_settlement_efficiency_kpi, or compute_basel31_delta.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to choose this tool over the many adjacent capital/RWA calculators, nor any exclusions. The only routing-adjacent note is 'Consumes upstream artifacts from: 503-canton-tokenization-readiness-diagnostic,' which is provenance, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

optimize_social_security_claim_ageSocial Security Claiming-Age OptimizerB
Read-onlyIdempotent
Inspect

Social Security Claiming-Age Optimizer: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-283-pension-lump-sum-vs-annuity-decision-engine. Open at: https://ainumbers.co/chaingraph/art-282-social-security-claiming-optimizer.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: Models Social Security claiming-age tradeoffs from a claimant's own PIA/FRA statement figures: early-claim reduction and delayed-retirement-credit factors, earnings-test withholding below FRA, lifetime present value at 62/FRA/70/chosen age, and the 62-vs-70 undiscounted break-even age. Outputs: birthYear, breakEvenAge62vs70, claimAge, earningsTestAnnualLimit, earningsTestLimitSource, fullRetirementAge, lifetimePV, longevityAge, monthlyBenefitAtClaimAge, pia, recommendedClaimAge. Output schema: call describe_tool("optimize_social_security_claim_age").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotent/non-destructive/openWorld=false, and the description goes meaningfully beyond them: it explains the server-vs-browser compute modes, that gpu:false kernels run on Cloudflare Workers, that inputs are processed transiently and not stored or logged, that synthetic/anonymised inputs are required, and that an AP2 artifact with execution_hash is exported. The main omission is that browser delegation changes the return shape (a URL instead of a computed result), which is only implied.

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?

The text is dominated by provenance and compliance boilerplate — repeated 'OpenChainGraph compute node' phrasing, a full FV-status hash URL, and an offline-receipt disclaimer — before the useful Summary appears near the end. It is not front-loaded, and several sentences (the FV-status snapshot explanation) contribute nothing to selecting or calling the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a computation node with a nested, under-specified policy_parameters object and no output schema, listing the output fields is genuinely helpful. But the one thing an agent most needs — which keys go inside policy_parameters.claimant and in what units — is absent, and the browser-delegation return shape is left vague.

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 compute/parent_hashes/parent_tool_ids/policy_parameters semantics are already documented in the schema. The description adds some meaning by naming the claimant figures the model consumes and by listing the resulting fields (pia, fullRetirementAge, birthYear, claimAge, longevityAge), which effectively hints at expected policy_parameters keys. However, it never enumerates the concrete policy_parameters property names, so the nested object remains opaque beyond what the schema says.

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 Summary section states a specific verb+resource: it models Social Security claiming-age tradeoffs from a claimant's PIA/FRA figures, computing early-claim reductions, delayed-retirement credits, earnings-test withholding, lifetime PV at 62/FRA/70, and the 62-vs-70 break-even age. That is clearly distinguishable from siblings like compare_pension_lump_sum_annuity or compute_annuity. It loses a point only because the actual purpose is buried after a paragraph of boilerplate about OpenChainGraph compute nodes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to use this tool versus alternatives such as compare_pension_lump_sum_annuity or compute_annuity, nor does it state preconditions (e.g. that the claimant's PIA/FRA statement figures must be on hand). The only routing hint is 'Output feeds: art-283-pension-lump-sum-vs-annuity-decision-engine', which tells the agent what comes next rather than when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oracle_price_aggregationOracle Price AggregationA
Read-onlyIdempotent
Inspect

Oracle Price Aggregation: OpenChainGraph compute node (oracle_price_aggregation). 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. Output feeds: art-561-currency-basket-index. Open at: https://ainumbers.co/chaingraph/art-560-oracle-price-aggregation.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: Computes the aggregate price a decentralized oracle network would publish from a set of individual submissions, under four mechanism-named aggregation rules: median-filtered confidence-weighted mean, stake-weighted median on the frequency convention, three-vote confidence median, and plain median... Outputs: currency_pair, epoch, structural_error, aggregated_price, aggregation_method, aggregate_confidence, submission_count, priced_submission_count, surviving_count, outlier_count, outliers_flagged, outlier_detail, outlier_threshold_pct, price_spread_pct, min_submitted, max_submitted, stale_submissions, fault_tolerance, rejected_inputs, not_proven, fence, prev_print_hash, chain_position. Output schema: call describe_tool("oracle_price_aggregation").

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". Unknown keys are refused.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely new behavioral context: transient processing with no storage/logging, a requirement to use synthetic or anonymised inputs, compute-mode resolution logic, and the AP2 artifact/execution_hash provenance output. That is substantive beyond the annotations, though it omits error/failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the body is bloated with an embedded URL, a long FV-status receipt hash, verbose provenance language, and a 25-field output list. Several sentences (the offline-receipt verification note) do not help an agent decide or invoke the tool.

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?

For a complex compute node with a nested policy_parameters object and no output schema, the description does supply the aggregation semantics, compute binding behavior, provenance output, and a full output field enumeration. It is largely complete, with the main gap being failure/error behavior.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description mentions compute modes and the four aggregation modes but does not add syntax or meaning beyond what the schema fields already provide; baseline 3 is appropriate.

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?

The description names a specific verb and resource ('Computes the aggregate price a decentralized oracle network would publish from a set of individual submissions') and enumerates the four mechanism rules (median-filtered confidence-weighted mean, stake-weighted median, three-vote confidence median, plain median). An agent can distinguish this from siblings like currency_basket_index or the various price_head publishers without opening 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent where the output goes ('feeds: art-561-currency-basket-index') and how compute mode resolves, but it never states when to pick this tool over the many sibling aggregation/compute nodes. The use context is implied rather than contrasted with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

otlp_span_receiptGenerate or verify a per-span OTel receipt bundle over an OTLP/JSON traceAInspect

OTLP span/trace to receipt bundle; does NOT build a ChainGraph (use build_chaingraph for that). Three modes, chosen by which input is supplied. (1) Pass trace alone to GENERATE a receipt bundle: a per-span receipt (span digest, parent-span receipt digest, semconv_snapshot, eddsa-jcs-2022 signature over an ephemeral did:key) for every span, plus a Merkle-rooted (RFC 6962) trace receipt. (2) Pass bundle ({trace, span_receipts, trace_receipt, issuer_did}) to VERIFY it: recomputes every digest, walks the parent-receipt chain, rebuilds the Merkle root, and reports which spans are attested, unattested, or tampered. (3) Pass run_chain_result (the structuredContent from run_chain) instead of trace to bridge a ChainGraph chain run into an OTLP trace first -- one execute_tool span per successfully-executed step, each carrying its own execution_hash as a span attribute (ocg.execution_hash) -- then generates the same receipt bundle over it. Byte-identical receipt engine to tools/566-otel-span-receipt-verifier.html -- a human's browser-generated bundle and this tool's output interoperate on the exact same wire shape.

NameRequiredDescriptionDefault
traceNoAn OTLP/JSON trace document to generate a receipt bundle over. Omit if passing bundle or run_chain_result.
bundleNo{trace, span_receipts[], trace_receipt, issuer_did} to VERIFY instead of generate.
serviceNoresource service.name to stamp when bridging run_chain_result into a trace. Defaults to "ainumbers-chaingraph-worker".
run_chain_resultNoThe structuredContent object returned by run_chain (must include chain and steps[]) -- bridges the chain run into an OTLP trace, then generates a receipt bundle over it.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare safety/idempotency flags, and the description adds real behavioral substance: eddsa-jcs-2022 signatures over an ephemeral did:key, RFC 6962 Merkle rooting, and verification that recomputes digests, walks the parent-receipt chain, and classifies spans as attested/unattested/tampered. It does not contradict the annotations — generating a signed bundle with an ephemeral key is consistent with readOnlyHint=false and idempotentHint=false — but it omits error behavior for malformed traces and any size/rate limits on large spans.

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?

Front-loaded with the purpose and the negative disambiguation, then cleanly numbered by mode. It is long and dense — internal details like semconv_snapshot and the browser-tool parity sentence could be trimmed — but each sentence still carries selection-relevant 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?

There is no output schema, yet the description specifies the return shape twice: the bundle's fields ({trace, span_receipts, trace_receipt, issuer_did}) and the per-span receipt contents, plus what the verify mode reports. For a four-parameter, nested-object tool with no required arguments, nothing material 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?

Schema coverage is 100%, so the schema already documents all four parameters and the baseline is 3. The description goes beyond that by explaining that the presence of `trace`, `bundle`, or `run_chain_result` is a mode selector rather than a plain argument, which is behavior the schema's per-parameter prose does not convey; `service` is left to the schema.

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 concrete verb set and resource: convert an OTLP span/trace into a per-span receipt bundle, or verify an existing bundle. It also names the sibling it must not be confused with (build_chaingraph) and the exact reason to choose one over the other, so an agent can disambiguate without reading either 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?

Usage is fully enumerated as three numbered modes selected by which input is supplied: `trace` alone to generate, `bundle` to verify, `run_chain_result` to bridge a chain run first. Each mode has an explicit condition and explicit alternative, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

otlp_validateValidate an OTLP/JSON trace for structure + gen_ai conformanceA
Read-onlyIdempotent
Inspect

Structurally validates an OTLP/JSON trace (resourceSpans -> scopeSpans -> spans: hex traceId/spanId shape, quoted nanosecond timestamps, parent-span references, time ordering) and checks every gen_ai span's attributes against a pinned gen_ai semantic-convention attribute snapshot (the upstream open-telemetry/semantic-conventions-genai namespace ships zero tagged releases, so this is a dated pin, stamped as semconv_snapshot in the result -- expect it to drift as the upstream spec moves). Byte-identical lint engine to tools/556-otlp-genai-span-composer-linter.html.

NameRequiredDescriptionDefault
traceYesAn OTLP/JSON trace document: { resourceSpans: [{ scopeSpans: [{ spans: [...] }] }] }.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds useful context beyond annotations by disclosing the pinned semconv snapshot, its drift risk, and that the snapshot is stamped in the result as semconv_snapshot.

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?

The core purpose and validation scope are front-loaded in a dense but efficient way. The upstream-release caveat is useful, though the byte-identical engine reference is less essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The input schema and annotations are well covered, and the description explains the validation scope. However, with no output schema, the description only mentions one result field and does not explain the overall return shape, error format, or severity model.

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% and there is only one required parameter, so the baseline is 3. The description adds meaningful semantics by enumerating the trace checks: hex traceId/spanId shape, quoted nanosecond timestamps, parent-span references, and time ordering.

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 and resource: validates an OTLP/JSON trace and checks gen_ai span attributes. The purpose is clear, but it does not explicitly distinguish itself from related sibling tools such as otlp_span_receipt or lint_trace_cat_reports.

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 description makes the use case inferable: validate OTLP/JSON structure and gen_ai semantic-convention conformance. However, it gives no explicit when-to-use guidance, exclusions, or comparison to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pain001_validateValidate a pain.001.001.09 message against the schema-subset tableA
Read-onlyIdempotent
Inspect

Validates a pain.001.001.09 customer credit transfer initiation XML document against the same hand-derived schema-subset table as the tools/555 browser validator -- structural (mandatory fields), facet (IBAN mod-97, BIC format, ISO 4217 currency, decimal/date patterns), and batch-total cross-checks (NbOfTxs vs. actual transaction count, CtrlSum vs. sum of InstdAmt). Byte-identical error set to the browser tool for the same input. Subset validation, not full XSD conformance -- prepare/validate only, never transmits or generates a live payment message.

NameRequiredDescriptionDefault
xmlYespain.001.001.09 XML document text to validate.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds substantial behavioral context beyond annotations: the specific checks performed (IBAN mod-97, BIC format, ISO 4217, batch-total cross-checks), that errors are byte-identical to the browser tool, and that it never transmits or generates a payment message. This is rich, useful detail.

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?

The description is a single, dense sentence followed by a clarifying sentence, front-loading the core purpose. It is efficient but somewhat run-on; every clause carries information, though the structure could be slightly more scannable.

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?

Given the tool's moderate complexity, one input parameter, and no output schema, the description covers validation scope, behavioral constraints, and error fidelity. It does not explicitly describe the return format (e.g., error list structure), but the mention of 'byte-identical error set' implies error reporting, making it largely complete.

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% for the single 'xml' parameter, and the description adds no additional syntax or format guidance beyond what the schema provides. With the schema doing the heavy lifting, the baseline score of 3 is appropriate.

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?

The description states a specific verb (Validates) and resource (pain.001.001.09 customer credit transfer initiation XML document), and it details the exact validation scope (structural, facet, batch-total checks) plus what it is not (full XSD conformance, never transmits). This clearly distinguishes it from generic validate_* siblings.

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?

The description clarifies usage context—prepare/validate only, never transmits or generates a live payment message—which implicitly guides when to use it. However, it does not explicitly name alternatives or state when not to use it (e.g., when full XSD validation is needed instead).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_camt053_reconciliationISO 20022 camt.053 Statement ReconciliationB
Read-onlyIdempotent
Inspect

ISO 20022 camt.053 Statement Reconciliation: OpenChainGraph compute node (analytics_mandate). 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. Output feeds: art-263-score-cash-forecast-accuracy. Open at: https://ainumbers.co/chaingraph/art-258-parse-camt053-reconciliation.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: Classifies ISO 20022 camt.053 BkTxCd entries by Domain, Family, and SubFamily per the CGI-MP camt.053 Usage Guide v5.0 and the ISO 20022 ExternalBankTransactionCode1Code registry 2023-03. Outputs: balance_equation_passes, bucket_amounts, calculated_closing, closing_balance, credit_sum, day_count_convention, debit_sum, match_rate_pct, not_legal_advice, opening_balance, pii_note, reconciliation_status, regulatory_basis, structured_count, table_source, table_version, total_transactions, tx_counts_by_bucket, unstructured_count, variance. Output schema: call describe_tool("parse_camt053_reconciliation").

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: closing_balance, day_count_convention, opening_balance, transactions. Unknown keys are refused.

TDQS

B3.2/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, and the description still adds real substance: transient server-side processing with no storage or logging, browser delegation semantics for compute modes, and AP2 artifact emission with execution_hash for provenance chaining. It stops short of describing failure modes or what happens when the balance equation fails.

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?

The classification basis and compute-mode behaviour are front-loaded and earn their place, but they are buried under boilerplate: OpenChainGraph node framing, a raw FV-status SHA-256 URL, and a twenty-field 'Outputs:' keyword dump including fields like not_legal_advice and pii_note. Substantial trimming is possible without losing agent-relevant information.

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?

With no output schema, the description compensates by enumerating the returned reconciliation metrics (balance_equation_passes, match_rate_pct, reconciliation_status, variance), and the 4 fully-documented parameters plus provenance chaining guidance make it callable. What is missing is what happens when reconciliation_status is negative.

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 baseline of 3 applies; the schema already documents compute, parent_hashes, parent_tool_ids and the policy_parameters members. The description's 'compute:"auto" defaults to server for gpu:false nodes' line echoes the enum docs rather than adding new meaning about individual parameters.

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 description gives a specific verb+resource pair ('Classifies ISO 20022 camt.053 BkTxCd entries by Domain, Family, and SubFamily') and the reconciliation outputs, so an agent knows it parses and reconciles camt.053 statements. It never distinguishes itself from the sibling 'camt053_parse', so the agent must guess which of the two parsers to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance and no mention of when NOT to use this tool or of which sibling to prefer. The only usage-flavoured sentences cover compute mode defaults and the 'use synthetic or anonymised inputs only' constraint, which is input hygiene rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_aml_disposition_sampleAML Disposition Sampling Frame BuilderB
Read-onlyIdempotent
Inspect

AML Disposition Sampling Frame Builder: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-471-disposition-sampling-frame.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: Builds a deterministic sampling frame over an AML consent-order lookback's historical alert dispositions for independent-validator review, plus a reviewer workload allocation. Outputs: confidence_level, disposition_population_hash, disposition_population_size, expansion_factor, expected_deviation_rate, interval, method, reviewer_roster, reviewer_workload, sample_size, selected_indices, start_offset, tolerable_deviation_rate. Output schema: call describe_tool("plan_aml_disposition_sample").

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: confidence_level, disposition_population_hash, disposition_population_size, expected_deviation_rate, population_hash, population_size, reviewer_roster, tolerable_deviation_rate. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower; the description still adds real value by disclosing that inputs are processed transiently and not stored or logged, that synthetic/anonymised inputs are required, and that the export is an AP2 artifact carrying execution_hash for chain provenance. The compute auto/server/browser delegation semantics add further behavioural context, though they largely restate the compute parameter's own schema text.

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?

The description is dominated by boilerplate that does not help tool selection: a compute-node preamble, a full FV-status hash URL, an offline-receipt reassurance sentence, and a documentation URL. The genuinely useful Summary sentence appears only after all of that, so the content is back-loaded and bloated rather than front-loaded.

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?

Given a nested policy_parameters object and no output schema, the description compensates well by enumerating the twelve returned fields (sample_size, selected_indices, method, reviewer_workload, etc.) and by stating the required policy parameters. What is missing is how the sample relates to upstream dispositions and whether chaining via parent_hashes is optional.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters object including its required keys. The description adds no syntax, ranges, or format details for any of those, so it sits at the baseline the schema earns on its own.

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 Summary sentence gives a specific verb and resource: it builds a deterministic sampling frame over an AML consent-order lookback's historical alert dispositions plus a reviewer workload allocation. That is far more specific than the title alone. However, it never distinguishes itself from near-neighbours such as plan_attribute_sample, compute_isa530_audit_sampling_mus, or roll_up_aml_lookback_disposition, and the actual purpose statement is buried after several sentences of infrastructure boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit statement of when to pick this tool over the sampling siblings, nor prerequisites or downstream steps. The only guidance-like content is a data-handling constraint ('Use synthetic or anonymised inputs only') and compute-mode mechanics. An agent must infer applicability from the one-line summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_attribute_sampleAttribute Sampling Plan GeneratorA
Read-onlyIdempotent
Inspect

Attribute Sampling Plan Generator: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-458-attribute-sampling-plan.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: Computes a SOX 404 / ICFR attribute-sampling plan from confidence level, tolerable deviation rate, and expected deviation rate (all policy inputs) using the standard zero-EDR Poisson attribute-sampling formula with an expansion factor for nonzero EDR. Outputs: confidence_level, expansion_factor, expected_deviation_rate, interval, method, population_hash, population_size, sample_size, selected_indices, start_offset, tolerable_deviation_rate. Output schema: call describe_tool("plan_attribute_sample").

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: confidence_level, expected_deviation_rate, population_hash, population_size, tolerable_deviation_rate. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a read-only, idempotent, non-destructive, closed-world operation, but the description goes further: compute-mode behavior (server kernel vs. browser delegation URL, gpu:true always delegates), transient processing with no retention, and export of an AP2 artifact carrying execution_hash for chain provenance. It does not cover failure/error behavior or what happens with unregistered kernels.

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?

Substantive content is buried behind title restatement, duplicated compute-mode boilerplate already in the schema, a raw FV-status hash URL, and a self-referential 'call describe_tool' instruction. The one genuinely useful sentence (the formula and outputs summary) arrives last.

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?

For a deterministic compute node with a nested policy_parameters object and no output schema, the description supplies the method, the full output field list, and provenance/export semantics. Gaps remain around validation failure modes and whether inputs are echoed back in the artifact.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters object including the required-key list. The description adds some meaning by framing the three rates as 'policy inputs' and tying them to the sampling formula, but adds nothing about population_hash/population_size beyond what the schema states.

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 summary paragraph names a specific verb and resource — computing a SOX 404 / ICFR attribute-sampling plan — and even names the formula family (zero-EDR Poisson with an expansion factor for nonzero EDR). It does not, however, distinguish itself from close siblings such as compute_isa530_audit_sampling_mus or plan_aml_disposition_sample, which an agent would need to choose between.

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 the regulatory context (SOX 404 / ICFR sampling plan) and the constraint 'Use synthetic or anonymised inputs only'. There is no explicit when-to-use/when-not, and no routing to alternative sampling-plan tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_tls_pki_migrationTLS / X.509 PKI Migration PlannerA
Read-onlyIdempotent
Inspect

TLS / X.509 PKI Migration Planner: OpenChainGraph compute node (compliance_mandate). 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-85-pqc-timeline-fit-diagnostic, 499-crypto-asset-inventory-classifier. Output feeds: cry-04-merkle-batch-verifier, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-86-tls-pki-migration-planner.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: Sequences TLS and X.509 PKI migration from RSA/ECDSA to post-quantum algorithms (ML-KEM/ML-DSA per NIST FIPS 203/204 Aug 2024). Outputs: algorithm_refs, estimated_total_weeks, interop_risks, inventory_ref, migration_plan, note, payload_impact_bytes, pki_summary, reference_version, rollback_points, strategy. Output schema: call describe_tool("plan_tls_pki_migration").

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". Unknown keys are refused.

TDQS

A3.5/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), yet the description adds real behavior: compute:"browser" returns a delegation URL instead of computing, gpu:true nodes always delegate, and inputs are processed transiently and not stored or logged. It also states that an AP2 artifact with execution_hash is exported. This is genuine added context, though much of it reads as reusable boilerplate across the tool family.

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?

The description repeats the title verbatim, then leads with compute-node platform boilerplate, a full FV-status receipt hash and URL, and a pointer to describe_tool before reaching the one sentence that actually says what the tool does. The critical purpose sentence is last, and several clauses (execution provenance hash, offline receipt verification) do not help an agent decide or call correctly.

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?

For a tool with no output schema, the description compensates by enumerating the returned fields (migration_plan, rollback_points, interop_risks, estimated_total_weeks, etc.), so an agent knows what to expect. Parameters are largely covered by the schema. The remaining gap is the undocumented structure of policy_parameters and the absence of any note about required inputs given zero required parameters.

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 top-level parameters are already documented; the description adds nothing beyond the schema for compute/parent_hashes. More importantly, the nested policy_parameters keys (pki, inventory_ref, migration_strategy, interop_constraints) are bare objects in the schema, and the description never explains their shape or expected values — the one place additional prose would have helped.

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 'Summary' sentence gives a precise verb+resource: sequencing TLS/X.509 PKI migration from RSA/ECDSA to ML-KEM/ML-DSA, with named standards (FIPS 203/204). The upstream/downstream artifact IDs (art-85, cry-04, cry-05) implicitly separate it from diagnostics like run_pqc_timeline_fit or compute_pqc_deadline_ladder, but no sibling is named explicitly and the actual purpose statement is buried at the very end of a long preamble.

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 context is only implied through the 'Consumes upstream artifacts from' / 'Output feeds' chain, which does tell an agent roughly where this sits in a pipeline. There is no explicit when-to-use statement and no guidance on choosing this over run_pqc_timeline_fit, compute_pqc_deadline_ladder, or classify_blockchain_quantum_risk, which all appear adjacent in scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

precheck_reserve_attestationGENIUS Act Reserve Attestation Pre-CheckA
Read-onlyIdempotent
Inspect

GENIUS Act Reserve Attestation Pre-Check: OpenChainGraph compute node (attestation_mandate). Regulatory deadline: 2027-01-01 (GENIUS Act effective ≤ January 2027; monthly reserve reports + annual PCAOB audit (>$50B issuers); FDIC NPRM April 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. Output feeds: ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-06-genius-act-reserve-attestation.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: 1:1 reserve coverage, reserve-composition eligibility against GENIUS Act permitted-asset classes, monthly reserve-report figures against AICPA 2025 Criteria for CEO/CFO certification. Outputs: aicpa_2025_score_pct, applicable_deadline, asset_results, attestation_readiness_determination, conditional_assets_usd, coverage_ratio_pct, failing_dimensions, prohibited_assets_usd, regulatory_framework, reserve_shortfall_usd, total_liabilities_usd, total_reserves_usd, warnings. Output schema: call describe_tool("precheck_reserve_attestation").

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: aicpa_answers, assets, outstanding_tokens. Unknown keys are refused.

TDQS

A3.8/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 the description adds real behavioral context beyond them: compute:"auto" runs server-side on Workers for gpu:false nodes, compute:"browser" returns a delegation URL, gpu:true nodes always delegate, and inputs are processed transiently without storage or logging. It also discloses the AP2 artifact with execution_hash. Minor gap: nothing on error behavior or what a partial/unready determination looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the body carries substantial bloat: 'OpenChainGraph compute node' is stated twice, and a long FV-status hash/URL paragraph plus regulatory-deadline detail crowd out the operational info. The outputs list is useful, but several sentences do not earn their place in a description the agent must parse before calling.

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?

With no output schema, the description compensates by enumerating the return keys (coverage_ratio_pct, reserve_shortfall_usd, attestation_readiness_determination, failing_dimensions, etc.), the privacy model, and the compute delegation behavior. For a nested 4-parameter regulated computation, this is close to complete; only interpretation of the determination values 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 coverage is 100%, so the schema already documents compute modes, parent_hashes/parent_tool_ids chaining, and the policy_parameters block. The description restates the compute semantics but adds nothing on the shape of assets, aicpa_answers, or issuer_type, which remain opaque even in the schema. Baseline 3 is appropriate.

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?

The description names a specific verb+resource (pre-check of GENIUS Act reserve attestation) and enumerates the exact determinations produced: 1:1 reserve coverage, reserve-composition eligibility against permitted-asset classes, and monthly report figures scored against AICPA 2025 criteria. This is distinguishable from siblings like check_genius_reserve_disclosure or recompute_stablecoin_reserve_3source at a glance.

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: the regulatory deadline context and the note that output feeds ptg-01-ap2-prompt-template-generator suggest where it sits in a workflow. There is no explicit statement of when to use this versus the several reserve-disclosure siblings (check_genius_reserve_disclosure, check_mica_reserve_disclosure, verify_proof_of_reserves_consistency), leaving the agent to infer from names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

predict_settlement_failSettlement-Fail PredictorB
Read-onlyIdempotent
Inspect

Settlement-Fail Predictor: OpenChainGraph compute node (model_governance). 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-77-t1-settlement-readiness-diagnostic, art-80-ssi-conformance-checker. Output feeds: art-84-settlement-efficiency-kpi, cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-79-settlement-fail-predictor.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: Scores a trade's fail probability from anonymized configuration features (SSI match status, instrument liquidity tier, counterparty fail-history band, deadline proximity, partial-settlement availability) and ranks a batch for pre-settlement intervention. Outputs: batch_fail_rate_estimate, methodology, note, scored_trades, top_drivers, trade_count. Output schema: call describe_tool("predict_settlement_fail").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the bar is lower; the description still adds real context: deterministic execution, transient processing with no storage/logging/retention, and an exported AP2 artifact carrying execution_hash for chain provenance. It does not describe latency, batching limits, or what 'still-trusted' FV status implies operationally, keeping it below 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The load-bearing sentence is buried at the end under 'Summary:', behind generic boilerplate about Cloudflare Workers, GPU kernels, FV-status URLs, and 'call describe_tool(...)'. Structurally it is back-loaded and full of content an agent must sift through, though the individual sentences are not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Outputs are enumerated (batch_fail_rate_estimate, methodology, note, scored_trades, top_drivers, trade_count) even without an output schema, and chaining/data-handling are covered. The significant gap is the core input: nothing explains what the 'trades' entries inside policy_parameters must contain for the scoring function.

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 compute/parent_hashes/parent_tool_ids/policy_parameters fields are already documented and the baseline is 3. The description adds only indirect hints about the contents of policy_parameters.trades (the listed feature names), and says nothing about the required shape of a trade record.

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 trailing 'Summary' gives a precise verb+resource: scores a trade's fail probability from named features (SSI match, liquidity tier, fail-history band, deadline proximity, partial-settlement availability) and ranks a batch for intervention. That distinguishes it from siblings like recompute_tmpg_fails_charge or check_ssi_conformance, though the wall of compute-node boilerplate preceding it means an agent must read to the very end to learn what the tool does.

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 context is implied rather than stated: 'Consumes upstream artifacts from art-77…, art-80…' and 'Output feeds art-84…, cry-04…' sketch pipeline position, and 'Use synthetic or anonymised inputs only' is an explicit input constraint. But there is no explicit when-to-use/when-not or named alternative, and the compute-mode routing guidance lives in the schema rather than the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prevalidation_readiness_scorerCross-Border Payment Prevalidation Readiness ScorerA
Read-onlyIdempotent
Inspect

Cross-Border Payment Prevalidation Readiness Scorer: OpenChainGraph compute node (compliance_mandate). 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-243-purpose-code-requirement-checker. Open at: https://ainumbers.co/chaingraph/art-247-prevalidation-readiness-scorer.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: Aggregate CBPR+ pre-validation readiness check for a single pacs.008 payment instruction. Outputs: cbpr_plus_deadline, chain_gate_note, check_details, checks_passed, checks_total, pii_note, readiness_pct, ready, regulatory_basis, remediation_actions, table_source, table_version. Output schema: call describe_tool("prevalidation_readiness_scorer").

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: address_building_number, address_country, address_lines, address_post_code, address_street_name, address_town_name, bic, iban, lei, uetr. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe read-only/idempotent profile, but the description adds genuinely new behavior: compute modes with a browser delegation URL for gpu:true nodes, transient processing with no storage or logging, and export of an AP2 artifact carrying execution_hash for chain provenance. It also states the FV-status receipt is an offline-verifiable snapshot. The only real gap is that the scoring thresholds themselves are not described.

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?

The description is dominated by boilerplate about the compute binding, a documentation URL, and a long FV-status hash that an agent cannot use to select or invoke the tool. The actual purpose is buried in the final 'Summary' sentence after paragraphs of infrastructure detail. Substantial trimming would improve it without losing invocation-relevant information.

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?

With no output schema, the description compensates by enumerating the returned fields (readiness_pct, ready, checks_passed/total, remediation_actions, regulatory_basis, etc.), which is exactly what an agent needs to interpret results. Chaining inputs and privacy constraints are covered. What remains thin is the decision logic behind 'ready' and how readiness_pct is computed.

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 description's compute-mode paragraph restates what the compute enum description already says nearly word for word. Its one real addition is telling the agent which upstream artifact to chain from, which is relevant to parent_hashes/parent_tool_ids. Baseline 3 is appropriate when the schema does the heavy lifting.

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 summary line identifies a specific verb and resource: an aggregate CBPR+ pre-validation readiness check for a single pacs.008 payment instruction, producing readiness_pct/ready. It also names the upstream artifact it consumes (art-243-purpose-code-requirement-checker), which separates it from leaf checks like validate_pacs008_party_completeness. The opening repeats the title verbatim, so the real purpose only arrives in the Summary sentence.

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 implied by 'aggregate ... for a single pacs.008 payment instruction' and the instruction to use synthetic or anonymised inputs only. There is no statement of when to call this instead of the many sibling checks (lint_cbpr_structured_address, validate_pacs008_party_completeness, check_purpose_code_requirement), nor any prerequisite conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

price_embedded_insuranceEmbedded Insurance Pricing ModellerB
Read-onlyIdempotent
Inspect

Embedded Insurance Pricing Modeller: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-366-price-embedded-insurance.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: Embedded-insurance unit economics for a platform attaching per-transaction coverage: per-transaction premium, monthly/annual gross written premium, net written premium after reinsurance cession, expected losses, commission and opex cost, underwriting profit, combined ratio, expense ratio, and bre... Outputs: annual_gwp, breakeven_loss_ratio_pct, combined_ratio_pct, commission_cost, expected_losses, expense_ratio_pct, monthly_gwp, net_written_premium, note, opex_cost, per_tx_premium, underwriting_profit. Output schema: call describe_tool("price_embedded_insurance").

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". Unknown keys are refused.

TDQS

B3.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), yet the description adds real behavioral context: deterministic execution, server-side vs. browser delegation by compute mode and gpu flag, transient processing with no retention or logging, and an AP2 artifact export carrying execution_hash for chain provenance. The 'bre...' truncation and the opaque FV-status receipt add noise rather than transparency.

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?

The payload opens with redundant boilerplate ('OpenChainGraph compute node (analytics_mandate). Deterministic OpenChainGraph compute node.'), embeds a long provenance URL and a 64-character FV-status hash, and truncates the actual domain summary mid-word at 'bre...'. The informative content is buried rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Absent an output schema, the description does enumerate the twelve return fields, which is genuinely useful. But it leaves the pricing inputs (the eight nested policy_parameters keys) unexplained, so an agent knows what comes out yet not what must go in, which is a significant gap for a quantitative modeller.

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 compute, parent_hashes and parent_tool_ids; the description's compute-mode text merely restates the enum. The policy_parameters object's eight fields (opex_pct, reins_pct, premium_pct, loss_ratio_pct, etc.) are undocumented in both places, and the description gives no units, ranges, or defaults for them.

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 Summary sentence states a specific verb and resource: unit economics for embedded insurance attaching per-transaction coverage, and enumerates the computed metrics (GWP, NWP, expected losses, commission, opex, underwriting profit, combined ratio). The purpose is clear once found, but it sits behind generic compute-node boilerplate and never distinguishes itself from adjacent pricing tools such as calculate_claims_stp_economics or compute_mlr_rebate.

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 description never says when to choose this tool over a sibling, nor does it set exclusions. The only guidance offered is the privacy constraint 'Use synthetic or anonymised inputs only' and the compute-mode selection rules, which are usage hints rather than tool-selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prove_metadata_sanitizationMetadata Sanitization ProverB
Read-onlyIdempotent
Inspect

Metadata Sanitization Prover: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-191-conversion-receipt-builder. Open at: https://ainumbers.co/chaingraph/art-193-metadata-sanitization-prover.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: Produces a proof-of-sanitization record binding the original digest to the findings removed, redacted, or retained and to the sanitized digest, with a deterministic residual-risk analysis by file type (JPEG COM segments, PNG textual chunks, PDF and DOCX XMP and embedded-object metadata). Outputs: residual_risks, sanitization_record, verdict. Output schema: call describe_tool("prove_metadata_sanitization").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered; the description adds genuinely new behavioural context: deterministic kernel execution, server-vs-browser delegation semantics, transient non-retained processing, and an exported AP2 artifact with execution_hash for chain provenance. The FV-status snapshot caveat ('a snapshot, not a subscription; verifies offline') is useful honesty about verification. It stops short of 5 because return shape and error behaviour are deferred to describe_tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual purpose sentence is buried after compute-binding boilerplate, so the definition is not front-loaded on what makes it distinct. Several sentences (compute mechanics, FV-status URL) are long and procedural. Nothing is pure filler, but the ordering works against fast selection.

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?

With no output schema, the description compensates by naming the three outputs (residual_risks, sanitization_record, verdict) and the artifact type it exports. Execution semantics, data-retention posture, and the coverage scope (JPEG COM, PNG textual chunks, PDF/DOCX XMP) are all present. The main omission is input prerequisites and failure modes.

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 nominally 100%, so the baseline is 3, and the compute-mode text largely restates the enum description already in the schema. The description does add meaning for the undocumented nested policy_parameters keys by naming the conceptual inputs (findings, original digest, sanitized digest), but parent_hashes/parent_tool_ids ordering and the required matching between the two arrays are left to the schema.

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 description does state a specific verb and resource: produces a proof-of-sanitization record binding the original digest to findings removed/redacted/retained and to the sanitized digest, with deterministic residual-risk analysis by file type. That is concrete and testable. It does not explicitly differentiate itself from near neighbours such as validate_nft_metadata_art209 or the broader evidence-pack builders, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to reach for this tool versus alternatives; the only guidance is an input-safety constraint ('Use synthetic or anonymised inputs only') and the compute-mode mechanics. The downstream pointer ('Output feeds: art-191-conversion-receipt-builder') hints at pipeline position but is not usage guidance. An agent must infer fit from the summary alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_fund_nav_headPublish Fund NAV HeadA
Read-onlyIdempotent
Inspect

Publish Fund NAV Head: OpenChainGraph compute node (attestation_mandate). 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-373-recompute-fund-nav. Open at: https://ainumbers.co/chaingraph/art-659-publish-fund-nav-head.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: Publishes one SPEC.md §HEAD-1 head-commit publication event for a tokenized fund's daily-NAV stream, so a fund's NAV-per-share history (art-373-recompute-fund-nav results) becomes a sequence-numbered, signer-continuous chain instead of a series of unlinked artifacts a reviewer must independently... Outputs: chain_errors, chain_valid, chain_verified_by, errors, fence, head_hash, is_genesis, not_proven, prev_head_hash, regulatory_framework, root, rotates_to, seq, signature_valid, signature_verified_by, signer, stream, structural_error, timestamp. Output schema: call describe_tool("publish_fund_nav_head").

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: chain_verification, head, prior_head, signature_verification. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavior: compute mode auto/server/browser routing on Cloudflare Workers vs browser delegation, gpu:true always delegating, transient input handling with no storage/logging, and export of an AP2 artifact carrying execution_hash. The truncated summary sentence and the unexplained FV-status receipt URL are the only weak spots.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the body is padded with compute-binding boilerplate that duplicates the schema, a raw FV-status URL, a JSON filename, page URL, and a long flat outputs list. The summary sentence is also cut off mid-thought ('a reviewer must independently...'), which is dead weight rather than information.

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?

For a 4-parameter nested-schema tool with no output schema, the description supplies the return field names (chain_valid, head_hash, seq, prev_head_hash, signer, is_genesis, rotates_to, etc.), the upstream artifact dependency, and the AP2 export behavior. What is missing is enough clarity on the policy_parameters contract and on what a chain_invalid result means operationally.

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%, so the compute enum and parent_hashes/parent_tool_ids are already documented; the description mostly restates the compute binding. It adds a little by framing parent artifacts as 'upstream ChainGraph AP2 artifacts to chain from' via art-373, but it says nothing about the four required policy_parameters keys (head, prior_head, chain_verification, signature_verification). 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 and resource: publishes one SPEC.md §HEAD-1 head-commit publication event for a tokenized fund's daily-NAV stream, chaining art-373-recompute-fund-nav results into a sequence-numbered, signer-continuous chain. This implicitly separates it from publish_index_head / publish_market_mark_head / publish_model_risk_head by domain, but never names those siblings explicitly.

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?

It states that it consumes upstream artifacts from art-373-recompute-fund-nav, which implies the tool is used after that recompute step. However, there is no explicit when-to-use / when-not-to-use guidance, no mention of the sibling publish_*_head tools, and no statement of what to do if art-373 has not been run.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_index_headPublish Index HeadA
Read-onlyIdempotent
Inspect

Publish Index Head: OpenChainGraph compute node (attestation_mandate). 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-646-compile-rebalance-evidence-pack, art-647-record-index-correction. Open at: https://ainumbers.co/chaingraph/art-658-publish-index-head.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: Publishes one SPEC.md §HEAD-1 head-commit publication event for an index or benchmark's per-stream publication history, so an index administrator's published history (art-646-compile-rebalance-evidence-pack results, or art-647-record-index-correction events) becomes a sequence-numbered, signer-co... Outputs: chain_errors, chain_valid, chain_verified_by, errors, fence, head_hash, is_genesis, not_proven, prev_head_hash, regulatory_framework, root, rotates_to, seq, signature_valid, signature_verified_by, signer, stream, structural_error, timestamp. Output schema: call describe_tool("publish_index_head").

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: chain_verification, head, prior_head, signature_verification. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: determinism, transient processing with no storage/logging/retention, synthetic-inputs-only constraint, server-vs-browser delegation rules including the gpu:true always-delegate case, and the emitted AP2 artifact with execution_hash. This is substantive behavioral context the readOnly/idempotent hints cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a clear purpose sentence, but the body is a dense boilerplate dump: a bare HTML URL, a full FV-status JSON path, and a truncated fragment ('signer-co...') that suggests mechanical generation. Much of it earns its place; the URL/receipt path and truncation do not.

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?

No output schema exists, but the description enumerates the returned fields (head_hash, prev_head_hash, seq, signer, signature_valid, chain_errors, etc.) and points to describe_tool for the full schema, which is adequate for a 4-param, nested-object tool.

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 description coverage is 100%, so the baseline is 3. The description still adds value by tying parent_hashes/parent_tool_ids to the named upstream artifacts and explaining that policy_parameters are computed server-side for kernel-registered nodes when compute is auto/server.

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 and resource: 'Publishes one SPEC.md §HEAD-1 head-commit publication event for an index or benchmark's per-stream publication history.' The index/benchmark qualifier implicitly separates it from siblings like publish_fund_nav_head and publish_market_mark_head, though those siblings are never named.

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?

It names the upstream artifacts it consumes (art-646-compile-rebalance-evidence-pack, art-647-record-index-correction) and gives compute-mode selection rules, which is real usage context. But it never says when to pick this over publish_fund_nav_head/publish_market_mark_head/publish_model_risk_head, nor any when-not conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_market_mark_headPublish Market Mark HeadA
Read-onlyIdempotent
Inspect

Publish Market Mark Head: OpenChainGraph compute node (attestation_mandate). 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-560-oracle-price-aggregation. Open at: https://ainumbers.co/mcp.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: Publishes one SPEC.md §HEAD-1 head-commit publication event for a market's mark-price print stream (stream = "mark::"), so a series of art-560-oracle-price-aggregation prints for the same pair becomes a sequence-numbered, signer-continuous chain instead of a set of unlinked artifacts... Outputs: chain_errors, chain_valid, chain_verified_by, errors, fence, head_hash, is_genesis, not_proven, prev_head_hash, regulatory_framework, root, rotates_to, seq, signature_valid, signature_verified_by, signer, stream, structural_error, timestamp. Output schema: call describe_tool("publish_market_mark_head").

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: chain_verification, head, prior_head, signature_verification. Unknown keys are refused.

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, and the description adds genuinely new behavioral context: inputs are processed transiently and not stored, logged or retained; gpu:true nodes always delegate to a browser URL; and the tool exports an AP2 artifact carrying execution_hash. These are consistent with the annotations rather than contradicting them.

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?

The definition is bloated with repeated "OpenChainGraph compute node" framing, a long FV-status URL and receipt disclaimer, and a trailing output-field dump. The single most important sentence, what the tool actually publishes, sits mid-paragraph after generic compute-mode boilerplate, so it is poorly front-loaded.

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?

For a chained-attestation compute node, the description supplies the stream naming convention, the upstream artifact dependency, compute routing behavior, and an enumeration of output fields, with a pointer to describe_tool for the schema. It is close to complete, with minor gaps around the policy_parameters contract.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description adds only the upstream-artifact linkage (which explains what parent_hashes should be filled with) and does not clarify the required policy_parameters keys (chain_verification, head, prior_head, signature_verification), leaving this at baseline.

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 description names a specific verb and resource: publishing one HEAD-1 head-commit event for a market's mark-price print stream (stream = "mark:<venue>:<pair>"), converting a series of art-560-oracle-price-aggregation prints into a sequence-numbered, signer-continuous chain. That distinguishes it from siblings like publish_index_head or publish_fund_nav_head. The purpose is clear but arrives after several sentences of compute-node boilerplate.

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 binding to "art-560-oracle-price-aggregation" upstream artifacts implies when this tool is appropriate, and the compute:"auto" vs "browser" routing is explained. However there is no explicit when-to-use/when-not statement relative to the other publish_*_head siblings, leaving the agent to infer the selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_model_risk_headPublish Model Risk HeadA
Read-onlyIdempotent
Inspect

Publish Model Risk Head: OpenChainGraph compute node (attestation_mandate). 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-453-model-validation-status, art-489-model-test-battery, art-562-compile-model-risk-lineage-pack. Open at: https://ainumbers.co/chaingraph/art-649-publish-model-risk-head.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: Publishes one SPEC.md §HEAD-1 head-commit publication event for a model's revalidation-history stream, so a model's validation history (art-453/art-489 results, or art-562/art-648 lineage artifacts) becomes a sequence-numbered, signer-continuous chain instead of a series of unlinked artifacts a r... Outputs: chain_errors, chain_valid, chain_verified_by, fence, head_hash, is_genesis, not_proven, prev_head_hash, regulatory_framework, root, rotates_to, seq, signature_valid, signature_verified_by, signer, stream, structural_error, timestamp. Output schema: call describe_tool("publish_model_risk_head").

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: chain_verification, head, prior_head, signature_verification. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There is a direct contradiction between the description ('Publishes one SPEC.md head-commit publication event') and the annotation `readOnlyHint: true`. Furthermore, while it provides rich behavioral detail (e.g., transient processing, Cloudflare Workers, AP2 artifact export), the critical contradiction renders this score severely low.

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?

The description is excessively verbose and highly dense, mixing operational notes, security constraints, and academic jargon into a single, unstructured wall of text. This complexity hinders quick agent comprehension and violates the principle of conciseness.

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?

Given the immense complexity of the Domain (OpenChainGraph, AP2, validation streams), the description is remarkably comprehensive. It covers the compute model, input dependencies, data retention policy, execution environment, and output expectations, leaving virtually no structural detail 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?

With schema coverage at 100%, the description's value lies in providing high-level semantic context beyond mere data types. It explains the operational implications of the `compute` enum and the necessity of upstream artifacts, helping the agent understand *why* the inputs are needed, even if the schema defines *what* they are.

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?

The purpose is extremely specific, clearly identifying the action ('Publishes') and the target resource ('SPEC.md §HEAD-1 head-commit publication event'). It clearly situates the tool within a broader validation history stream.

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?

The description provides extensive usage guidance by outlining the behavioral consequences of the `compute` parameter (`auto`, `server`, `browser`), defining constraints (synthetic/anonymized inputs only), and specifying the transient data lifecycle.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rdarr_aggregation_recomputeRDARR Aggregation RecomputeA
Read-onlyIdempotent
Inspect

RDARR Aggregation Recompute: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-480-rdarr-aggregation-recompute.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: Re-derives a stated risk-report figure from a SUPPLIED source extract under a declared aggregation policy (filter set, netting rule, FX rate set, hierarchy roll-up). Outputs: base_currency, contribution_breakdown, delta, delta_pct, fence, lines_excluded, lines_included, netting_applied, netting_sets, not_proven, recomputed_figure, reported_figure, rounding. Output schema: call describe_tool("rdarr_aggregation_recompute").

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: aggregation_policy, extract, hierarchy, reported_figure. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, but the description adds substantial behavioral context: deterministic execution, server-side versus browser delegation, GPU delegation, transient processing with no storage or logging, and AP2 artifact provenance with execution_hash. These details materially help an agent understand what happens when the tool is invoked.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description contains useful information, but the core purpose is buried after boilerplate about OpenChainGraph, compute-node mechanics, URLs, and FV-status metadata. The output field list is valuable, yet the overall text is longer and less front-loaded than it could be.

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?

There is no output schema, so listing the returned fields is important and the description does that thoroughly. It also covers compute behavior, data handling, and the high-level policy dimensions, though it does not detail the nested structure of aggregation_policy beyond naming its conceptual components.

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 compute, parent hashes, parent tool IDs, and policy_parameters. The description repeats the compute-mode and required-policy-key information already present in the schema rather than adding new syntax, validation rules, or meanings beyond it.

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 description states a specific verb and resource: it re-derives a stated risk-report figure from a supplied source extract under a declared aggregation policy. It is clearly more than a tautology and is distinguishable in substance from siblings such as rdarr_quality_scorecard, but it does not explicitly name a sibling or state the boundary between this tool and alternatives.

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 description provides compute-mode guidance and a clear input restriction: use synthetic or anonymised inputs only. However, it does not say when to choose this recompute tool versus rdarr_quality_scorecard or other recompute/aggregation siblings, so tool-selection guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rdarr_quality_scorecardRDARR Quality ScorecardB
Read-onlyIdempotent
Inspect

RDARR Quality Scorecard: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-481-rdarr-quality-scorecard.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: Deterministic data-quality metrics over a SUPPLIED risk-data extract, keyed to the measurable RDARR prerequisites: completeness of mandatory attributes, referential integrity across the declared hierarchy, timeliness against a declared cut-off, reconciliation coverage, and manual-adjustment ratio. Outputs: cutoff_date, fence, guide_version, metrics, not_proven, scorecard, total_records. Output schema: call describe_tool("rdarr_quality_scorecard").

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: extract, hierarchy_node_ids, mandatory_attributes, prerequisite_areas, thresholds. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real context beyond them: transient processing with no storage or logging, the requirement to supply synthetic/anonymised inputs, the AP2 artifact export with execution_hash for provenance, and the note that the FV-status receipt is a snapshot rather than a subscription. It does not say what happens when required policy_parameters keys are missing beyond 'unknown keys are refused'.

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?

Roughly the first two-thirds is generic OpenChainGraph infrastructure boilerplate (compute node, Cloudflare Workers, FV-status hash URL) before the sentence that actually says what the tool does. The purpose is present but badly buried, and the raw spec-hash URL is pure noise for tool selection.

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?

For a 4-parameter tool with a nested policy_parameters object and no output schema, the description compensates by enumerating the returned fields (cutoff_date, metrics, not_proven, scorecard, total_records) and the required nested keys. Missing only an explanation of what 'not_proven' or failure outcomes mean.

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 compute enum, parent_hashes chaining, and required policy_parameters keys are already documented in the schema. The description only restates the compute-mode behavior and lists output fields; it adds no new meaning about the shape of extract, thresholds, or hierarchy_node_ids.

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 Summary sentence names a concrete operation (deterministic data-quality metrics over a supplied risk-data extract) and enumerates the RDARR prerequisites measured (completeness, referential integrity, timeliness, reconciliation coverage, manual-adjustment ratio). That is far more specific than the name alone. It never distinguishes itself from the close sibling rdarr_aggregation_recompute, which keeps it out of 5 territory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over rdarr_aggregation_recompute or any other RDARR sibling, and no preconditions beyond 'use synthetic or anonymised inputs only'. The compute-mode discussion is invocation mechanics, not tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_best_executionBest-Execution NBBO RecomputeA
Read-onlyIdempotent
Inspect

Best-Execution NBBO Recompute: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-541-best-execution-recompute.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: Recomputes, per supplied fill, price improvement in basis points against the NBBO at time of execution and whether each fill cleared at-or-better than the NBBO. Outputs: fills, fill_count, scored_count, rejected_count, pct_at_or_better, avg_price_improvement_bps, fill_set_ceiling, fill_set_truncated, rules_version, regulatory_basis, note. Output schema: call describe_tool("recompute_best_execution").

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: fills. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true and idempotent, but the description adds substantive detail beyond them: determinism, browser-delegation URL behavior for browser/gpu nodes, transient non-stored processing, and an exported AP2 artifact carrying execution_hash. This is well above the annotation-derived baseline, with only the link/receipt prose being filler.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

There is a usable Summary/Outputs structure, but the definition is bloated with a raw spec URL, a long FV-status hash path, and a paragraph explaining that the receipt verifies offline — text that does not help an agent invoke the tool. The actual purpose is not front-loaded.

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?

For a nested-parameter compute tool with no output schema, the description compensates by enumerating expected outputs (fill_count, scored_count, pct_at_or_better, avg_price_improvement_bps, etc.) and routing to describe_tool for the full schema. Enough is present to call it correctly, though fills structure is left implicit.

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 compute, parent_hashes, parent_tool_ids and policy_parameters are already documented in the schema. The description restates compute-mode behavior and notes fills is required / unknown keys refused, but adds essentially nothing the schema doesn't already say.

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 'Summary' sentence gives a precise verb+resource: recomputes per-fill price improvement in bps against NBBO and whether each fill cleared at-or-better. That is specific enough to act on, but the purpose is preceded by boilerplate compute-node text, and the description never distinguishes this from the close sibling compute_best_execution_evidence_pack.

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?

It explains the compute modes (auto/server/browser, gpu:true always delegating) and warns to use synthetic/anonymised inputs only, which is genuinely useful context. However, it gives no guidance on when to choose this tool over sibling recompute/evidence-pack tools or what preconditions the fills must satisfy.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_bordereauDelegated Authority Bordereau RecomputationB
Read-onlyIdempotent
Inspect

Delegated Authority Bordereau Recomputation: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-508-recompute-bordereau.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.

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". See the tool's manifest for field names.

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnlyHint, idempotentHint, and destructiveHint=false, the description adds meaningful behavioral context: transient processing, no storage/logging/retention, browser delegation behavior, and AP2 artifact export with execution_hash. It also clarifies the FV-status receipt is an offline-verifiable snapshot, which is useful operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the purpose and then covers compute mode, privacy, artifact export, and provenance links. It is somewhat bloated by repeated "OpenChainGraph compute node" phrasing and a long FV-status hash/link sentence, but the information remains relevant to invocation and interpretation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex compute tool with a nested policy_parameters object and no output schema, the description provides useful execution and privacy context plus the artifact shape. It remains incomplete on the actual computation domain and expected policy_parameters fields, which are central to correct invocation.

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 input schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description reinforces compute modes and mentions execution_hash for chain provenance, but it does not add field-level meaning beyond the schema, especially for policy_parameters where it defers to the manifest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific verb and resource ("Recompute" / "Delegated Authority Bordereau") and names the OpenChainGraph analytics_mandate context, but it never explains what a bordereau recomputation actually computes. Sibling differentiation is absent despite many recompute_* tools, so an agent cannot confidently distinguish this from adjacent recomputation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and states "Use synthetic or anonymised inputs only," which are usage constraints. However, it gives no explicit when-to-use guidance, no conditions for choosing this tool over sibling recompute tools, and no prerequisites beyond the privacy warning.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_ccd2_aprc_annex3CCD2 Annex III APRC RecomputeA
Read-onlyIdempotent
Inspect

CCD2 Annex III APRC Recompute: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-619-ccd2-aprc-annex3-recompute.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: Recomputes the EU Directive (EU) 2023/2225 (CCD2) annual percentage rate of charge (APRC) from a caller-supplied drawdown/repayment schedule against Annex III Part I's basic equation, solved by bracketed bisection for the rate X. Outputs: aprc_pct, converged, bracketed, iterations_used, residual_at_convergence, num_drawdowns, num_repayments, drawdown_total, repayment_total, total_charge. Output schema: call describe_tool("recompute_ccd2_aprc_annex3").

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: drawdowns, repayments. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses deterministic execution, server-vs-browser compute delegation, transient non-retention of inputs, synthetic-input constraints, and AP2 artifact/execution_hash chaining behavior. These are substantive behavioral details that help the agent invoke the tool safely and understand its side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is informative but bloated: it repeats the OpenChainGraph compute-node framing, includes a long URL and FV-status hash, and only reaches the core APRC explanation in the final summary. It is structured, but the most important purpose statement is not front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex compute node with no output schema, it helpfully lists output fields, the Annex III equation reference, and solver behavior. However, it does not fully specify the drawdown/repayment entry structure, leaving an agent without enough detail to construct policy_parameters confidently.

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 input schema already documents the four parameters and compute enum. The description reinforces that policy_parameters represents a drawdown/repayment schedule, but it does not add item-level structure or constraints for those arrays beyond what the schema provides.

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?

The description names a specific verb and resource: recomputing the EU CCD2 annual percentage rate of charge under Annex III Part I from a drawdown/repayment schedule. It identifies the exact directive and calculation approach, so the agent can distinguish this from generic APR or MAPR tools.

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?

It gives useful invocation guidance for compute modes and says to use synthetic or anonymised inputs only. However, it does not explicitly say when to choose this tool over sibling APRC/APR recompute tools such as compute_reg_z_appendix_j_apr or recompute_mla_mapr_actuarial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_ccp_default_waterfallCCP Default Waterfall RecomputationA
Read-onlyIdempotent
Inspect

CCP Default Waterfall Recomputation: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-529-ccp-default-waterfall-recompute.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: Recomputes the sequential loss-allocation order at a CCP defaulting-member event: defaulter's initial margin, then the defaulter's default-fund contribution, then the CCP's own skin-in-the-game, then the surviving members' default-fund pool, then assessment powers -- per a caller-declared waterfa... Outputs: assessment_powers_cap_declared, assessment_powers_cap_minor_units, breach, ccp_skin_in_game_display, ccp_skin_in_game_minor_units, currency, loss_amount_display, loss_amount_minor_units, loss_fully_absorbed, note, provenance, rationale, rejected_inputs, residual_display, residual_minor_units, steps, waterfall_structure. Output schema: call describe_tool("recompute_ccp_default_waterfall").

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: loss_amount_minor_units. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnly/idempotent annotations already establishing the safety profile, the description adds genuinely non-obvious behaviour: deterministic execution, auto/server/browser compute routing with gpu:true always delegating, transient non-logged input handling, refusal of unknown keys, and export of an AP2 artifact carrying execution_hash for chain provenance. The FV-status sentence additionally discloses that the provenance receipt is an offline snapshot rather than a live subscription, which is real behavioural context rather than restatement.

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?

The text repeats itself ('OpenChainGraph compute node (analytics_mandate). Deterministic OpenChainGraph compute node.'), buries the actual purpose behind compute-mode boilerplate, dumps a long URL and FV-status paragraph, and then pastes an 18-item output field list that trails off mid-sentence ('per a caller-declared waterfa...'). Structure is back-loaded: an agent reading top-down meets routing mechanics before learning what the tool computes.

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?

For a nested-schema, no-output-schema tool, the description covers the essentials: what is computed, the chaining parameters' role, the compute routing, the retention posture, and an enumeration of returned fields including breach, loss_fully_absorbed and residual. The only real gap is that the truncated waterfall summary leaves the exact step-parameter mapping to be recovered via describe_tool.

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 carries compute, parent_hashes, parent_tool_ids and the policy_parameters requirement; the description largely restates the compute-mode semantics and the required loss_amount_minor_units. Baseline 3 is warranted — it adds the waterfall step ordering as domain framing but no format or unit guidance beyond the schema's 'minor_units' naming.

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 Summary sentence names a specific verb and resource — 'Recomputes the sequential loss-allocation order at a CCP defaulting-member event' — and enumerates the absorption order (defaulter margin → default-fund contribution → skin-in-the-game → surviving members' pool → assessment powers). That is enough to separate it from generic waterfall siblings like recompute_payment_waterfall or recompute_trustee_report_waterfall, though it never names an alternative explicitly and the statement of purpose is buried after a paragraph of compute-node boilerplate.

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 only usage guidance is a data-handling constraint ('Use synthetic or anonymised inputs only') and the compute-mode selection, which is really parameter documentation. There is no statement of when to choose this tool over the neighbouring size_ccp_default_fund_cover2 or the other waterfall recomputes, so the agent must infer applicability from the purpose sentence alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_certified_payroll_pwaCertified Payroll / Prevailing Wage RecomputationA
Read-onlyIdempotent
Inspect

Certified Payroll / Prevailing Wage Recomputation: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-574-certified-payroll-prevailing-wage-recompute.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: Recomputes, for one stated certified-payroll week, whether each worker on a caller-declared payroll was paid at or above the wage-determination rate for their classification, with Contract Work Hours and Safety Standards Act overtime applied at time-and-a-half on the basic hourly rate and fringe... Outputs: apprentice_check, citations, comparison_basis, currency, deficient_worker_count, diff, fence, indeterminate_reason, minor_unit_exponent, not_proven, note, payroll_rows, project_ref, pwa_mode, pwa_result, rationale, rejected_inputs, submitted_supplied, total_deficiency_display, total_deficiency_minor_units, verdict, wage_determination, week_ending_label. Output schema: call describe_tool("recompute_certified_payroll_pwa").

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: apprentice_program, currency, intentional_disregard, irc_6621_underpayment_rate_percent, payroll_rows, project_ref, pwa_mode, submitted_payroll, underpayment_days, wage_determination, week_ending_label. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered. The description adds real value beyond that: transient processing with no storage/logging/retention, a recommendation to use synthetic or anonymised inputs, browser delegation semantics, and emission of an AP2 artifact with execution_hash for provenance.

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?

The definition is bloated with platform boilerplate (OpenChainGraph compute node, FV-status snapshot hash URL, 'this receipt verifies offline') that precedes and dilutes the actual purpose. The long alphabetized outputs list and the internal link also crowd out the front-loaded task statement, so size works against clarity.

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?

For a fairly elaborate, nested-input computation with no output schema, the description explains the computation rule, the overtime/fringe basis, the verdict/deficiency outputs, and points to describe_tool for the full schema. That is close to complete, with the only shortfall being the platform noise rather than missing operational detail.

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 the compute enum is documented inline, so the schema carries the parameter burden. The description restates the compute-mode behavior but adds no field-level semantics for the nested policy_parameters (wage_determination, payroll_rows, apprentice_program, irc_6621 rate), leaving baseline 3 appropriate.

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 summary sentence names a specific verb and resource: recompute whether each worker on a caller-declared payroll was paid at or above the wage-determination rate for their classification, with CWHSSA overtime applied. That is distinguishable from generic recompute_ siblings, though the actual purpose only appears after several sentences of platform boilerplate.

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 compute-mode paragraph explains execution behavior (auto/server/browser, gpu:true always delegates), which is about how to run the tool, not when to prefer it over alternatives. There is no explicit when-to-use/when-not or named sibling alternative despite the very crowded recompute_ set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_corporate_action_entitlementCorporate Action Entitlement RecomputeA
Read-onlyIdempotent
Inspect

Corporate Action Entitlement Recompute: OpenChainGraph compute node (compliance_mandate). 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-546-dtcc-ca-iso20022-validator. Open at: https://ainumbers.co/chaingraph/art-547-corporate-action-entitlement-recompute.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: Deterministic dividend/rights/split entitlement math per record date for a single position, under the ISO 20022 corporate-action event field set migrated by DTCC Important Notice 23890-26 (legacy corporate-actions message format decommission -- a DTCC operator mandate, not a regulatory deadline:... Outputs: cash_entitlement, corporate_action_type, disambiguation, dtcc_operator_mandate_basis, entitlement_computed, entitlement_mode, error_count, fractional_shares, fractional_shares_present, not_legal_advice, pii_note, reference_id, table_source, table_version, violations, whole_shares. Output schema: call describe_tool("recompute_corporate_action_entitlement").

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: corporate_action_type, position_qty, ratio_or_rate, record_date, reference_id. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world. The description adds meaningful behavior beyond them: transient processing with no storage/logging/retention, a directive to use synthetic or anonymised inputs only, export of an AP2 artifact carrying execution_hash, and the server/browser delegation rule. The compute-mode paragraph largely restates the schema, and the FV-status receipt explanation is verbose, but the data-handling and provenance disclosures are genuinely additive.

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?

The opening is repetitive ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.'), the compute paragraph duplicates schema text, the Summary is truncated mid-sentence ('...a DTCC operator mandate, not a regulatory deadline:...'), and a raw URL plus full file hash are inlined. The most decision-relevant sentence, the dividend/rights/split summary, arrives late rather than front-loaded.

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?

For a 4-parameter compute node with full schema coverage and clear annotations, the definition supplies the missing pieces an agent needs: upstream artifact dependency, data-retention posture, artifact export with execution_hash, and an enumerated list of outputs despite the absence of an output schema. Only the truncated mandate sentence and the pointer to describe_tool for output shape leave small gaps.

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% (compute, parent_hashes, parent_tool_ids, and policy_parameters are all documented in-schema, including the required policy keys), so the baseline is 3. The description reinforces chaining by mentioning that an AP2 artifact with execution_hash is exported, which links conceptually to parent_hashes, but it adds no format or ordering detail beyond the schema.

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 (recompute) and resource (corporate action entitlement) and the Summary narrows it to 'deterministic dividend/rights/split entitlement math per record date for a single position' under the ISO 20022 / DTCC 23890-26 field set. It also distinguishes itself from the sibling validator by naming the upstream artifact it consumes (art-546-dtcc-ca-iso20022-validator), so an agent can separate it from validate_dtcc_ca_iso20022_message.

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 description implies usage via the compute-mode rules and the stated upstream artifact dependency, which tells an agent this runs after validation. But it never states when to choose this versus the validator sibling, never gives explicit prerequisites or exclusions, and buries the actual purpose behind two boilerplate sentences. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_csdr_penaltyCSDR Penalty Recompute (Caller Reference Price)A
Read-onlyIdempotent
Inspect

CSDR Penalty Recompute (Caller Reference Price): OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-543-csdr-penalty-recompute.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: Per-ISIN/day CSDR cash-penalty recompute over a caller-declared open-fails set: selects the RTS asset-class/penalty-type daily rate (CSDR-RTS-2025-10, ESMA Final Report 13 Oct 2025), applies fail duration to a caller-supplied reference_price and quantity, credits partial settlement proportionally... Outputs: decision, determinations, fail_count, note, rate_table_version, recompute_id, rejected_inputs, total_penalty_exposure. Output schema: call describe_tool("recompute_csdr_penalty").

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: open_fails, rate_table_version, recompute_id. Unknown keys are refused.

TDQS

A3.6/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), yet the description still adds substantive behavior: deterministic execution, transient processing with no storage or logging, an AP2 artifact carrying execution_hash for chain provenance, and browser delegation semantics for gpu:true. The boilerplate compute-mode and FV-status blocks dilute this, but the disclosures are consistent with the annotations and go well beyond them.

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?

The description opens by restating the name and then spends roughly half its length on compute-binding and provenance boilerplate identical across siblings, plus a raw documentation URL and an FV-status hash. The only tool-specific content, the CSDR penalty summary, is buried near the end, so the definition is not front-loaded.

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?

With no output schema, the description usefully enumerates the return fields (decision, determinations, fail_count, note, rate_table_version, recompute_id, rejected_inputs, total_penalty_exposure) and points to describe_tool for the full schema. Combined with the privacy and provenance disclosures, an agent has enough to call it correctly; only the missing sibling differentiation leaves a gap.

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 description coverage is 100%, so 3 is the baseline, and the description earns an extra point by naming the policy_parameters contents (open_fails, rate_table_version, recompute_id) plus reference_price and quantity, which the free-form additionalProperties object in the schema does not document. It still does not explain per-field semantics such as fail duration format or partial-settlement crediting mechanics.

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 core sentence is specific: 'Per-ISIN/day CSDR cash-penalty recompute over a caller-declared open-fails set' with a named RTS rate table and fail-duration logic. That is a clear verb+resource. However, it never distinguishes itself from the sibling calculate_csdr_penalty, and the '(Caller Reference Price)' qualifier in the title is left unexplained, so the agent cannot tell why it would pick one over the other.

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?

There is real usage guidance, but it is about compute mode ('auto' computes server-side, 'browser' returns a delegation URL, gpu:true always delegates) and about input hygiene ('Use synthetic or anonymised inputs only') rather than about when to choose this tool versus calculate_csdr_penalty. The condition for using the tool (a caller-declared open-fails set plus caller-supplied reference price) is only implied by the summary sentence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_erc4337_userop_mathERC-4337 UserOperation MathA
Read-onlyIdempotent
Inspect

ERC-4337 UserOperation Math: OpenChainGraph compute node (payment_policy). 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. Open at: https://ainumbers.co/chaingraph/art-613-erc4337-userop-math.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: Recomputes the ERC-4337 account-abstraction userOpHash from a caller-supplied UserOperation, computes the EntryPoint's required prefund from caller-supplied gas limits, and reconciles a declared paymaster charge against a charge recomputed from declared inputs. Outputs: verdict, reasons, entry_point, chain_id, user_op, packed_words, field_hashes, packed_user_op_hash, user_op_hash, gas_accounting, paymaster_reconciliation, never_fetched, scope_note. Output schema: call describe_tool("recompute_erc4337_userop_math").

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". Unknown keys are refused.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description provides critical behavioral context not covered by the annotations, notably stating that inputs are 'processed transiently to compute the response and are not stored, logged, or retained.' This addresses data lifecycle and operational safety.

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?

Despite the high technical density, the definition is well-structured, front-loading the purpose and constraints before diving into specific operation details and output schema items.

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?

Given the complexity of ERC-4337 and OpenChainGraph, the definition is exceptionally complete. It covers the operational mode, input constraints, the calculation steps, and the final artifact outputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema coverage is 100%, the description adds necessary domain knowledge to the complex parameters, especially explaining the functional meaning of the 'compute' enum and the role of the 'policy_parameters' in the calculation.

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?

The description clearly defines the tool as an OpenChainGraph compute node designed to recompute ERC-4337 UserOperation hashes and reconcile paymaster charges. It is specific and highly technical, distinguishing itself as a specialized mathematical computation tool.

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?

It provides clear usage guidance by explaining the operational differences based on the 'compute' mode ('auto' vs. 'browser') and establishes crucial input constraints by requiring 'synthetic or anonymised inputs only'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_erc4626_vault_share_mathERC-4626 Vault Share MathB
Read-onlyIdempotent
Inspect

ERC-4626 Vault Share Math: OpenChainGraph compute node (payment_policy). 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. Open at: https://ainumbers.co/chaingraph/art-610-erc4626-vault-share-math.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: Recomputes ERC-4626 tokenized-vault share and asset conversions from caller-declared vault state, applying the rounding direction the standard mandates for each function and reporting which direction produced each result alongside what the opposite direction would have produced. Outputs: declared_context, vault_state, conversions, fee, round_trip, rate_drift, rounding_table, note, reasons. Output schema: call describe_tool("recompute_erc4626_vault_share_math").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnly/idempotent/non-destructive, and the description adds real value on top: deterministic execution, server-side vs browser-delegation behavior for compute:"browser", gpu:true always delegating, transient non-retained input processing, and an exported AP2 artifact carrying execution_hash. This is substantive behavioral context an agent would not get from the annotations. It does not, however, describe error behavior or what happens with malformed vault state.

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?

The functional summary that actually tells an agent what the tool does sits at the end, behind generic OpenChainGraph boilerplate, a privacy paragraph, an AP2 provenance sentence, and a long FV-status URL with a hash. Much of this text is suite-wide template that does not help select or invoke this specific tool, so the definition is padded rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output field list and the pointer to describe_tool cover the return side reasonably well, and the compute-mode explanation covers execution. What is missing is the meaning of the eleven policy_parameters keys, which are the actual domain inputs for a vault share computation. An agent can tell what the tool does but not how to construct its main argument.

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?

Top-level schema coverage is 100%, so the baseline is 3. However the policy_parameters object contains eleven sub-properties (fee_bps, snapshot_b, virtual_amounts, decimals_offset, round_trip_assets, etc.) that have no schema descriptions at all, and the description does not explain any of them. The output term list (vault_state, fee, round_trip, rounding_table) faintly hints at the inputs, but does not compensate for the undocumented nested keys.

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 Summary sentence gives a precise verb and resource: 'Recomputes ERC-4626 tokenized-vault share and asset conversions from caller-declared vault state', with rounding-direction detail. The subject matter (ERC-4626 share math) is distinct from neighbors like recompute_erc7540_request_accounting or recompute_erc4337_userop_math, though the description never names those alternatives explicitly. The core purpose is clear but is buried under several sentences of generic compute-node boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage instruction is the constraint 'Use synthetic or anonymised inputs only', which is an input-safety rule rather than when-to-use guidance. There is no statement of which conversion scenarios belong here versus the ERC-7540 or ERC-4337 recompute siblings, and no prerequisites or exclusions. The compute-mode paragraph explains execution mechanics, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_erc7540_request_accountingERC-7540 Async-Vault Request AccountingB
Read-onlyIdempotent
Inspect

ERC-7540 Async-Vault Request Accounting: OpenChainGraph compute node (payment_policy). 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. Open at: https://ainumbers.co/chaingraph/art-611-erc7540-async-vault-request-accounting.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: Recomputes ERC-7540 asynchronous-vault request accounting from caller-declared request state. Outputs: declared_context, request_id, aggregate_by_controller, claim_rounding_used, opening, claims, closing, dust, invariants, note, reasons. Output schema: call describe_tool("recompute_erc7540_request_accounting").

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". Unknown keys are refused.

TDQS

B3.4/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 the description still adds real value beyond them: deterministic execution, where computation happens (Workers vs browser delegation URL), transient non-retained input handling, and an AP2 artifact with execution_hash for provenance. It does not describe determinism caveats around claim_rounding or failure behavior, which keeps it below 5.

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?

The purpose statement is front-loaded, but the body is padded with infrastructure boilerplate, a raw FV-status URL and a 64-hex receipt hash, and a 'call describe_tool(...)' pointer. Those sentences do not help an agent decide or invoke, and they bury the short, genuinely useful output enumeration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the right thing by enumerating return fields, and it covers compute routing and privacy. However, for a nested-object accounting tool it never explains what a valid caller-declared request state looks like (deposit/redeem/claims structure) or what the invariants check, leaving a meaningful gap.

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 all four parameters (compute, parent_hashes, parent_tool_ids, policy_parameters) are already documented, including the chaining semantics of parent_hashes/parent_tool_ids. The description adds only the output field list and the note that unknown keys are refused, so 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?

The description names a specific verb and resource: 'Recomputes ERC-7540 asynchronous-vault request accounting from caller-declared request state', and lists the concrete outputs (opening, claims, closing, dust, invariants). It is clearly distinguishable from the nearest sibling recompute_erc4626_vault_share_math, but it never states that distinction explicitly.

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 guidance is limited to the compute-mode mechanics ('auto' vs 'server' vs 'browser', gpu:true always delegates), which is really parameter guidance. There is no statement of when an agent should pick this tool over the ERC-4626 or ERC-4337 recompute siblings, nor any prerequisite or input-quality condition beyond 'use synthetic or anonymised inputs'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_exchange_fee_tier_invoiceExchange Access-Fee / Maker-Taker Tier RecomputeB
Read-onlyIdempotent
Inspect

Exchange Access-Fee / Maker-Taker Tier Recompute: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-577-exchange-fee-tier-recompute.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: Recomputes a monthly exchange maker-taker invoice from a caller-pasted fee schedule: resolves the firm's active tier from its declared prior-period average daily volume (ADV), applies that tier's maker rebate and taker access-fee rate to the declared monthly maker/taker share totals, and diffs th... Outputs: active_tier, cap_check, cap_verdict, claimed_invoice_micros, clause_note, decision, diff_micros, fee_schedule_summary, findings, invoice_period, invoice_verdict, prior_period_adv_shares, recompute_tolerance_micros, recomputed_invoice_micros, rejected_inputs, scope_note, tiers, volume_summary. Output schema: call describe_tool("recompute_exchange_fee_tier_invoice").

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: claimed_invoice_micros, fee_schedule, invoice_period, prior_period_adv_shares, recompute_tolerance_micros, volume_lines. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real context beyond that: inputs are processed transiently and not stored or logged, gpu:true nodes always delegate to the browser, and an AP2 artifact with execution_hash is exported for provenance. These are useful behavioral facts the annotations do not convey.

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?

The definition opens with generic node boilerplate (compute binding, Cloudflare Workers, FV-status URL and hash) before reaching the actual purpose, so it is not front-loaded. The core summary and the output list are both truncated mid-word, and the URL/hash block consumes space without helping an agent decide or invoke.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description partially compensates by enumerating output fields (active_tier, diff_micros, invoice_verdict, etc.), though the list is cut off. For a multi-stage financial computation whose nested policy_parameters are untyped, the description leaves the shape of the fee schedule and volume lines unexplained, which is a real gap for correct invocation.

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%, including the required-key list and the "unknown keys are refused" rule, so the schema largely does this job. The description adds some meaning by tying prior_period_adv_shares to tier resolution and fee_schedule to rebate/fee rates. However, the nested policy_parameters members (fee_schedule, invoice_period, prior_period_adv_shares, etc.) are untyped empty objects in the schema and the description does not describe their expected structure.

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 summary names a specific verb and resource: recomputing a monthly exchange maker-taker invoice, resolving the active tier from declared prior-period ADV, applying maker rebate and taker fee rates, and diffing against the claimed invoice. That is far more specific than the title alone. It loses a point because the summary is truncated mid-sentence ("diffs th...") and never explicitly distinguishes this from adjacent fee-recompute siblings such as recompute_stock_loan_rebate_fee or compute_odnsf_fee_recompute.

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 description gives an input-handling rule ("Use synthetic or anonymised inputs only") and explains compute-mode selection, but it never states when to choose this tool over the many other fee/recompute siblings. Usage is implied by the scenario (reconciling a maker-taker invoice) rather than stated as a routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_fund_feesRecompute Fund FeesB
Read-onlyIdempotent
Inspect

Recompute Fund Fees: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-511-recompute-fund-fees.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: Recomputes a fund's management fee and performance fee from the terms the investor already holds (the fee statement and the fund agreement) and diffs the result against what was actually charged, where supplied. Outputs: agreement_ref, as_of, diff, fence, fund_id, judgment_required, management_fee_computed, not_proven, performance_fee, period_days, period_end, period_start, rationale, recompute_only, rounding, terms_version. Output schema: call describe_tool("recompute_fund_fees").

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: management_fee, nav, performance_fee, period_days, rounding. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which already declare readOnly/idempotent/non-destructive), the description discloses meaningful behavior: determinism, that compute:'browser' returns a delegation URL instead of results, that inputs are transient and not retained, and that an AP2 artifact with execution_hash is exported. Much of this is generic OpenChainGraph boilerplate, which keeps it from a 5, but it does exceed annotation coverage.

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?

The substantive summary is buried after infrastructure boilerplate, a marketing URL, and a 64-character FV-status receipt hash that does nothing for tool selection. The long outputs list also pads the text. It is front-loaded by name but not by useful information.

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?

With no output schema, the description compensates by enumerating outputs (agreement_ref, diff, management_fee_computed, judgment_required, etc.) and pointing to describe_tool for the schema. Combined with full param coverage and the safety annotations, an agent has enough to call it, though the missing use-vs-alternative guidance is the remaining gap.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters including the required keys. The description's only parameter-adjacent content is the compute-mode explanation, which duplicates the schema. Baseline 3 is correct.

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 summary sentence gives a specific verb+resource+object: recomputes a fund's management fee and performance fee from the terms the investor holds and diffs against what was charged. That is more than a restatement of the name. However, it never distinguishes this from close siblings like recompute_fund_nav or compute_fund_expense_ratios, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states an input constraint ('Use synthetic or anonymised inputs only') but no when-to-use condition, no prerequisites, and no named alternatives. Nothing tells the agent why it would pick this over recompute_fund_nav or compute_fund_expense_ratios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_fund_navRecompute Fund NAVA
Read-onlyIdempotent
Inspect

Recompute Fund NAV: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-373-recompute-fund-nav.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: Recomputes a fund's net-asset-value-per-share from SUPPLIED holdings (quantity x supplied price, multi-currency with supplied FX), accruals (income and expense with a declared day-count convention), liabilities, and shares outstanding, using fixed-point BigInt money math throughout (no float accu... Outputs: base_currency, components, fence, fund_id, nav_per_share, not_proven, regulatory_framework, rounding, structural_error, valuation_date. Output schema: call describe_tool("recompute_fund_nav").

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: accruals, holdings, liabilities, rounding, shares_outstanding. Unknown keys are refused.

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 and closed-world, so the safety profile is covered. The description adds genuinely new behavioural context: deterministic execution, transient processing with no storage or logging, and an AP2 artifact export carrying execution_hash for chain provenance. The text is truncated mid-sentence on the arithmetic guarantees, which leaves one promised behaviour incomplete.

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?

The definition is bloated: it restates "OpenChainGraph compute node" twice, embeds a documentation URL and a 64-character FV-status receipt path, and then truncates the actual domain summary mid-word ("no float accu..."). The genuinely useful content is buried behind boilerplate rather than front-loaded.

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?

For a four-parameter tool with a nested policy object whose properties are untyped stubs, the summary usefully enumerates what must be supplied and the output field list substitutes for the missing output schema. Execution-model and provenance details are covered. Only the truncated math description leaves a small hole.

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 compute, parent_hashes and parent_tool_ids are already fully documented in the schema, and the description mostly restates the compute-mode semantics. Value is added by naming the required policy_parameters keys and explaining what they represent (holdings with supplied FX, accruals with a declared day-count convention, rounding), which the nested schema leaves as empty property stubs. Baseline 3 is right.

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 summary names a specific verb and resource: recomputing a fund's NAV per share from supplied holdings, accruals, liabilities and shares outstanding using fixed-point BigInt math. That is far more concrete than the bare title and separates it from neighbours like recompute_fund_fees or publish_fund_nav_head. It stops short of an explicit sibling comparison, and the boilerplate compute-node framing dilutes the opening.

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 guidance exists only for the compute mode ("auto" = server for registered kernels, "browser" forces delegation, gpu:true always delegates) and for input hygiene ("Use synthetic or anonymised inputs only"). There is no statement of when to pick this over recompute_fund_fees, test_nav_error_materiality, or publish_fund_nav_head, so routing between the NAV-family tools is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_garnishment_stackMulti-Garnishment Stacking RecomputationA
Read-onlyIdempotent
Inspect

Multi-Garnishment Stacking Recomputation: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-572-multi-garnishment-stacking-recompute.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: Recomputes, for one stated pay period, how much of an employee's disposable earnings each order in a caller-declared garnishment stack may lawfully withhold, then compares the recomputed per-order withholding against a garnishment notice where one is supplied. Outputs: aggregate_cap_display, aggregate_cap_minor_units, ccpa_floor_display, ccpa_floor_minor_units, citations, comparison_basis, currency, diff, disposable_earnings_display, disposable_earnings_floored_at_zero, disposable_earnings_minor_units, employee_net_display, employee_net_minor_units, employee_ref, federal_minimum_wage_display, federal_minimum_wage_minor_units, federal_minimum_wage_source, fence, first_uncapped_shortfall, gross_display, gross_minor_units, indeterminate_reason, legally_required_deductions, minor_unit_exponent, not_proven, note, noticed_supplied, order_count, orders, period_label, rationale, rejected_inputs, state_overlay, total_deductions_display, total_deductions_minor_units, total_withheld_display, total_withheld_minor_units, verdict. Output schema: call describe_tool("recompute_garnishment_stack").

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: currency, employee_ref, federal_minimum_wage_dated, federal_minimum_wage_minor_units, gross_minor_units, legally_required_deductions, noticed_amounts, orders, period_label, state_overlay. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavior: compute modes and browser delegation, GPU delegation, transient processing with no storage/logging/retention, use of synthetic or anonymised inputs, AP2 artifact export with execution_hash for provenance, and an FV-status snapshot receipt. These details materially affect how an agent should invoke and trust the tool.

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?

The purpose is front-loaded, but the description is heavily bloated: it repeats "OpenChainGraph compute node," includes platform/provenance URLs and FV-status text, and appends a long list of output field names without definitions. Much of this is not needed for tool selection or invocation, so it is not concise despite being structured.

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?

With no output schema, the description compensates by listing the outputs and explaining the core computation, compute modes, privacy behavior, and artifact provenance. It does not define each output field or edge-case semantics, but for invocation purposes the combination of rich schema coverage and this summary is nearly complete.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description reinforces compute modes and mentions the garnishment-stack inputs conceptually, but adds little syntax or format detail beyond the schema, so the baseline of 3 is appropriate.

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?

The description states a specific verb and resource: recomputing how much each order in a caller-declared garnishment stack may lawfully withhold from disposable earnings for one pay period, and comparing that against a supplied garnishment notice. This is far more specific than the tool name alone and lets an agent distinguish it from generic payroll or garnishment computation tools.

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 summary implies the use case (one stated pay period, caller-declared stack, optional notice comparison) and includes a data-handling constraint: "Use synthetic or anonymised inputs only." However, it does not explicitly state when to use this tool versus related siblings such as payroll recomputation or withholding tools, nor when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_lease_schedule_asc842_ifrs16Lease Schedule Recompute — ASC 842 / IFRS 16B
Read-onlyIdempotent
Inspect

Lease Schedule Recompute — ASC 842 / IFRS 16: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-571-lease-schedule-recompute-asc842-ifrs16.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: Recomputes the present value of a declared lease payment schedule and the full effective-interest amortization -- liability and right-of-use asset -- under ASC 842 and IFRS 16 side by side, from a caller-declared discount rate and payment schedule. Outputs: asc842, clause_note, decision, diff, elections, findings, ifrs16, rejected_inputs, scope_note, verdict. Output schema: call describe_tool("recompute_lease_schedule_asc842_ifrs16").

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: classification_inputs, compare_regime, diff_tolerance_minor, discount_rate_annual, initial_direct_costs_minor, lease_incentives_minor, lease_term, payment_schedule, preparer_schedule, timing. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotent/non-destructive, so the lower bar applies, and the description still adds real value: it is deterministic, inputs are processed transiently and not stored or logged, compute:'auto' vs 'browser' routing behavior, and that an AP2 artifact with execution_hash is exported. That is genuine behavior beyond the annotation set. Minor deduction for the large volume of generic platform boilerplate (FV-status file, offline receipt) that is not specific to this tool.

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?

The definition is poorly front-loaded: the first two sentences restate the title and platform framing, and the actual purpose does not appear until near the end. A long FV-status/hash/receipt paragraph and repeated 'OpenChainGraph compute node' phrasing consume space without helping tool selection.

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?

For a moderately complex nested-parameter compute tool with no output schema, the description enumerates the output keys (asc842, ifrs16, diff, findings, verdict, etc.) and explicitly routes the agent to describe_tool for the full output schema. Combined with the compute-mode and provenance details, an agent has enough to invoke it correctly, though the semantic meaning of the individual outputs is not explained.

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 baseline is 3. The description adds only that the discount rate and payment schedule are 'caller-declared'; the nested policy_parameters object (classification_inputs, timing, lease_term, preparer_schedule, diff_tolerance_minor, etc.) is left entirely to the schema. Adequate but no compensation needed and none provided.

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 description eventually states a specific verb and resource: 'Recomputes the present value of a declared lease payment schedule and the full effective-interest amortization -- liability and right-of-use asset -- under ASC 842 and IFRS 16 side by side.' That is precise and distinguishable from generic schedule builders. However, the actual purpose sentence is buried after several sentences of ChainGraph compute/provenance boilerplate, and no sibling (e.g. build_amortization_schedule, compute_deterministic_amortization_schedule) is named as an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over the many lease/amortization siblings, nor any prerequisites beyond 'use synthetic or anonymised inputs only.' The compute-mode paragraph explains execution routing, not task selection. An agent must infer applicability from the subject matter alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_mla_mapr_actuarialMLA MAPR Actuarial RecomputeA
Read-onlyIdempotent
Inspect

MLA MAPR Actuarial Recompute: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-616-mla-mapr-actuarial-recompute.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: Recomputes a Military Lending Act MAPR for closed-end credit by the Regulation Z actuarial method, from caller-supplied cash flows and charges. Outputs: mapr_pct, mapr_cap_pct, exceeds_cap, periodic_rate, periods_per_year, num_advances, num_payments, advance_total, payment_total, amount_financed_mapr, prepaid_included_total, finance_charge_in_schedule_total, charge_breakdown, manual_review_required, participation_fee_open_end_no_balance_limit_usd, iterations, converged, bracketed, regulatory_basis, note. Output schema: call describe_tool("recompute_mla_mapr_actuarial").

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". Unknown keys are refused.

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, yet the description adds real substance: deterministic computation, transient processing with no retention or logging, server-vs-browser delegation semantics, and an exported AP2 artifact carrying execution_hash. The privacy/no-retention statement is exactly the kind of context annotations cannot express.

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?

The leading text restates the tool name and title, then spends most of its length on ChainGraph compute-binding and FV-status boilerplate before reaching what the tool actually does. The output enumeration is an undifferentiated 20-field run-on list. Key information is not front-loaded.

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?

There is no output schema, so listing mapr_pct, exceeds_cap, converged, bracketed, and regulatory_basis is genuinely useful return-value disclosure. Combined with the computation semantics and privacy statement, an agent has enough to call it correctly, though the missing differentiation from compute_mla_mapr leaves a real routing gap.

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 reported at 100%, and the compute and parent_hash parameters are well documented in the schema itself. But the nested policy_parameters keys (advances, payments, mla_charges, odd_days) have no per-field descriptions in the schema, and the description does not explain their expected shape or units, so the highest-value parameters remain ambiguous.

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 summary sentence gives a specific verb, regulation, and method: 'Recomputes a Military Lending Act MAPR for closed-end credit by the Regulation Z actuarial method, from caller-supplied cash flows and charges.' That is unambiguous. However, the description never distinguishes this from the sibling compute_mla_mapr, and the real purpose is buried under three sentences of ChainGraph/compute-mode boilerplate.

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?

It gives one genuine usage constraint ('Use synthetic or anonymised inputs only') and explains the compute-mode selection. But there is no guidance on when to pick this over compute_mla_mapr or classify_mla_charge_inclusion, and no stated preconditions for the cash-flow inputs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_payment_waterfallSecuritisation Payment Waterfall RecomputationA
Read-onlyIdempotent
Inspect

Securitisation Payment Waterfall Recomputation: OpenChainGraph compute node (analytics_mandate). 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. Output feeds: art-510-build-art5-diligence-evidence. Open at: https://ainumbers.co/chaingraph/art-509-recompute-payment-waterfall.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: Recomputes a securitisation payment waterfall for one stated period from the aggregate available funds and the priority ladder the investor already holds, then compares the result against what the investor report says was paid. Outputs: asserted_step_count, available_funds_by_ledger, basis, citations, comparison_basis, comparison_state, currency, deal_ref, diff, first_unfunded_step, ladder_ref, minor_unit_exponent, no_template_claim, note, period_label, rationale, recompute_only_note, recomputed_step_count, rejected_inputs, residual_by_ledger, residual_display, residual_minor_units, step_count, steps, test_results, total_available_display, total_available_minor_units, total_paid_display, total_paid_minor_units, total_shortfall_display, total_shortfall_minor_units. Output schema: call describe_tool("recompute_payment_waterfall").

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: asserted_allocations, available_funds, available_funds_minor_units, currency, deal_ref, ladder_ref, period_label, priority_ladder, tests. Unknown keys are refused.

TDQS

A3.6/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), yet the description adds real behavioral context: server-vs-browser compute modes, GPU delegation, transient processing with no storage/logging, synthetic-input requirements, and an exported AP2 artifact carrying execution_hash. That is meaningful disclosure beyond the annotations, though much of it is shared boilerplate across this tool family rather than tool-specific behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual purpose appears mid-way through, behind a repeated title, compute-node boilerplate, a long FV-status URL and a provenance receipt paragraph. The ~35-item output field list is verbose but partly earns its place because no output schema exists; the result reads as unstructured filler rather than a prioritized summary.

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?

Given no output schema, the description compensates by enumerating returned fields and by documenting the server/browser execution and provenance behaviour of this compute node. The main gap is the nested policy_parameters object, whose nine sub-properties have empty schemas and no description of required structures for priority_ladder or asserted_allocations.

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 compute, parent_hashes, parent_tool_ids and policy_parameters, and the description mostly restates the compute-mode semantics rather than extending them. It does convey what the key policy parameters represent conceptually (available funds vs. priority ladder vs. asserted allocations), but gives no shapes or formats. Baseline 3 is appropriate.

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 'Summary' sentence gives a precise verb+resource+scope: recompute a securitisation payment waterfall for one stated period from available funds and the priority ladder, then diff against what the investor report says was paid. That is clearly distinguishable from the numerous sibling waterfalls (recompute_trustee_report_waterfall, recompute_pe_waterfall_lp, recompute_ccp_default_waterfall), though it never names those siblings explicitly. The purpose statement is buried after title/boilerplate rather than front-loaded.

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 implied by the summary (use when you hold the priority ladder and want to check reported payments) plus the chaining hint 'Output feeds: art-510-build-art5-diligence-evidence' and the constraint 'Use synthetic or anonymised inputs only'. There is no explicit when-not-to-use and no routing to the other waterfall recompute tools, leaving the agent to infer selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_pe_waterfall_lpPE Distribution Waterfall LP-Side RecomputeB
Read-onlyIdempotent
Inspect

PE Distribution Waterfall LP-Side Recompute: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-567-pe-waterfall-lp-recompute.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: Recomputes a standard 4-tier PE distribution waterfall (return of capital, preferred return, GP catch-up, residual carry split) from caller-DECLARED dated contribution/distribution cashflows and a caller-DECLARED waterfall parameterization (pref rate + compounding basis, GP catch-up percentage, c... Outputs: as_of_date, clawback, deal_id, fence, fund_id, gp_reported_allocation, ilpa_context, not_proven, per_deal, recomputed_allocation, rejected_inputs, tier_deltas, tier_structure, verdict, waterfall. Output schema: call describe_tool("recompute_pe_waterfall_lp").

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: cashflows, gp_reported_allocation, waterfall. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely non-obvious behavior: inputs are processed transiently and not stored or logged, results are exported as an AP2 artifact with an execution_hash, and gpu:true nodes always delegate to the browser. It also discloses that the FV-status receipt is a snapshot rather than a subscription. The cost is that this value is wrapped in repetitive boilerplate ('Deterministic OpenChainGraph compute node' restated).

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?

The functional content is buried under roughly the first half of the text, which is compute-binding boilerplate, a raw FV-status URL, and a SHA-256 hash fragment. The summary is truncated mid-sentence ('GP catch-up percentage, c...'), which is a structural defect rather than mere length. Several sentences repeat the same attestation/provenance idea.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-object compute tool with no output schema, the description does supply an output field list (verdict, tier_deltas, clawback, per_deal, rejected_inputs) and points to describe_tool for the full schema, which covers a lot. However, it never explains what verdict values mean, how rejected_inputs is populated, or what units/precision cashflows and pref rate expect — gaps that matter for a waterfall recompute.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters in detail; baseline 3 applies. The description adds a little meaning by naming the waterfall parameterization content (pref rate plus compounding basis, GP catch-up percentage) and by listing output fields, but the sentence is truncated mid-word, so the parameter detail it promised is lost.

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 summary states a specific verb and resource: recomputing a standard 4-tier PE distribution waterfall (return of capital, preferred return, GP catch-up, residual carry split) from caller-declared cashflows. That is enough to separate it from generic waterfall siblings, though it never names recompute_payment_waterfall, recompute_trustee_report_waterfall, or calc_equity_exit_waterfall explicitly. The purpose is clear but sits behind a wall of chain-provenance boilerplate.

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?

There is no explicit when-to-use / when-not-to-use guidance relative to the many other waterfall tools in the catalog. Usage is only implied by the required declared inputs (dated contribution/distribution cashflows plus a declared waterfall parameterization). The description does give real operational guidance for the compute mode (server vs browser delegation) and a data-handling constraint ('use synthetic or anonymised inputs only'), but that governs invocation mechanics, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_section16b_profitSection 16(b) Short-Swing Profit RecomputationA
Read-onlyIdempotent
Inspect

Section 16(b) Short-Swing Profit Recomputation: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-573-section16b-short-swing-profit-recompute.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: Recomputes an Exchange Act Section 16(b) short-swing profit figure from a caller-declared list of an insider's own transactions in the issuer's equity security, then compares the recomputed figure against a number a demand letter claims where one is supplied. Outputs: citations, comparison_basis, currency, demand_letter_claimed_profit_display, demand_letter_claimed_profit_minor_units, demand_letter_supplied, difference_display, difference_minor_units, excluded_transactions, fence, indeterminate_reason, insider_ref, insider_status, issuer_ref, matched_pairs, minor_unit_exponent, not_proven, note, purchase_count, rationale, rejected_inputs, sale_count, section_16a_applicability, six_month_window_day_threshold, total_profit_display, total_profit_minor_units, transaction_count, unmatched_purchase_shares, unmatched_sale_shares, usable_transaction_count, verdict. Output schema: call describe_tool("recompute_section16b_profit").

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: currency, demand_letter_claimed_profit_minor_units, insider_ref, insider_status, issuer_ref, transactions. Unknown keys are refused.

TDQS

A3.5/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), so the description's job is to add behavior beyond that, which it does: deterministic execution, server-side vs browser delegation, transient non-retained input processing, AP2 artifact export with execution_hash, and refusal of unknown keys. The enumerated outputs such as indeterminate_reason, not_proven, rejected_inputs, and excluded_transactions also foreshadow edge-case behavior. It stops short of describing how mismatched or excluded transactions are handled.

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?

The definition is heavily padded with platform boilerplate, a URL, an FV-status hash snapshot link, and a raw 30-item enumeration of output fields that duplicates what describe_tool would return. The essential purpose sentence is buried mid-document rather than front-loaded, so an agent scanning the opening sentences sees compute-mode plumbing instead of what the tool computes.

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?

There is no output schema, but the description enumerates return fields, which largely compensates. It also covers the nontrivial pieces an agent needs: required policy parameters, provenance chaining via parent_hashes/parent_tool_ids, compute-mode behavior, and a provenance artifact. For a nested-parameter analytics tool, this is close to complete, with the transaction-record shape being the main gap.

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 reported at 100%, so the baseline is 3. The description adds some meaning, notably that transactions are the insider's own and that the demand-letter figure is only compared 'where one is supplied' (i.e., optional), but the nested policy_parameters members carry no per-field descriptions and the description does not explain the transaction record shape, insider_status values, or the minor-units convention.

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 Summary sentence gives a precise verb and resource: recompute an Exchange Act Section 16(b) short-swing profit figure from a caller-declared transaction list and compare it against a demand letter's claimed figure. That clearly separates it from the many other recompute_* siblings. The problem is placement: the purpose sits after several paragraphs of platform boilerplate, so the agent must wade through compute-mode and provenance text before learning what the tool actually does.

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 conditions are implied rather than stated: the agent must infer that this tool is chosen when a 16(b) recompute is needed. The description does give real guidance on the compute parameter (auto vs browser, gpu delegation) and a hard constraint ('Use synthetic or anonymised inputs only'), but never names an alternative tool or states when-not to use this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_stablecoin_reserve_3sourceStablecoin Reserve 3-Source RecomputeA
Read-onlyIdempotent
Inspect

Stablecoin Reserve 3-Source Recompute: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-603-stablecoin-reserve-3source-recompute.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: Recomputes reserve ratio, weighted-average maturity, and per-holding GENIUS eligible-asset match from three independently-sourced legs (issuer disclosure with a per-asset-class breakdown, EDGAR N-MFP Part 1 series summary, declared on-chain supply), then reconciles them against each other, skew-g... Outputs: overall_determination, leg_a, leg_b, leg_c, max_as_of_skew_days_global, as_of_skew_pairs, as_of_skew_threshold_days, reserve_ratio, wam, genius_eligible_holdings, provisional_nprm_detail, reconciles, not_proven, determination_note, regulatory_framework. Output schema: call describe_tool("recompute_stablecoin_reserve_3source").

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". Unknown keys are refused.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses execution semantics (server-side Cloudflare Workers for gpu:false kernels, browser delegation otherwise), data-retention behavior ('processed transiently... not stored, logged, or retained'), AP2 artifact export with execution_hash, and an offline-verifiable FV-status receipt. These are meaningful behavioral traits that an agent could not infer from the readOnly/idempotent annotations alone.

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?

The description is poorly front-loaded: it opens with repeated boilerplate ('OpenChainGraph compute node... Deterministic OpenChainGraph compute node') and puts the actual purpose in a 'Summary' that is truncated ('skew-g...'). Substantial space is spent on a URL, a long FV-status hash path, and output enumeration, so several sentences do not earn their 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?

For a complex deterministic compute node with nested policy_parameters, the description covers compute modes, retention constraints, artifact export, and a detailed output list, while annotations cover safety and schema covers all four parameters. The main gap is that behavior when policy_parameters legs are null or missing is not described.

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 meaning by mapping the three independently sourced legs to issuer disclosure, EDGAR N-MFP Part 1, and declared on-chain supply, which clarifies what leg_a/leg_b/leg_c represent. It still does not explicitly map each leg key to its source or explain how null leg objects are handled.

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?

The summary states a specific verb and resource: it recomputes reserve ratio, weighted-average maturity, and per-holding GENIUS eligible-asset match from three independently sourced legs and reconciles them. This distinguishes it from siblings such as simulate_stablecoin_reserve, check_genius_reserve_disclosure, and verify_reserve_proof, even though the summary is truncated mid-sentence.

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 description gives compute-mode guidance (auto/server/browser, gpu:true always delegates) and an input-handling rule ('Use synthetic or anonymised inputs only'). However, it never states when to choose this tool over alternatives like simulate_stablecoin_reserve or precheck_reserve_attestation, nor does it name any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_stock_loan_rebate_feeStock-Loan Rebate/Fee RecomputeC
Read-onlyIdempotent
Inspect

Stock-Loan Rebate/Fee Recompute: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-579-stock-loan-rebate-recompute.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: Recomputes the periodic rebate or fee bill on an open securities loan that a borrower or beneficial owner receives from an agent lender or prime broker, using the caller's own declared daily collateral and rate data under the standard MSLA/SIFMA Actual/360 daily-accrual convention, then diffs the... Outputs: clause_note, decision, diff_tolerance_minor, findings, loan_count, loans, rejected_inputs, required_margin_pct, scope_note, statement_period, verdict. Output schema: call describe_tool("recompute_stock_loan_rebate_fee").

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: diff_tolerance_minor, loans, required_margin_pct, statement_period. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description does add genuinely useful context beyond that: server-side vs browser delegation semantics, transient processing with no storage or logging, and an AP2 artifact carrying execution_hash for provenance. However, it never explains what makes a computed diff pass or fail, what 'rejected_inputs' means, or what the FV-status receipt actually attests for this spec.

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?

The opening buries the purpose under a title restatement plus two redundant 'OpenChainGraph compute node' sentences. The most important sentence, the Summary, is truncated mid-clause, and a raw FV-status URL sits in the middle of prose. Boilerplate about compute binding duplicates the schema almost verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by listing output fields, but the list is a bare enum of names with no explanation of verdict, findings, or diff_tolerance_minor semantics. The truncated summary leaves the diff behavior undefined. Privacy and provenance are well covered, so an agent could invoke the tool but would struggle to interpret or validate the result.

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 compute, parent_hashes, parent_tool_ids, and the policy_parameters contract including which keys are required and that unknown keys are refused. The description briefly frames the data as 'the caller's own declared daily collateral and rate data', but adds no format, unit, or convention detail beyond the schema.

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 Summary names a specific verb and resource: recomputing the periodic rebate or fee bill on an open securities loan under MSLA/SIFMA Actual/360 daily accrual, then diffing it against the caller's declared collateral and rate data. That is clearly distinguishable in principle, but it arrives after three sentences of compute-node boilerplate and is truncated mid-sentence ('then diffs the...'). No sibling (e.g. compute_mlr_rebate, recompute_exchange_fee_tier_invoice) is named or contrasted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to pick this tool over the many neighboring rebate/fee recompute tools, and no prerequisites or exclusions. The only imperative guidance is privacy-related instructions ('use synthetic or anonymised inputs only') and compute-mode mechanics, neither of which helps tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_tmpg_fails_chargeTMPG Fails-Charge RecomputeA
Read-onlyIdempotent
Inspect

TMPG Fails-Charge Recompute: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-575-tmpg-fails-charge-recompute.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: Recomputes the NY Fed Treasury Market Practices Group fails-charge claim a buyer presents to a failing seller on a UST, agency, or agency-MBS settlement fail: charge = max(0, 3% minus the caller-declared reference rate) / 360 x par amount x days failed, per the published trading practice (2016 re... Outputs: clause_note, decision, determinations, diff_tolerance_minor, fail_count, rejected_inputs, scope_note, total_claimed_charge_minor, total_recomputed_charge_minor, verdict. Output schema: call describe_tool("recompute_tmpg_fails_charge").

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: diff_tolerance_minor, fails. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/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 adds real context on top: transient processing with no storage or logging, a client-side vs server-side execution split that can return a browser delegation URL, and an AP2 artifact export carrying execution_hash for provenance. It also clarifies that the FV-status link is a snapshot rather than a subscription. Minor weakness: compute-mode text largely restates the schema enum.

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?

Leads with low-value boilerplate ('OpenChainGraph compute node (compliance_control)'), repeats the compute-mode behavior already in the schema, embeds a long FV-status hash URL, and cuts the core formula off mid-sentence ('per the published trading practice (2016 re...'). The useful content is buried rather than front-loaded.

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?

With annotations covering the safety profile and no output schema, the description still enumerates all ten return fields and points to describe_tool for the schema, plus privacy and execution-mode details. The clipped formula and undocumented nested 'fails' entry structure keep it from being fully self-sufficient.

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?

Overall schema description coverage is 100%, so the baseline is 3. The description does add some meaning for the otherwise bare nested policy_parameters (reference rate, par amount, days failed feeding the formula), but it does not explain how the cutoff date, per-fail rejections, or diff_tolerance_minor behave.

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?

Names a specific verb (recompute) and a very specific resource (TMPG fails-charge on UST/agency/agency-MBS settlement fails) and even states the exact formula (max(0, 3% minus reference rate) / 360 x par x days). The domain specificity distinguishes it from the many other recompute_* siblings, though it never explicitly contrasts with any of them.

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 clear call scenario: recomputing a fails-charge claim that a buyer presents to a failing seller in a settlement fail. It does not name alternatives or state when not to use it, and the compute-mode paragraph is configuration guidance rather than usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_trustee_report_waterfallSecuritization Trustee-Report Waterfall RecomputationB
Read-onlyIdempotent
Inspect

Securitization Trustee-Report Waterfall Recomputation: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-568-securitization-trustee-report-recompute.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: Recomputes a securitization priority-of-payments waterfall for one stated distribution period from a caller-declared tier list and the period's own collections, then compares the recomputed distribution against what the monthly trustee report states was distributed. Outputs: citations, collections_by_type, comparison_basis, currency, deal_ref, diff, fence, first_unfunded_tier, indenture_ref, indeterminate_reason, minor_unit_exponent, not_proven, note, period_label, rationale, rejected_inputs, residual_by_type, residual_display, residual_minor_units, skipped_tier_count, tier_count, tiers, total_collections_display, total_collections_minor_units, total_paid_display, total_paid_minor_units, total_shortfall_display, total_shortfall_minor_units, triggers_evaluated, trustee_reported_supplied, verdict. Output schema: call describe_tool("recompute_trustee_report_waterfall").

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: currency, deal_ref, indenture_ref, period_collections, period_label, tiers, triggers, trustee_reported_distribution. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description goes meaningfully beyond that by disclosing server-vs-browser execution semantics, that gpu:true nodes always delegate, that inputs are processed transiently and not stored or logged, and that an AP2 artifact with execution_hash is exported for chain provenance. Missing only things like determinism guarantees on ordering or failure modes.

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?

The definition is bloated and poorly front-loaded: a title restatement, compute-node boilerplate, a raw spec URL and an FV-status JSON path all precede the one sentence that says what the tool does. The 30-field output enumeration is a list of bare names with no explanation, which consumes space without adding usable meaning. Several sentences could be cut or moved behind describe_tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-value burden, and a bare field list (verdict, fence, not_proven, diff, comparison_basis) does not explain what those values mean or how to read them. Execution, data-handling and provenance context are complete and useful. Missing are the semantics of the verdict/fence/not_proven outcomes and the expected input shape for the nested tier and collections structures.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters sub-object, including the required keys. The description adds some meaning by naming 'a caller-declared tier list and the period's own collections', but gives no format guidance for the free-form tiers, triggers, or period_collections values. Baseline 3 is appropriate.

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 Summary sentence gives a concrete verb and resource: it recomputes a securitization priority-of-payments waterfall for one stated distribution period from a caller-declared tier list and the period's own collections, then compares that against the trustee report's stated distribution. That is unmistakably distinct from generic payment-waterfall tools. It does not, however, name or rule out the closest siblings (compute_loan_servicing_waterfall_recompute, recompute_payment_waterfall, recompute_ccp_default_waterfall), and the actual purpose is buried after several sentences of compute-node boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over the many other waterfall/recompute siblings, and no exclusion criteria. The only usage-adjacent content is the compute-mode explanation and the constraint 'Use synthetic or anonymised inputs only', which governs how to invoke rather than when to select it. An agent must infer the selection context entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_x402_eip712_digestx402 EIP-712 Digest RecomputerA
Read-onlyIdempotent
Inspect

x402 EIP-712 Digest Recomputer: OpenChainGraph compute node (compliance_control). 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-700-authorization-payload-linter. Output feeds: art-591-x402-signer-recovery-verifier. Open at: https://ainumbers.co/chaingraph/art-590-x402-eip712-digest-recomputer.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: Recomputes the EIP-712 typed-data digest for an EIP-3009 TransferWithAuthorization struct (the x402 payments rail's underlying authorization primitive): domain separator, struct hash, and the final keccak256(0x19 || 0x01 || domainSeparator || structHash) digest. Outputs: verdict, reasons, domain, authorization, domain_separator, struct_hash, digest, domain_typehash, transfer_with_authorization_typehash, scope_note. Output schema: call describe_tool("recompute_x402_eip712_digest").

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". Unknown keys are refused.

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 behavior. The description adds useful context beyond that: transient processing with no storage/logging, a requirement for synthetic/anonymised inputs, and compute delegation details (server vs browser). It doesn't cover error modes, but the added data-handling and execution-mode transparency is valuable.

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?

The description is bloated with boilerplate: redundant opening sentences, a lengthy FV-status receipt explanation, and a URL that could be a separate field. The actual purpose and useful details are buried after the boilerplate, and key information is repeated in the closing Summary. It is not front-loaded and every sentence does not earn 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?

Given the cryptographic complexity, the description covers compute modes, data handling, upstream/downstream chaining, and lists all output fields. It points to describe_tool for the output schema. It is largely complete, though the parameter semantics rely on the schema and the description could be clearer about failure behavior.

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 input schema already fully documents the four parameters. The description adds some implicit context (upstream artifacts imply parent_hashes/parent_tool_ids chaining), but it doesn't explain policy_parameters fields or add syntax/format details beyond what the schema provides. Baseline 3 is appropriate.

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?

The description clearly states a specific verb+resource: recomputing the EIP-712 typed-data digest for an EIP-3009 TransferWithAuthorization struct, including domain separator, struct hash, and final keccak256 digest. It distinguishes this from the sibling recompute_x402_permit2_digest by naming the exact authorization primitive (EIP-3009 TransferWithAuthorization).

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?

It provides clear pipeline context: consumes upstream artifacts from art-700-authorization-payload-linter and feeds art-591-x402-signer-recovery-verifier. However, it does not explicitly say when to use this instead of alternatives like recompute_x402_permit2_digest (for Permit2) or decode_x402_payment, nor does it state exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_x402_permit2_digestX402 Permit2 Evidence RecomputerA
Read-onlyIdempotent
Inspect

X402 Permit2 Evidence Recomputer: OpenChainGraph compute node (compliance_control). 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. Output feeds: art-591-x402-signer-recovery-verifier, art-612-erc2612-permit-binding-verifier. Open at: https://ainumbers.co/chaingraph/art-699-x402-permit2-evidence-recomputer.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: Recomputes the Permit2 typed-data digest a payer's wallet signs for an x402 payment, for the three single-item message shapes the exact and upto schemes use: a witness transfer that binds the destination, an unwitnessed signature transfer, and an allowance permit. Outputs: allowance_expiry, digest, domain, domain_separator, domain_typehash, errors, handoff_591, handoff_612, message, nonce_facts, reasons, scope_note, signature_form, sponsored_approval, struct_hash, type_string, typehash, variant, verdict, warnings, window, x402_binding. Output schema: call describe_tool("recompute_x402_permit2_digest").

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: chainId, deadline, details, domain, eip2612GasSponsoring, from, nonce, nonce_already_used, now_unix, permitted, requirement, sigDeadline, signature, spender, variant, verifyingContract, version, witness. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-open-world annotations, the description discloses genuinely new behavior: server-side execution on Cloudflare Workers for gpu:false kernels, browser delegation semantics, transient processing with no storage/logging/retention, the 'synthetic or anonymised inputs only' constraint, and the AP2 artifact with execution_hash for chain provenance. These are the operational facts an agent needs but 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The key purpose sentence is buried after node boilerplate, an 'Open at' URL, and an FV-status hash line, so the definition is not front-loaded. The 20-field output list is dense but partly earns its place because no output schema exists. The boilerplate preamble is the main waste.

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?

With no output schema, the description usefully enumerates the return fields and the artifact/handoff behavior, and it covers compute modes and data-retention constraints. It is still short of complete because it does not say how to choose among the three variants or what the errors/warnings/verdict fields signify when the recomputation fails.

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%, including the compute-mode enum semantics and the list of required policy_parameters keys, so the baseline is 3. The description adds only marginal meaning beyond the schema: it names the three message variants that the 'variant' key selects, but does not explain which policy_parameters matter for which variant.

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 'Summary' sentence states a specific verb and resource (recompute the Permit2 typed-data digest a payer signs for an x402 payment) and scopes it to three named message shapes: witness transfer, unwitnessed signature transfer, and allowance permit. That is far more precise than the title alone. It loses a point because it never distinguishes itself from the very close sibling recompute_x402_eip712_digest, which appears in the same tool list.

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 context is implied rather than stated: it names downstream consumers (art-591 signer-recovery-verifier, art-612 erc2612-permit-binding-verifier) and explains the compute:'auto'/'server'/'browser' selection rules. However, there is no explicit when-to-use / when-not-to-use guidance relative to recompute_x402_eip712_digest, verify_x402_signer_recovery, or check_x402_domain_nonce_window, leaving the agent to infer tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_aml_lookback_completenessAML Lookback Completeness ReconcilerB
Read-onlyIdempotent
Inspect

AML Lookback Completeness Reconciler: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-470-lookback-completeness-reconciler.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: Reconciles an AML consent-order remediation lookback's order-scope population against the extract actually produced for re-screening, per historical period. Outputs: gap_periods, lookback_status, overall_coverage_pct, period_count, periods, total_duplicate_count, total_extract_record_count, total_source_record_count, unverifiable_periods, verifiable_extract_count, verifiable_source_count. Output schema: call describe_tool("reconcile_aml_lookback_completeness").

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: periods. Unknown keys are refused.

TDQS

B3.2/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 behavior, and the description adds meaningful context beyond that: deterministic compute, server vs browser delegation, transient processing with no storage/logging/retention, and AP2 artifact export with execution_hash. It remains somewhat generic and does not explain how the reconciliation result itself is derived, but the behavioral disclosure is substantial.

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?

The description is cluttered with generic platform boilerplate, compute-mode details, a URL, an FV-status hash, and a describe_tool instruction. The actual purpose is present but appears after generic platform text, so the definition is not front-loaded and several sentences do not earn their place for selecting or invoking this specific tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and although the description lists output field names, it does not explain their meanings or how to interpret values such as gap_periods or lookback_status. It also leaves the required periods structure largely to the schema, which is only minimally descriptive. The definition is adequate but has clear gaps for a nested, domain-specific reconciliation tool.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description does not add much parameter-specific meaning beyond what the schema provides, and the nested periods array remains structurally underspecified despite being required.

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 description gives a specific verb and resource: it reconciles an AML consent-order remediation lookback's order-scope population against the extract produced for re-screening, per historical period. That is much clearer than the tool name alone, but it does not explicitly distinguish this tool from related siblings such as roll_up_aml_lookback_disposition or plan_aml_disposition_sample.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case through its summary, but it does not state when to use this tool versus alternatives or when not to use it. It also does not mention related AML lookback tools, so an agent must infer routing from the name and summary alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_commission_statementCommission Statement ReconcilerC
Read-onlyIdempotent
Inspect

Commission Statement Reconciler: OpenChainGraph compute node (compliance_mandate). 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-264-validate-commission-hierarchy. Output feeds: art-265-amortize-asc606-commissions. Open at: https://ainumbers.co/chaingraph/art-266-reconcile-commission-statement.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: Line-item reconciliation of expected vs. Outputs: discrepancy_amount, discrepancy_classification, discrepancy_pct, has_discrepancy, line_count, line_results, not_legal_advice, pii_note, regulatory_basis, table_source, table_version, tolerance_pct, total_expected, total_stated. Output schema: call describe_tool("reconcile_commission_statement").

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". Unknown keys are refused.

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description does add genuine context beyond that: server-vs-browser compute delegation, transient processing with no storage/logging, a synthetic-or-anonymised-input requirement, and an AP2 export with execution_hash. However this is generic boilerplate shared across the compute-node family rather than anything specific to commission reconciliation.

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?

The text is dominated by generic ChainGraph boilerplate and a long FV-status hash plus URL that an agent cannot act on, while the one sentence that explains the function is cut off. The useful content (summary and output list) is buried mid-paragraph rather than front-loaded, and 'Output schema: call describe_tool(...)' pushes work elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a nested policy_parameters object, the description should carry the burden of explaining inputs and result shape. It lists 13 output field names (helpful) but never explains what statement_lines contains, how discrepancies are classified, or what tolerance_pct does — and the functional summary is truncated. Only the provenance/compute aspects are complete.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters are already documented. The description restates the compute mode semantics redundantly and only tangentially touches policy_parameters via the tolerance_pct output name. It adds no meaning about statement_lines, which is the substantive input for a reconciliation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name/title and one phrase ('Line-item reconciliation of expected vs.') indicate the verb and resource, but that core sentence is truncated mid-clause, so the actual comparison semantics are never stated. The chain position (consumes art-264-validate-commission-hierarchy, feeds art-265-amortize-asc606-commissions) helps place it, but it is not distinguished from the many sibling reconcile_* tools. An agent can guess the domain but not the operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives such as validate_commission_hierarchy, amortize_asc606_commissions, or the other reconcile_* tools. The only usage signal is implicit workflow ordering via the upstream/downstream artifact references. No prerequisites, exclusions, or preconditions are described.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_emir_pairingEMIR Counterparty Pairing ReconcilerC
Read-onlyIdempotent
Inspect

EMIR Counterparty Pairing Reconciler: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-157-emir-lifecycle-event-validator. Open at: https://ainumbers.co/chaingraph/art-156-emir-counterparty-pairing-reconciler.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint, idempotent, non-destructive), but the description adds real behavioral context: inputs are processed transiently and not retained, server-vs-browser execution produces a delegation URL instead of a result, and output is a deterministic AP2 artifact with execution_hash plus an offline-verifiable FV receipt. No contradiction with the read-only/idempotent hints, since the 'export' is a returned artifact rather than stored state.

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?

Roughly two-thirds of the text is reusable infrastructure boilerplate (compute binding rules, retention policy, FV-status JSON path, page URL) that appears identical across the whole tool family. It is front-loaded with the name but never gets to the operation, and the long status-hash sentence adds little for tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compliance-mandate reconciliation node with an opaque nested policy_parameters object and no output schema, the description should say what the pairing check consumes and returns, and how failures are surfaced. Instead it documents plumbing only, leaving the agent unable to predict inputs beyond manifest lookup or interpret the resulting artifact.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters; the description adds nothing beyond duplicating the compute-mode semantics. Crucially, policy_parameters is an open object whose fields carry the entire decision input, and neither schema nor description enumerates them ('See the tool's manifest'), so the description misses the one place it could have compensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description leads with 'EMIR Counterparty Pairing Reconciler' and then only describes the OpenChainGraph compute platform (compute modes, privacy, AP2 export). It never states what the reconciliation actually does — which trades/parties are paired, what a mismatch means — so it effectively restates the name and title. A downstream pointer ('Output feeds: art-157-emir-lifecycle-event-validator') is the only substantive clue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to select this tool versus near-neighbours such as adjudicate_emir_reconciliation, age_emir_reconciliation_breaks, validate_emir_trade_report or check_emir_uti_completeness. The only conditional language concerns compute mode ('auto'/'browser'), which is execution mechanics, not tool selection. 'Use synthetic or anonymised inputs only' is a data constraint, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_erc8056_multiplierERC-8056 Multiplier ReconcilerB
Read-onlyIdempotent
Inspect

ERC-8056 Multiplier Reconciler: OpenChainGraph compute node (collateral_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-317-rhc-multiplier-reconciler.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: Reconciles Robinhood Chain stock-token corporate actions against the ERC-8056 scaled UI amount surface. Outputs: computed_ratio, declared_action_type, discrepancies, event_count, expected_ratio, ratio_match, raw_balance_invariant, verdict. Output schema: call describe_tool("reconcile_erc8056_multiplier").

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". Unknown keys are refused.

TDQS

B3.4/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, and the description adds genuinely new behavior: inputs are processed transiently and not stored or logged, compute:'browser' returns a delegation URL instead of a result, and each call exports an AP2 artifact carrying an execution_hash for chain provenance. It also warns to use synthetic or anonymised inputs only. The one omission is that no output schema exists and the return payload shape is only named, not described.

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?

The function-specific content is one sentence at the very end, preceded by repeated boilerplate ('OpenChainGraph compute node', 'Deterministic OpenChainGraph compute node'), a raw documentation URL, and a long hex FV-status path. Roughly the first two-thirds of the text does not help an agent decide whether or how to invoke this tool, and the actual purpose is not front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, naming the output fields (computed_ratio, discrepancies, verdict, etc.) and pointing to describe_tool for the full schema is a reasonable substitute. But the decision function's inputs in policy_parameters are left as opaque untyped keys, so an agent knows what comes back but not what to supply. Adequate but incomplete for a compute tool of this apparent complexity.

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 enum values, parent_hashes chaining, and the 'unknown keys are refused' rule are already documented. The description mostly restates the compute-mode semantics rather than adding format or validation detail the schema lacks. The nested policy_parameters keys (event_log, declared_action, prior_multiplier, etc.) remain untyped and unexplained in both places.

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 'Summary' line states a specific verb and resource: 'Reconciles Robinhood Chain stock-token corporate actions against the ERC-8056 scaled UI amount surface', which is clearly distinct from the other reconcile_* siblings. The concrete output list (ratio_match, raw_balance_invariant, verdict) further pins down what it produces. However, the purpose is buried after several paragraphs of infrastructure boilerplate, so an agent must read past the noise to find it.

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?

No explicit statement of when to call this rather than a nearby sibling (e.g. reconcile_token2022_transfer_fee, recompute_corporate_action_entitlement). The only usage guidance is about compute modes ('auto' vs 'browser' vs 'server') and the gpu:true delegation, which is operational guidance rather than tool-selection guidance. Usage is implied by the subject matter alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_mpp_subscriptionTempo Subscription & Streaming Settlement ReconcilerB
Read-onlyIdempotent
Inspect

Tempo Subscription & Streaming Settlement Reconciler: OpenChainGraph compute node (settlement_mandate). 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-36-tempo-mpp-agent-mandate. Output feeds: cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-106-tempo-subscription-reconciler.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: Reconcile executed MPP recurring/streamed draws against the authorized mandate envelope, prove draw-set integrity via Merkle root, and detect per-cycle cap breaches, cumulative-cap violations, and mandate-expiry/revocation breaches. Outputs: breaches, cumulative_ok, cycles_ok, draw_count, draw_merkle_root, residual_envelope, total_drawn, verdict. Output schema: call describe_tool("reconcile_mpp_subscription").

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: draws, envelope. Unknown keys are refused.

TDQS

B3.2/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 the description adds genuinely new context: compute-mode delegation semantics, transient no-storage processing, and the exported AP2 artifact with execution_hash. It stops short of describing failure modes or how breaches are enumerated, but it contributes real behavioral detail beyond annotations.

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?

The definition is front-loaded with title restatement, platform boilerplate, a marketing URL, and an opaque 64-character FV-status hash before reaching the actual purpose in the final sentence. Multiple sentences add no selection or invocation value, forcing the agent to sift noise to find the operative summary.

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?

Given a nested policy_parameters object and no output schema, the description compensates by enumerating the returned fields and naming the artifact chain, which is enough to call and interpret the tool. The main gap is that the required input shape (draws/envelope structure) is only named, not characterized.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates compute-mode behavior and the required draws/envelope keys rather than adding syntax or format detail, so it sits at the baseline for a fully documented schema.

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 Summary sentence gives a specific verb and resource ('Reconcile executed MPP recurring/streamed draws against the authorized mandate envelope') plus concrete outputs (breaches, residual_envelope, draw_merkle_root). It does not name the nearest siblings (verify_tempo_mpp_voucher, decode_mpp_session, authorize_payment_against_mandate), so differentiation is left implicit. The core purpose is clear but buried under unrelated platform boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not guidance. It states upstream artifact (art-36-tempo-mpp-agent-mandate) and downstream consumer (cry-04-merkle-batch-verifier), which implies pipeline position, but never says why an agent would pick this over authorize_payment_against_mandate or verify_tempo_mpp_voucher. Usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_report_to_general_ledgerReport-to-General-Ledger ReconciliationA
Read-onlyIdempotent
Inspect

Report-to-General-Ledger Reconciliation: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-526-report-gl-reconciliation.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: Ties a caller-declared reported figure to a caller-declared general-ledger figure, by account -- the only node in this reconciliation programme checked against an independent book of record rather than a second declared value. Outputs: as_of, currency, appendix_schedule_version, appendix_schedule_source, reporting_cadence, schedule_cadence, cadence_refused, gl_closed_declared, gl_closed, gl_as_of, account_count, accounts, breaking_account_count, plugged_account_count, decision, rejected_inputs, rationale, note. Output schema: call describe_tool("reconcile_report_to_general_ledger").

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: accounts, appendix_schedule_source, appendix_schedule_version, as_of, currency, gl_as_of, gl_closed, tolerance_minor_units. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, but the description adds substantial context beyond them: transient, non-retained input handling, a synthetic/anonymised-data requirement, server-vs-browser compute behavior, gpu:true delegation, and an AP2 artifact with execution_hash for provenance. These are genuinely useful operational traits not in 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose, compute semantics, data-handling policy, and output field list all earn their place, but the spec URL and the lengthy FV-status receipt sentence are tangential and the actual purpose is pushed to the Summary after front-loaded boilerplate. It is informative but not tightly structured or front-loaded.

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?

With no output schema, the description compensates by enumerating the output fields (as_of, currency, account_count, decision, etc.), and annotations plus the data-handling and compute-mode notes cover safety and execution. For a 4-param, nested-schema compute tool this is largely complete, though the reconciliation/decision semantics of the fields remain unexplained.

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 the required policy_parameters keys are all documented in the schema's policy_parameters description. The description echoes the compute modes already in the compute parameter's schema, adding little new meaning; baseline 3 is appropriate when the schema carries the semantics.

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 Summary states a specific verb and resource (ties a reported figure to a general-ledger figure by account) and differentiates it from siblings ('the only node in this reconciliation programme checked against an independent book of record rather than a second declared value'). However, the purpose is buried after several sentences of platform boilerplate (compute node, attestation_mandate), so it is not front-loaded.

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 implied by the distinction of being checked against an independent book of record, suggesting it fits when a genuine GL exists. But there is no explicit when-to-use/when-not guidance and no direct routing to sibling reconciliation tools (reconcile_emir_pairing, recon_match, compute_gl_tieout_recompute), leaving the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_sii_ifrs17SII-IFRS 17 Reconciliation BridgerA
Read-onlyIdempotent
Inspect

SII-IFRS 17 Reconciliation Bridger: OpenChainGraph compute node (compliance_mandate). 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-180-solvency2-scr-ratio-calculator. Output feeds: art-182-insurance-reporting-readiness-diagnostic. Open at: https://ainumbers.co/chaingraph/art-181-sii-ifrs17-reconciliation-bridger.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: Bridge Solvency II technical provisions (best estimate + risk margin) to IFRS 17 insurance contract liabilities (fulfilment cash flows + risk adjustment + CSM). Outputs: bel_fcf_delta, bridge_delta, bridge_within_tolerance, ifrs17_csm, ifrs17_fcf, ifrs17_insurance_contract_liabilities, ifrs17_ra, ra_vs_risk_margin_ratio_pct, relative_bridge_delta_pct, rm_ra_delta, sii_best_estimate, sii_risk_margin, sii_technical_provisions. Output schema: call describe_tool("reconcile_sii_ifrs17").

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". Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/non-destructive), the description discloses genuinely non-obvious traits: deterministic computation, the compute:auto vs server vs browser delegation semantics including that gpu:true nodes always delegate to the browser, transient processing with no storage or logging, and that an AP2 artifact with execution_hash is exported for provenance. That is exactly the extra context annotations cannot carry.

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?

The definition opens with near-duplicate sentences ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.') and includes a full provenance URL, a 64-character FV-status hash and a 'describe_tool("reconcile_sii_ifrs17")' pointer. The one sentence that tells the agent what the tool actually does is deferred to the end under 'Summary:'.

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?

With no output schema, the description compensates by enumerating all eleven returned fields, and it names the upstream and downstream chain artifacts. What is missing is any description of the domain inputs (the provisions object) or tolerance semantics behind bridge_within_tolerance, but overall the agent has enough to call it 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 description coverage is 100%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters in detail. The description adds nothing about the policy_parameters contents (the nested 'provisions' object, which is the actual domain input) and merely repeats the compute-mode explanation. 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?

The Summary clause states a specific verb and resource: 'Bridge Solvency II technical provisions (best estimate + risk margin) to IFRS 17 insurance contract liabilities'. The enumerated output fields (bel_fcf_delta, ifrs17_csm, ra_vs_risk_margin_ratio_pct) make it distinguishable from neighbouring IFRS 17 tools like check_ifrs17_risk_adjustment or validate_ifrs17_csm_rollforward. However the actual purpose is buried after three sentences of platform boilerplate, so an agent skimming the lead sentence sees only 'compute node (compliance_mandate)'.

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 context is implied rather than stated: 'Consumes upstream artifacts from: art-180-solvency2-scr-ratio-calculator' and 'Output feeds: art-182-insurance-reporting-readiness-diagnostic' tell the agent where this sits in a chain. There is no explicit when-to-use versus the many sibling IFRS 17 tools, and no statement of preconditions beyond 'use synthetic or anonymised inputs only'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_token2022_transfer_feeToken-2022 Transfer-Fee Payment ReconcilerB
Read-onlyIdempotent
Inspect

Token-2022 Transfer-Fee Payment Reconciler: OpenChainGraph compute node (settlement_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-715-token2022-transfer-fee-reconciler.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: Recomputes the transfer fee a Token-2022 mint with the transfer-fee extension withholds and the net amount the recipient receives, given the fee schedule, the TransferChecked amount, the execution epoch and the amount a payment verifier credited, then reconciles the credited amount against that n... Outputs: consumer_view, credited_amount, credited_minus_net, declared_fee, detail, domain_errors, epoch_race, error, execution_epoch, fee, fee_mismatch, min_pre_fee_for_net, net, note, reconciliation, schedule, verifier_epoch, withheld_added. Output schema: call describe_tool("reconcile_token2022_transfer_fee").

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: older_transfer_fee, newer_transfer_fee, amount, execution_epoch, instruction, credited_amount. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only and idempotent annotations, the description discloses server-side versus browser delegation behavior, transient input processing with no storage or logging, and AP2 artifact export with execution_hash provenance. It does not contradict the annotations. The main remaining gap is that it does not describe response interpretation or error behavior in detail.

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?

The description repeats boilerplate such as 'Deterministic OpenChainGraph compute node,' includes a long FV-status URL, and lists many output names before or around the actual reconciliation summary. The core purpose is delayed and the text is not front-loaded, making it harder to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a rich input schema and annotations, and the description adds compute delegation and data-handling context. However, it has no output schema, lists output field names without explaining their meaning, and its reconciliation summary is truncated, so an agent still lacks some detail needed to interpret results confidently.

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 the parameters, including compute modes and required policy_parameters keys. The description adds business context by naming fee schedule, TransferChecked amount, execution epoch, and credited amount, but it does not explain every parameter or go far beyond the schema.

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 description gives a specific verb and resource: it recomputes Token-2022 transfer fees and reconciles the credited amount against the net recipient amount. It is clear what the tool does, but it does not explicitly distinguish itself from related sibling tools such as other reconciliation or fee recomputation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and privacy constraints, but it does not say when to use this tool versus alternatives or when not to use it. The only usage constraint is 'Use synthetic or anonymised inputs only,' which does not guide tool selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_v4_hook_permissionsV4 Hook Permission ReconcilerB
Read-onlyIdempotent
Inspect

V4 Hook Permission Reconciler: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-708-v4-hook-permission-reconciler.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: Decodes a Uniswap v4 hook address's 14 permission bits against a caller-declared callback set, replicates v4-core's isValidHookAddress rule (including the dynamic-fee escape), and reconciles a hooklist dynamicFee declaration with the pool fee. Outputs: hook_address, decoded_bits, flags, mismatches, mismatch_count, valid_hook_address, failing_rule, pool_fee, v4_core_commit, declaration_source, dynamic_fee_declaration, assumptions, error, detail, domain_errors. Output schema: call describe_tool("reconcile_v4_hook_permissions").

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: hook_address, declared_permissions. Unknown keys are refused.

TDQS

B3.2/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), and the description adds genuinely new behavior: deterministic server-side compute on Cloudflare Workers with a browser-delegation escape hatch, transient non-retained input processing, and an exported AP2 artifact carrying execution_hash for chain provenance. The offline-verifiable FV-status snapshot is useful provenance context. The main weakness is that much of this reads as shared template boilerplate rather than tool-specific 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?

The actual purpose appears only after a long preamble about compute nodes, data retention, and a FV-status URL with a 64-character hash. The 'Output schema: call describe_tool(...)' line offloads work to another call rather than delivering content, and the boilerplate is longer than the tool-specific substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description enumerates all output fields (hook_address, decoded_bits, mismatches, valid_hook_address, failing_rule, v4_core_commit, domain_errors, etc.), which compensates for the missing output schema, and it flags that unknown policy_parameters keys are refused. However, for a nested-object, four-parameter reconciliation tool it still leaves the declared_permissions structure and the mismatch semantics unexplained.

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 baseline is 3. The description does add semantic framing the schema lacks by naming the 'caller-declared callback set' and 'hooklist dynamicFee declaration' that populate declared_permissions and pool_fee, but it supplies no syntax, format, or bit-level encoding details for hook_address or the declared_permissions object.

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 Summary section states a specific verb and resource: it decodes a Uniswap v4 hook address's 14 permission bits, replicates v4-core's isValidHookAddress rule, and reconciles a dynamicFee declaration against the pool fee. That is far more precise than the title, but it never distinguishes itself from the sibling check_v4_hook_fee_conformance, which appears to occupy adjacent territory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage constraint offered is 'Use synthetic or anonymised inputs only', which is a data-handling warning rather than when-to-use guidance. There is no statement of when this reconciler should be chosen over check_v4_hook_fee_conformance or the other v4-related siblings, and no prerequisites beyond the required keys buried in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_x402_batch_settlementx402 V2 Batch-Settlement ReconcilerA
Read-onlyIdempotent
Inspect

x402 V2 Batch-Settlement Reconciler: OpenChainGraph compute node (settlement_mandate). 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-03-x402-settlement-modeler, art-60-agent-economy-runtime-fit-diagnostic. Output feeds: art-62-ap2-payment-receipt-verifier, cry-04-merkle-batch-verifier, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-61-x402-batch-settlement-reconciler.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: Reconciles an x402 V2 batch settlement (off-chain payment vouchers vs onchain batch total), verifying recon verdict, per-voucher amounts, settlement-risk window (unredeemed voucher exposure), and computing an educational Merkle root over the voucher set. Outputs: batch_delta_minor_units, batch_id, escrow_address, merkle_root_preimage, note, recon_verdict, redeemed_count, redeemed_total, settlement_asset, settlement_risk_window, status_asof, unredeemed_value, voucher_count, voucher_findings, within_tolerance. Output schema: call describe_tool("reconcile_x402_batch_settlement").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior5/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), and the description adds real behavioral context beyond them: deterministic computation, compute-mode routing (auto/server/browser, gpu:true always delegates), transient input processing with no storage or logging, and that it exports an AP2 artifact carrying execution_hash for chain provenance. It also discloses the FV-status receipt verifies offline, which is a meaningful caveat for how to treat the status claim.

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?

The purpose is not front-loaded: the first sentences are near-duplicate boilerplate ('OpenChainGraph compute node... Deterministic OpenChainGraph compute node') that would apply to any node in this family, and a raw FV-status hash plus a URL occupy space that should have gone to the purpose. The one genuinely useful sentence is buried in the middle of the block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because there is no output schema, the description's output-field listing (batch_delta_minor_units, merkle_root_preimage, within_tolerance, etc.) is genuinely necessary and is present. However, the nested policy_parameters object is untyped in the schema and the description does not say what a batch or voucher entry must look like, which is the main gap for calling the tool 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 description coverage is 100%, so the baseline is 3; the schema already explains compute modes and parent_hashes/parent_tool_ids. The description adds little parameter-level meaning beyond the reconciliation concepts (tolerance, finality) implied by the outputs, and never explains the untyped keys inside policy_parameters (batch, vouchers).

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 'Summary' sentence states a precise verb and resource: 'Reconciles an x402 V2 batch settlement (off-chain payment vouchers vs onchain batch total)', including the specific checks (recon verdict, per-voucher amounts, settlement-risk window, Merkle root). This is specific enough that confusion with neighbours like model_x402_settlement or simulate_x402_flow is unlikely, but no sibling is named and the actual purpose is buried after several lines of generic compute-node boilerplate.

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?

There is no explicit when-to-use / when-not-to-use guidance or named alternative. Usage is only implied via the artifact chain ('Consumes upstream artifacts from... Output feeds: art-62..., cry-04..., cry-05...'), which tells an agent where this sits in a pipeline, plus the constraint 'Use synthetic or anonymised inputs only.' That is useful positioning but not a decision rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recon_matchMatch a camt.053 statement against a counterpart expectation setA
Read-onlyIdempotent
Inspect

Parses a camt.053.001 statement (same schema-subset checks as camt053_parse) and a counterpart expectation set (CSV, header EndToEndId,Amount,Currency,Date -- same strict RFC 4180 parser as the WORKBOOK-1 CSV tools), then runs the SAME deterministic match engine as the tools/565 browser workbench: EndToEndId exact match first (statement order), then amount+date tolerance + currency match (first unmatched expectation in CSV order). Returns matches, exceptions (unmatched entries/expectations), and a reconciliation receipt (statement digest, expectation-set digest, match-rule declaration, counts, exception digests, execution_hash) -- byte-identical to the browser tool for the same inputs. Prepare/hash/receipt only; per-exception disposition receipts are the browser workbench's interactive follow-on.

NameRequiredDescriptionDefault
statement_xmlYescamt.053.001 XML statement document text.
amount_toleranceNoAbsolute amount-match tolerance (default 0.01).
expectations_csvYesCounterpart expectations, CSV with header EndToEndId,Amount,Currency,Date.
date_tolerance_daysNoDate-match tolerance in days (default 0).

TDQS

A4.4/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 description earns credit for adding what those can't: the exact matching algorithm order (EndToEndId first, then amount+date tolerance with currency), the determinism guarantee, and the receipt's contents (digests, rule declaration, execution_hash). It does not cover failure behavior (malformed XML, duplicate EndToEndIds, overflow of exceptions), which keeps it short of 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?

It is front-loaded with the action and the pipeline composition, then moves to returns and scope. The single dense sentence with nested parentheticals is heavy prose, but nearly every clause adds decision-relevant information rather than repeating the schema or title.

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?

There is no output schema, and the description fully compensates by enumerating the return surface (matches, exceptions, reconciliation receipt with named digest fields). Combined with the algorithm and the explicit prepare-only scope, an agent has everything needed to call it 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% and defaults are documented, so the baseline is 3. The description still adds real semantics by naming the CSV header contract (EndToEndId,Amount,Currency,Date) and explaining that amount_tolerance/date_tolerance_days participate together in the secondary match pass, which the schema alone does not convey.

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 pair (match a camt.053 statement against a CSV expectation set) and immediately names the two pipelines it reuses (camt053_parse checks, WORKBOOK-1 CSV parser). It is clearly distinguishable from the sibling camt053_parse (parse only) and workbook_csv_parse (CSV only) because it explicitly composes both plus a match engine.

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?

The closing clause 'Prepare/hash/receipt only; per-exception disposition receipts are the browser workbench's interactive follow-on' draws a clear boundary on when this tool stops. It also signals via 'same schema-subset checks as camt053_parse' that parse-only work belongs elsewhere, but it never names a sibling alternative for the pure-parse or pure-CSV case explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_fund_positionsRecord Fund PositionsA
Read-onlyIdempotent
Inspect

Record Fund Positions: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-558-record-fund-positions.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: Gives a fund's declared positions snapshot, as of a stated valuation date, its own citable execution_hash -- the upstream input-receipt that the proven NAV chain (art-373-recompute-fund-nav) currently hashes internally, and that a separate wiring node can instead cite via an optional positions_re... Outputs: disclosure_note, fence, fund_id, holding_count, holdings, not_proven, shares_outstanding, structural_error, valuation_date. Output schema: call describe_tool("record_fund_positions").

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: holdings, shares_outstanding. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavior: server-side versus browser delegation, GPU-node delegation, transient processing with no storage or logging, the requirement to use synthetic or anonymised inputs, and export of an AP2 artifact with execution_hash for provenance. These are substantive operational and privacy details that help an agent understand the tool's 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?

The description is long, dense, and poorly front-loaded: the key purpose appears in a Summary near the end after extensive compute-node and provenance boilerplate. It includes a URL, FV-status JSON path, and a truncated sentence, reducing clarity. Many sentences do not earn their place for tool selection.

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?

Given the tool's complexity, the description covers compute modes, data handling, provenance, and lists the output fields. The schema is fully described, and the annotations carry the safety profile. Some output fields are named without explanation and one sentence is truncated, but overall an agent has enough context to invoke it 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 description coverage is 100%, so the schema already documents compute modes, parent_hashes, parent_tool_ids, and policy_parameters. The description reinforces compute behavior and the policy parameter requirements, but it adds little syntax or semantics beyond the schema. A baseline 3 is appropriate.

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 description eventually states a specific purpose: it gives a fund's declared positions snapshot as of a valuation date, along with a citable execution_hash. It also distinguishes itself from the related NAV recomputation sibling by explaining that this is the upstream input receipt the NAV chain hashes internally. However, the core purpose is buried after compute-node boilerplate, so it is clear but not crisply front-loaded.

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 description explains compute modes and mentions the relationship to the NAV chain and a separate wiring node, which implies when this artifact is useful. But it does not give explicit when-to-use versus when-not-to-use guidance against alternatives like recompute_fund_nav. The usage context is inferable rather than directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_index_constituentsRecord Index ConstituentsA
Read-onlyIdempotent
Inspect

Record Index Constituents: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-557-record-index-constituents.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: Gives an index's constituent set, as of a stated date, its own citable execution_hash -- the BMR/SEBI-shaped starting point ('what was in the index and why') that every downstream weighting or rebalance artifact cites rather than re-declaring. Outputs: as_of_date, constituent_count, constituents, eligibility_criteria_ref, fence, index_id, not_proven, regulatory_framework, selection_universe_size, structural_error. Output schema: call describe_tool("record_index_constituents").

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: constituents, selection_universe_size. Unknown keys are refused.

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/closed-world, yet the description adds real behavioral context: deterministic execution, server-side Cloudflare Workers vs browser delegation URLs, transient processing with no storage/logging/retention, an instruction to use only synthetic or anonymised inputs, and emission of an AP2 artifact with execution_hash. The FV-status 'snapshot, not a subscription' note about offline verification is also useful. Minor deduction for the volume of provenance/marketing boilerplate diluting these facts.

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?

The description opens with a name-restating line and is dominated by long opaque hashes, a documentation URL, and an FV-status receipt paragraph that do little for tool selection. The genuinely useful purpose sentence is buried mid-paragraph under 'Summary:'. Front-loading and pruning would materially improve it.

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?

No output schema exists, and the description compensates by enumerating the returned fields (as_of_date, constituent_count, constituents, eligibility_criteria_ref, fence, index_id, not_proven, regulatory_framework, selection_universe_size, structural_error). Combined with the privacy and provenance disclosures, an agent has enough to call it correctly; the remaining gap is the nesting/required-key semantics of policy_parameters.

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 baseline is 3. The description does not clarify the split between top-level chaining parameters (parent_hashes, parent_tool_ids) and policy_parameters, nor does it explain the nested policy keys (index_id, as_of_date, selection_universe_size, eligibility_criteria_ref), which the schema leaves as bare untyped properties. It only hints at index_id/as_of_date via the prose 'an index's constituent set, as of a stated date.'

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 'Summary' sentence gives a concrete verb+resource: it produces an index's constituent set as of a stated date with its own citable execution_hash, and frames it as the BMR/SEBI-shaped base artifact that downstream weighting/rebalance tools cite. That implicitly distinguishes it from siblings like compute_index_weights or compile_rebalance_evidence_pack. The first line, however, is boilerplate ('OpenChainGraph compute node (attestation_mandate)') that restates the name rather than stating the purpose, so the real clarity arrives late.

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 implied rather than stated: it is described as the starting point that downstream weighting or rebalance artifacts cite instead of re-declaring. There is detailed guidance on the compute mode (auto/server/browser, gpu:true always delegates), but that is operational, not tool-selection guidance. No explicit when-to-use / when-not / alternatives section naming record_index_correction or the weighting tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_index_correctionRecord Index CorrectionC
Read-onlyIdempotent
Inspect

Record Index Correction: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-647-record-index-correction.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.

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". See the tool's manifest for field names.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent), the description discloses meaningful traits: inputs are processed transiently and not stored/logged, gpu:true nodes always delegate to browser, and it exports an AP2 artifact with execution_hash for provenance. It adds real behavioral context that the readOnlyHint alone does not convey.

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?

The text is bloated with template boilerplate, a repeated 'Deterministic OpenChainGraph compute node' phrase, an external URL, and a long FV-status hash string. The actual purpose is not front-loaded; infrastructure detail crowds out the substantive function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description partially compensates by noting the exported AP2 artifact and execution_hash. But for a compute node taking a nested policy_parameters object, it never explains what the computation returns or what the correction semantics are, leaving a functional gap.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description's compute-mode explanation largely duplicates the schema field description, and it adds nothing about policy_parameters beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description leads by restating the name/title ('Record Index Correction: OpenChainGraph compute node') and then describes generic runtime mechanics (compute modes, AP2 artifact export) rather than what an 'index correction' actually computes. An agent cannot distinguish this from siblings like record_index_constituents or compute_index_weights, since no functional verb+resource is stated.

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?

It gives real guidance on the compute parameter's auto/server/browser behavior and a clear constraint ('Use synthetic or anonymised inputs only'). However, it offers no guidance on when to choose this tool over the many sibling record/compute nodes, so tool-selection guidance is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_model_input_lineageRecord Model Input LineageA
Read-onlyIdempotent
Inspect

Record Model Input Lineage: OpenChainGraph compute node (attestation_mandate). 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-451-model-outcome-analysis, art-488-model-replication-diff. Output feeds: art-562-compile-model-risk-lineage-pack. Open at: https://ainumbers.co/chaingraph/art-648-record-model-input-lineage.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: Attests attribute-level data lineage for a model's input data, which source system, which field, what transformation was applied, feeding which model run, distinct from every existing model-risk node (art-450/451/453/488/489), none of which attest where a model's input data came from, only what t... Outputs: as_of_date, attribute_count, attributes, fence, model_id, not_proven, regulatory_framework, run_ref, structural_error, unmapped_attribute_count. Output schema: call describe_tool("record_model_input_lineage").

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: as_of_date, attributes, model_id, run_ref. Unknown keys are refused.

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, but the description adds genuine depth beyond them: deterministic execution, transient processing with no storage or logging, server-vs-browser delegation based on gpu:false/gpu:true, and an AP2 artifact export carrying execution_hash. The 'Record' framing sits in mild tension with readOnlyHint, but the transient-compute explanation resolves it.

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?

The definition is bloated with material that does not help an agent call it: a documentation URL, an inline FV-status receipt hash, a truncated summary sentence, and an 'Output schema: call describe_tool(...)' pointer. Useful compute and privacy guidance is buried in the middle of the block rather than front-loaded.

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?

For a nested, 4-parameter attestation node with no output schema, the description covers privacy handling, execution modes, chaining inputs, and enumerates the returned fields (attributes, not_proven, fence, structural_error). It leaves the required policy_parameters keys to the schema, which is acceptable given full coverage.

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 compute modes, parent_hashes/parent_tool_ids pairing, and the required policy_parameters keys. The description reinforces the compute:'auto' default and gpu:true delegation but adds no new syntax or constraint information beyond the schema, 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?

The summary sentence names a specific verb and resource: attests attribute-level data lineage — which source system, field, transformation, and model run — and explicitly distinguishes this from sibling model-risk nodes (art-450/451/453/488/489). However, the opening is cluttered with a name-restating preamble ('Record Model Input Lineage: OpenChainGraph compute node (attestation_mandate)') and the differentiation clause trails off truncated ('only what t...'), so the core purpose arrives late.

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?

It gives one real constraint ('Use synthetic or anonymised inputs only') and names upstream/downstream artifact dependencies, which implies a chaining workflow, but it never states when to choose this over complement tools like build_ai_training_data_lineage_record or build_model_inventory_entry. Selection guidance 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.

redline_diffDiff an original vs. proposed revision and mint a diff receiptA
Read-onlyIdempotent
Inspect

An agent proposes an edit: diffs original text/markdown against its own revised version and returns the line-level hunks plus a diff receipt (original/revised digests, diff-algorithm declaration, per-hunk digests). Byte-identical to what the tools/552 browser workbench computes for the same inputs -- a human can paste the SAME original/revised text into that workbench, disposition each hunk (accept/reject/comment), and their resulting hunk/disposition receipts will reference this diff_receipt's execution_hash. Pass the whole bundle (this diff_receipt + the human's hunk_receipts + disposition_receipt) to redline_verify to check the interleaved chain end-to-end.

NameRequiredDescriptionDefault
revisedYesProposed revised text or markdown document.
originalYesOriginal text or markdown document.
generated_atNoISO 8601 timestamp (caller-supplied for determinism). Defaults to the call time.

TDQS

A4.2/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 safety is covered. The description adds real behavioral context beyond that: deterministic output (caller-supplied generated_at), byte-identical parity with the tools/552 browser workbench, and the execution_hash linkage into human hunk/disposition receipts.

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?

Front-loaded with the core action and its outputs; every sentence carries workflow or parity information. The workbench clause is somewhat sprawling but is not idle filler.

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?

With no output schema, the description fully carries the return-value burden: it enumerates hunks, per-hunk digests, algorithm declaration, and the execution_hash used downstream. An agent has everything needed to call it and to chain it 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 description coverage is 100%, so original, revised, and generated_at are already documented. The description reinforces original/revised semantics but adds no format or edge-case detail beyond the schema, which is the expected baseline when the schema does the heavy lifting.

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 (diffs) and two named resources (original text vs. revised version) and specifies the outputs: line-level hunks plus a diff receipt. It is immediately distinguishable from redline_verify, which it names as the downstream consumer.

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?

The opening 'An agent proposes an edit' gives the triggering context, and the closing sentence explicitly routes the agent to redline_verify with the bundle. No explicit when-not condition is stated, but the workflow position is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redline_verifyVerify a redline receipt bundle against the original + revised textA
Read-onlyIdempotent
Inspect

Recomputes a redline review from scratch: the diff (from the pasted original+revised text), the diff_receipt's execution_hash, every hunk_receipt's digest/execution_hash/chain-link (in the order supplied -- entries may be minted by an agent, a human, or both interleaved), the disposition_receipt's execution_hash, and the accepted-text digest. Returns valid:true/false, a per-check breakdown, and broken_hunk (the zero-based index of the first divergence, or null) -- never trusts a bundle claim without checking it against a fresh recomputation.

NameRequiredDescriptionDefault
bundleYesThe redline receipt bundle to verify.
revisedYesRevised text or markdown document.
originalYesOriginal text or markdown document.

TDQS

A4.4/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 the description adds real value beyond that: it recomputes rather than trusting claims, is order-sensitive to supplied hunk receipts (agent/human interleaved), and defines success/failure outputs. It doesn't describe handling of malformed or missing receipts, keeping it at 4.

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?

Front-loaded with the verb and tightly packed; the return-value clause is correctly placed at the end. It is a long run-on sentence, but each clause carries distinct information rather than restating the name.

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?

No output schema exists, and the description fully compensates by specifying the return shape (valid boolean, per-check breakdown, broken_hunk index or null). Combined with the nested-bundle explanation, an agent has everything needed to call and interpret it.

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 baseline is 3; the description still adds meaning by explaining that hunk_receipts must be in the supplied order, one per hunk index, and that original/revised are the pasted texts used to regenerate the diff. That's genuine semantics beyond the schema.

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: it recomputes a redline review from supplied original/revised text plus a receipt bundle. The enumeration of exactly what is checked (diff, execution_hash, hunk digests/chain-links, disposition hash, accepted-text digest) makes it unmistakable against siblings like redline_diff or verify_execution_hash.

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?

Usage context is clear ('never trusts a bundle claim without checking it against a fresh recomputation'), implying it is the verification step after a bundle is produced. It does not explicitly name redline_diff as the generator or state exclusions, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_mra_remediation_closureConsent-Order / MRA Remediation Closure RegisterB
Read-onlyIdempotent
Inspect

Consent-Order / MRA Remediation Closure Register: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-533-mra-remediation-closure-register.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: Registers a firm's consent-order Articles / MRA findings against its own remediation records: per-issue milestone completeness (closed with evidence attached), evidence validity (delivered evidence type matches what each milestone declares it calls for), and overdue/on-track timing against each i... Outputs: closed_count, decision, determinations, evaluated_at, issue_count, note, open_count, overdue_count, overdue_grace_days, register_id, rejected_inputs. Output schema: call describe_tool("register_mra_remediation_closure").

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: evaluated_at, issue_id_commitment_scheme, issues, overdue_grace_days, register_id, remediation_status. Unknown keys are refused.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: transient input processing with no storage or retention, an AP2 artifact export carrying execution_hash for provenance chaining, and server-vs-browser delegation semantics. However, much of this is generic ChainGraph boilerplate rather than disclosure specific to this decision function, and it says nothing about what happens to rejected_inputs or how unknown keys are refused.

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?

The payload is dominated by marketing and provenance boilerplate ('Deterministic OpenChainGraph compute node' repeated, a URL, a 64-character FV-status hash, an offline-verification disclaimer) that crowds out the tool-specific content. The actual purpose statement is buried after several sentences and is cut off mid-word, which is a structural failure for an agent skimming the description.

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?

With no output schema, the description compensates by listing the return keys (closed_count, decision, determinations, issue_count, open_count, overdue_count, rejected_inputs, etc.) and pointing to describe_tool for the full schema. Required nested inputs are documented in the schema itself. The truncated summary of the decision logic is the main gap.

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 the nested policy_parameters block documents its fields and lists the required keys plus the 'unknown keys are refused' rule. The description adds essentially nothing about parameter meaning beyond the compute-mode text, which duplicates the schema's own enum description. Baseline 3 is appropriate.

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?

Despite heavy boilerplate, the 'Summary:' line names a specific verb and resource: it registers a firm's consent-order Articles / MRA findings against its own remediation records and checks milestone completeness, evidence validity, and overdue timing. That is far more than a restatement of the name. It does not, however, distinguish itself from the similar sibling track_fatca_crs_ro_remediation_closure, and the summary is truncated mid-sentence ('against each i...').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over the many other remediation/closure/attestation siblings. The only conditional guidance present is about the compute mode ('auto' vs 'browser' vs 'server') and gpu:true delegation, which is an execution concern already encoded in the schema enum, not tool selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_source_arrival_freshnessSource Arrival & Freshness RegisterB
Read-onlyIdempotent
Inspect

Source Arrival & Freshness Register: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-524-source-arrival-freshness-register.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: Reconciles a caller-declared EXPECTED-source inventory against caller-declared OBSERVED arrivals, per source: arrived, missing, late (arrived after its declared expected-as-of), or stale (arrived but older than its declared freshness threshold relative to a declared reference-as-of). Outputs: execution_state, decision, reason, source_count, sources, missing_sources, late_or_stale_sources, unknown_freshness_sources. Output schema: call describe_tool("register_source_arrival_freshness").

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: expected_sources, observed_arrivals, reference_as_of. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/non-open-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: compute 'auto' vs 'browser' delegation, that gpu:true nodes always delegate to the browser, transient non-stored input processing, and the AP2 artifact + execution_hash provenance export. It stops short of explaining failure modes or execution_state semantics.

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?

The definition is long and back-loads the actual purpose: the first ~90 words cover compute binding, Cloudflare Workers, FV-status URLs and receipt verification before the one-sentence Summary that says what the tool does. Much of the infrastructure text is boilerplate an agent does not need to select or invoke the tool.

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?

For a nested-parameter decision tool with no output schema, the description compensates by enumerating the return fields (execution_state, decision, reason, source_count, sources, missing_sources, late_or_stale_sources, unknown_freshness_sources) and pointing to describe_tool for the schema. What is missing is any statement of what execution_state/decision values mean in failure or partial cases.

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. The description still adds meaning by explaining that 'reference_as_of' is the declared freshness reference point and that lateness is judged against 'declared expected-as-of', which clarifies how expected_sources/observed_arrivals/reference_as_of interrelate rather than just repeating field names.

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 Summary sentence contains a specific verb plus resource: it 'Reconciles a caller-declared EXPECTED-source inventory against caller-declared OBSERVED arrivals' and classifies each source as arrived/missing/late/stale. That is far more than a restated title and lets an agent tell this apart from generic reconciliation siblings. It loses a point only because the actual purpose is buried after a paragraph of compute-node boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusion criteria, and no named alternative among the many freshness/reconciliation siblings (e.g. lint_insurance_evidence_freshness, reconcile_*). The only guidance present is the input constraint 'Use synthetic or anonymised inputs only', which is a safety rule rather than a selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

replay_supervisory_scenarioSupervisory Scenario Replay (DFAST-lite)A
Read-onlyIdempotent
Inspect

Supervisory Scenario Replay (DFAST-lite): OpenChainGraph compute node (capital_assessment). Regulatory deadline: 2027-02-01 (Annual re-pin — Fed publishes new supervisory scenarios each February). 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. Output feeds: sim-01-lcr-nsfr-liquidity-stress-test, sim-03-basel-rwa-scenario-modeler. Open at: https://ainumbers.co/chaingraph/art-370-supervisory-scenario-replay.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: Replays the Fed's published 2026 28-variable supervisory scenario paths (baseline and severely adverse, Q1:2026-Q1:2029) against user-supplied loss and PPNR coefficient functions, producing a quarterly P&L and capital walk. Outputs: ending_capital_mn, not_a_submission, quarters, scenario, scenario_release_date, scenario_set_digest, scenario_source_url, starting_capital_mn, trough_capital_mn, trough_capital_ratio_pct, trough_quarter. Output schema: call describe_tool("replay_supervisory_scenario").

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: loss_function, ppnr_function, quarterly_distribution_mn, rwa_mn, scenario, starting_capital_mn, tax_rate. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world semantics, and the description adds genuinely new behavior: compute:'auto' vs 'browser' delegation, GPU nodes always delegating, transient non-retained processing, and an AP2 artifact with execution_hash for chain provenance. That is meaningful operational context beyond the structured annotations, though the compute-mode text largely duplicates the schema's own parameter description.

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?

The core purpose statement is buried behind regulatory deadline, compute-node boilerplate, a documentation URL, and a lengthy FV-status/receipt paragraph that mostly advertises offline verification. Several passages (compute mode, output enumeration) restate schema or structured data. Front-loading the 'Summary: Replays...' sentence would materially improve selection.

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?

With no output schema, the description does the necessary work of enumerating return fields (trough_capital_mn, trough_capital_ratio_pct, scenario_set_digest, not_a_submission, etc.) and flagging the artifact/provenance output. For a nested policy_parameters tool it is nearly complete; only the parameter-level detail (units, valid scenario values) is thin.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters semantics are already documented in the schema. The description adds only a high-level mention of loss and PPNR coefficient functions and required policy keys, without explaining units, formats, or how the scenario selector interacts with the Fed paths. Baseline 3 is appropriate.

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 'Summary' sentence gives a specific verb, resource, and scope: replaying the Fed's published 2026 28-variable supervisory paths against user-supplied loss/PPNR functions to produce a quarterly P&L and capital walk. That is far more precise than the name alone. However, it never contrasts itself with near siblings like compute_stress_test_scenarios or calculate_irrbb_eve_shocks, so differentiation is left to inference.

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 context (capital_assessment node, 2027-02-01 annual re-pin deadline, 'Use synthetic or anonymised inputs only'). There is no statement of when to choose this tool versus the alternative stress/scenario tools in the sibling set. The 'Output feeds' line describes downstream lanes, not selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

replicate_model_outputsModel Replication DiffA
Read-onlyIdempotent
Inspect

Model Replication Diff: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-488-model-replication-diff.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: Independently recomputes a model's reported outputs from a declared model specification (version, as-of date, transform, intercept, coefficients) and a stated input record set, then diffs the recomputation against the model's own reported outputs within a caller-supplied tolerance. Outputs: aggregate, failing_segments, model_spec_as_of_date, model_spec_version, per_record, reason, tolerance_applied, transform, verdict. Output schema: call describe_tool("replicate_model_outputs").

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: model_spec, records, tolerance. Unknown keys are refused.

TDQS

A3.5/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), yet the description adds genuine behavioral context: deterministic execution, server-side vs browser-delegation split, transient/no-retention input handling, and an AP2 artifact with execution_hash for chain provenance. That is meaningful beyond the annotations, though the FV-status hash and URL are noise rather than 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?

The definition is badly back-loaded: the actual purpose appears in the last sentence, after compute-mode boilerplate, a 64-character hash, and a URL. A significant fraction of the text is provenance scaffolding that does not help an agent decide or invoke.

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?

With no output schema, enumerating the output fields (verdict, reason, aggregate, per_record, failing_segments, tolerance_applied, transform) is valuable, and the required nested inputs are named. What is missing is any guidance on tolerance units, transform semantics, or how verdict is determined — but overall the agent has enough to call it 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 description coverage is 100%, so compute, parent_hashes, parent_tool_ids and the policy_parameters shape are already documented. The description adds only the required keys (model_spec, records, tolerance) and the output field list, which is a marginal addition over the schema. 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?

The final 'Summary' sentence names a specific verb and resource: recompute a model's reported outputs from a declared specification and diff against reported outputs within tolerance. That is far clearer than the boilerplate prefix. However, it never distinguishes itself from near siblings such as compare_model_outcome_analysis, run_model_test_battery, or the various recompute_* tools, so an agent must guess which to pick.

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?

"Use synthetic or anonymised inputs only" and the compute-mode rules (auto/server/browser, gpu:true always delegates) are real usage constraints, but they govern parameters, not tool selection. There is no explicit statement of when to use this versus the other model-validation tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_cbam_default_valueCBAM Default-Value ResolverA
Read-onlyIdempotent
Inspect

CBAM Default-Value Resolver: OpenChainGraph compute node (compliance_mandate). 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-68-carbon-compliance-fit-diagnostic. Output feeds: art-69-cbam-embedded-emissions-calculator. Open at: https://ainumbers.co/chaingraph/art-70-cbam-default-value-resolver.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: Resolves the Commission default embedded-emissions value for a (CN code x country-of-origin) pair, applies the year-dependent markup vs the actual-data path (+10% 2026, +20% 2027, +30% 2028+), and returns the value with provenance citing the CBAM Implementing Regulation. Outputs: actual_path_recommended, cn_code, country_of_origin, default_value_tco2e_per_t, effective_default, good_category, markup_pct, note, provenance, reference_version, reporting_year. Output schema: call describe_tool("resolve_cbam_default_value").

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". Unknown keys are refused.

TDQS

A3.6/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), so the bar is lower, and the description still adds real value: compute:'auto' resolves server-side on Workers when a kernel is registered, compute:'browser' returns a delegation URL, gpu:true always delegates, inputs are transient and not stored or logged, and an AP2 artifact with execution_hash is exported for provenance. That goes meaningfully beyond the annotations. It does not disclose failure modes for invalid CN codes or unmapped origins.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual function is stated in the 'Summary:' section near the end, behind compute-binding, privacy, artifact, and FV-status boilerplate, so the wrong thing is front-loaded. The 64-character FV-status hash URL and 'Output schema: call describe_tool(...)' consume space without helping an agent decide to call or how to call. The useful content is there, but it is not ordered for skimming.

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?

With four optional parameters and no output schema, the description does the heavy lifting an agent needs: it enumerates the returned fields (effective_default, markup_pct, provenance, reference_version, etc.), specifies input chaining via upstream artifact IDs, and discloses the compute/delegation branches. Remaining gaps are edge-case behavior for invalid or unmapped inputs rather than anything blocking a correct call.

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 compute, parent_hashes, parent_tool_ids and policy_parameters fields are already documented in the schema. The description restates the compute-mode semantics and adds somewhat toward policy_parameters by naming the year-dependent markup (relating reporting_year and actual_data_available to the +10/20/30% schedule), but it never enumerates the accepted policy_parameters keys even though unknown keys are refused.

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 Summary sentence names a specific verb and resource: resolves the Commission default embedded-emissions value for a CN code x country-of-origin pair, with the year-dependent markup rules. That is enough to separate it from siblings like calculate_cbam_embedded_emissions or model_cbam_certificate_cost, but the description never names those siblings or contrasts the default-value path against the actual-data path in tool terms. The purpose statement is also buried after several sentences of platform boilerplate.

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 implied through data-flow context ('consumes upstream artifacts from art-68...', 'output feeds art-69...') and the constraint 'Use synthetic or anonymised inputs only', which does tell the agent something about acceptable input. However, there is no explicit when-to-use / when-not-to-use guidance and no statement of when to prefer this over calculate_cbam_embedded_emissions, which computes the actual-data path this tool's markup explicitly references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_provenance_ingredient_treeProvenance Ingredient Tree ResolverC
Read-onlyIdempotent
Inspect

Provenance Ingredient Tree Resolver: OpenChainGraph compute node (compliance_mandate). 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-124-content-credential-signature-verifier. Open at: https://ainumbers.co/chaingraph/art-125-provenance-ingredient-tree-resolver.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.

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". See the tool's manifest for field names.

TDQS

C2.6/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 the bar is lower; the description still adds real behavior: determinism, server-side execution on Cloudflare Workers for gpu:false nodes with a registered kernel, browser delegation returning a URL instead of a result, and transient input processing that is not stored or logged. The 'use synthetic or anonymised inputs only' constraint and the note that FV-status is a snapshot rather than a subscription are genuinely useful operational caveats. It does not contradict any annotation.

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?

The text is a dense run-on of platform boilerplate: the compute-node label appears twice back to back, and the marketing URL plus the FV-status receipt paragraph consume significant space without helping an agent decide or call. The one sentence that matters most — what the decision function computes — is absent, so length is not earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a nested, free-form policy_parameters object and no output schema, the description should describe the decision domain and what the exported AP2 artifact contains. Instead it defers to an external manifest and an external URL, so an agent has no in-band basis for constructing valid policy_parameters or interpreting the result.

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 baseline is 3. The description largely repeats the compute enum already documented in the schema, and for parent_hashes/parent_tool_ids/policy_parameters it adds nothing beyond telling the agent to consult the tool's manifest for field names — which leaves the central input object opaque rather than clarifying it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Provenance Ingredient Tree Resolver: OpenChainGraph compute node (compliance_mandate)" restates the title and names the platform, but never states what the tool actually computes or resolves. The only functional facts are that it consumes an upstream artifact (art-124-content-credential-signature-verifier) and exports an AP2 artifact with an execution_hash — an agent must infer the ingredient-tree resolution from the name alone, and cannot tell it apart from siblings like build_product_lineage, verify_slsa_provenance, or build_ai_training_data_lineage_record.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the many sibling lineage/artifact tools, and no prerequisites or exclusions. The compute-mode guidance (auto/server/browser, gpu:true delegating) is invocation mechanics duplicated from the schema, not tool-selection guidance. The upstream/downstream artifact reference hints at placement in a chain but does not tell an agent when to start a chain here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_recall_traceFSMA 204 Recall Trace Resolver (24-Hour FDA List)B
Read-onlyIdempotent
Inspect

FSMA 204 Recall Trace Resolver (24-Hour FDA List): OpenChainGraph compute node (compliance_mandate). 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-119-traceability-lot-code-linker. Open at: https://ainumbers.co/chaingraph/art-120-recall-trace-resolver.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: One-up/one-back trace from a contaminated Traceability Lot Code to affected recipients and sources. Outputs: contaminated_tlc, recipients, sources, traced_count. Output schema: call describe_tool("resolve_recall_trace").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds genuinely non-obvious traits: deterministic execution, transient non-retained processing of inputs, export of an AP2 artifact carrying execution_hash for chain provenance, and an offline-verifiable FV-status receipt. These are real behavioral facts beyond the structured fields, though return shape is deferred entirely to describe_tool rather than described.

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?

Badly front-loaded: two near-duplicate sentences about being an "OpenChainGraph compute node," a URL, and a 64-character FV-status hash all precede the actual purpose. The compute-mode paragraph duplicates the schema, and the actionable summary is the second-to-last sentence — structure actively works against the reader.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does list the four output fields, which is helpful. But policy_parameters is a nested object whose keys (edges, direction, contaminated_tlc) are entirely untyped `{}` in the schema, and the description never explains their shapes or semantics — a real gap for the one parameter an agent must actually construct.

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 carries parameter meaning and the baseline is 3. The description's compute-mode paragraph largely restates the `compute` property description verbatim and adds nothing for parent_hashes or parent_tool_ids, so it neither compensates nor detracts.

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 core purpose is stated precisely but late: "One-up/one-back trace from a contaminated Traceability Lot Code to affected recipients and sources," with named outputs (contaminated_tlc, recipients, sources, traced_count). That is a specific verb+resource and is distinguishable from siblings like validate_fsma204_cte or link_traceability_lot_code. It loses a point only because the purpose is buried in a trailing "Summary:" after several paragraphs of platform boilerplate.

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 description does explain compute-mode selection (auto/server/browser) and names the upstream artifact source (art-119-traceability-lot-code-linker), which implies the workflow position. However, it never states when to use this resolver versus adjacent siblings such as validate_fsma204_cte or link_traceability_lot_code, and offers no exclusions or preconditions beyond "synthetic or anonymised inputs only."

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_rule_versionEffective-Date / Rule-Version RegistryB
Read-onlyIdempotent
Inspect

Effective-Date / Rule-Version Registry: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-627-effective-date-rule-version-registry.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: Resolves which version of an accounting standard binds a given filer, entirely offline and client-side. Outputs: resolution_status, error_code, message, standard_id, filer_status, fiscal_year_end, fiscal_year_begin, fiscal_year_begin_basis, effective_for_annual_periods_beginning, effective_for_interim_periods_beginning, early_adoption_permitted, binding_for_queried_annual_period, binding_for_queried_interim_periods, first_binding_period_end, transition_method, parameter_set, parameter_set_as_of, entry_digest, citation, registry_digest_recomputed, resolution_path, bounds, closed_filer_status_enum, float_sensitive, scope_note. Output schema: call describe_tool("resolve_rule_version").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds real context: compute mode selection (server vs browser delegation URL), transient non-retention of inputs, gpu:true always delegating, and AP2 execution_hash provenance. That is meaningful behavior beyond the annotations, though much of it is generic chain-node boilerplate.

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?

The definition is a wall of text with the genuine purpose appearing only in a late 'Summary' sentence. Generic compute-mode, retention, and FV-status receipt boilerplate dominates the front and a long output field list pads the end. It is poorly front-loaded and much does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so listing the outputs (resolution_status, standard_id, binding_for_queried_annual_period, etc.) and pointing to describe_tool adds value. But it omits when-to-use guidance and hides the core purpose, leaving the definition only adequately complete for a nested-parameter node.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description largely restates the compute enum rather than adding new meaning, 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?

The description does state a specific verb+resource: 'Resolves which version of an accounting standard binds a given filer.' That is clear enough to distinguish the function. However, the actual purpose is buried after several sentences of generic compute-mode boilerplate, and no sibling tool is named for contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage instruction is 'Use synthetic or anonymised inputs only.' There is no guidance on when to use this versus alternatives such as lookup_mletr_jurisdiction_adoption or other rule-version tools, and no when-not condition. Usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollforward_y14_capital_worksheetFR Y-14 Capital Worksheet Roll-Forward & Cross-CheckB
Read-onlyIdempotent
Inspect

FR Y-14 Capital Worksheet Roll-Forward & Cross-Check: OpenChainGraph compute node (regulatory_reporting). 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. Open at: https://ainumbers.co/chaingraph/art-439-y14-capital-worksheet-rollforward.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: Rolls forward a caller-declared FR Y-14A/Q capital worksheet (CET1, additional Tier 1, Tier 2) from beginning balance through period additions and deductions to an ending balance, applies a caller-declared published-scenario adjustment (e.g. Outputs: boundary_note, constants_version, cross_check, ending_tier1_capital_usd, ending_total_capital_usd, entity_id, published_scenario, report_form, reporting_period, rollforward, worksheet. Output schema: call describe_tool("rollforward_y14_capital_worksheet").

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: additions, beginning_balances, constants_version, cross_check, deductions, entity_id, published_scenario, reporting_period. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses compute-mode semantics (auto vs server vs browser delegation, gpu:true always delegating), that inputs are processed transiently and not stored or logged, and that an AP2 artifact with execution_hash is exported for provenance. It also flags that results are caller-declared as published/frozen (FV-status is a snapshot, verifies offline). One gap: the sentence describing the scenario adjustment is cut off mid-clause.

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?

Roughly two-thirds of the text is platform boilerplate (compute node, Cloudflare Workers, AP2 exports, render URL, FV-status hash) and the actual purpose appears last. A sentence terminates prematurely at 'e.g. Outputs:', leaving a dangling fragment. Front-loading the roll-forward statement would fix most of this.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does attempt an output list (boundary_note, cross_check, ending_total_capital_usd, rollforward, worksheet), but the text is truncated so the list's provenance is unclear and return semantics are only sketched. For a deterministic multi-component regulatory computation, more on what the cross-check asserts and the units would help.

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 compute, parent_hashes/parent_tool_ids and the policy_parameters block. The description only adds a gloss that policy_parameters carries caller-declared scenario adjustment and a worksheet roll-forward, without naming units, sign conventions, or which keys drive CET1 vs Tier 2. Baseline 3 is appropriate; nothing meaningful is added beyond the schema.

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 Summary sentence states a specific verb and resource: roll forward a caller-declared FR Y-14A/Q capital worksheet (CET1, Additional Tier 1, Tier 2) from beginning balance through additions/deductions to an ending balance. That is clearly distinct from sibling compute tools such as compute_rwa_scenarios. The problem is that the statement of purpose is buried behind several sentences of generic OpenChainGraph/platform boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to pick this tool over the many adjacent capital/RWA tools (compute_rwa_scenarios, compute_basel31_delta, replay_supervisory_scenario). The only usage constraint offered is 'Use synthetic or anonymised inputs only', which is an input-handling rule, not selection guidance. The caller must infer applicability from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roll_up_aml_lookback_dispositionAML Lookback Disposition RollupB
Read-onlyIdempotent
Inspect

AML Lookback Disposition Rollup: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-534-aml-lookback-disposition-rollup.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: Closes the loop art-470 (lookback-completeness-reconciler) and art-471 (disposition-sampling-frame) leave open. Outputs: as_of, decision, disposition_coverage_pct, items, items_missing_rationale, lookback_close_date, lookback_id, missing_disposition_count, population_size, population_tie_out_holds, rationale_presence_pct, rejected_inputs, sample_frame_population_size, sample_frame_size, sampled_item_count, sampling_frame_discrepancy_flag. Output schema: call describe_tool("roll_up_aml_lookback_disposition").

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: as_of, lookback_close_date, lookback_id, population_size, sample_frame_population_size, sample_frame_size, sampled_items, sampling_frame_discrepancy_flag. Unknown keys are refused.

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive/closed-world, yet the description still adds real behavioral context: deterministic execution, transient non-retained input processing, a synthetic/anonymised-inputs-only constraint, browser delegation when compute is "browser" or the node is gpu:true, and AP2 artifact emission with execution_hash. The compute-mode restatement overlaps the schema param, but the data-handling and provenance disclosures are genuinely additive.

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?

The front of the description is redundant (title restated twice as "OpenChainGraph compute node") and the middle is padded with a documentation URL and a long FV-status hash-receipt sentence of little value for tool selection. The meaningful content — what it closes, what it returns — is buried near the end, and "Output schema: call describe_tool(...)" pushes the agent into another round trip.

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?

Missing one dimension.

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%, including the required-key list and unknown-key rejection inside policy_parameters, so the schema carries the parameter burden. The description adds nothing about parameter meaning beyond naming the output fields those parameters feed; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name/title and the output-field list (disposition_coverage_pct, missing_disposition_count, population_tie_out_holds, sampling_frame_discrepancy_flag) imply a disposition-coverage rollup over an AML lookback population, and the Summary line says it "closes the loop" that art-470/art-471 leave open. But the description never states the operation plainly in a single verb+resource sentence; the only explicit prose is boilerplate about compute nodes. An agent must infer the purpose from field names rather than read it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not guidance. The nearest thing is "Closes the loop art-470 ... and art-471 ... leave open," which hints at ordering but cites artifact IDs, not the actual sibling tool names that an agent could select (reconcile_aml_lookback_completeness, plan_aml_disposition_sample appear in the sibling list but never in the description). No prerequisites or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

route_einvoice_jurisdiction_mandateE-Invoice Jurisdiction Mandate RouterB
Read-onlyIdempotent
Inspect

E-Invoice Jurisdiction Mandate Router: OpenChainGraph compute node (compliance_mandate). 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-294-einvoice-vat-calc-verifier. Output feeds: art-296-einvoice-transmission-receipt-builder. Open at: https://ainumbers.co/chaingraph/art-295-einvoice-jurisdiction-mandate-router.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: Deterministic lookup over a version-pinned mandate table: given supplier/buyer country, transaction type, and transaction date, routes to the applicable e-invoicing regime, format, phase status, and transmission channel. Outputs: applicable_format, mandatory_from, phase_status, regime_country, table_version, transmission_channel. Output schema: call describe_tool("route_einvoice_jurisdiction_mandate").

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: buyer_country, supplier_country, transaction_date, transaction_type. Unknown keys are refused.

TDQS

B3.1/5.0
Behavior3/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 still adds real value beyond them: transient processing with no retention, a 'use synthetic or anonymised inputs only' constraint, deterministic version-pinned resolution, AP2 artifact export with execution_hash, and browser-delegation behaviour for gpu:true nodes. It does not describe the return payload's shape beyond a field list, and the boilerplate is repeated twice.

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?

The tool's actual function appears only in the trailing 'Summary:' after a long run of chain-provenance, compute-binding and FV-status boilerplate, with a duplicated 'OpenChainGraph compute node' clause. Front-loading is poor: an agent must read to the end to learn what the tool does.

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?

For a deterministic lookup with no output schema, the description supplies the input dimensions, the determinism/table-versioning contract, the six output fields, and the upstream/downstream chaining context. What is missing is only minor: no pagination/error behaviour, and no explicit statement of what happens for unsupported country pairs.

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 baseline is 3. The description restates the decision inputs (supplier/buyer country, transaction type, transaction date) and repeats the compute-mode enum semantics already in the schema. It adds no format hints for country codes or transaction_date beyond what the schema provides.

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 'Summary:' sentence gives a specific verb and resource: a deterministic lookup over a version-pinned mandate table that routes supplier/buyer country, transaction type and transaction date to an e-invoicing regime, format, phase status and transmission channel. That is enough to distinguish it from data-validation siblings. However, the statement of purpose is buried behind several sentences of compute-node boilerplate, and no sibling tool is named explicitly (only upstream/downstream artifact IDs).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is guidance on which compute mode to pick (auto/server/browser, gpu:true delegation), but nothing on when to choose this router over the many e-invoicing siblings such as validate_einvoice_format, validate_einvoice_batch, verify_einvoice_vat_calc, or build_einvoice_transmission_receipt. The 'Consumes upstream from / Output feeds' lines hint at pipeline position but do not state exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

route_partner_stablecoin_jurisdictionArc Multi-Currency Corridor Jurisdiction RouterA
Read-onlyIdempotent
Inspect

Arc Multi-Currency Corridor Jurisdiction Router: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: 511-multi-currency-pvp-validator. Open at: https://ainumbers.co/chaingraph/art-111-arc-corridor-jurisdiction-router.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: Route each leg of a multi-currency Arc corridor to its per-currency home regime (EURC→MiCA EMT, JPYC→JP FSA, BRLA→Brazil CMN/BCB, MXNB→MX CNBV, etc.), flag missing per-regime disclosures, and emit PvP handoff (511) + Travel-Rule batch handoff (art-104). Outputs: disclosure_gaps, leg_regimes, pvp_handoff, travel_rule_handoff, verdict. Output schema: call describe_tool("route_partner_stablecoin_jurisdiction").

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: corridor_legs. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety bar is low. The description nevertheless adds real context: inputs are processed transiently and not stored or logged, synthetic/anonymised inputs are required, and the tool exports an AP2 artifact with execution_hash for provenance. The compute-mode paragraph largely duplicates the 'compute' param schema description, which is the main deduction.

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?

The opening half is framework boilerplate (OpenChainGraph node identity, Cloudflare Workers compute modes, a full FV-status hash URL, self-referential 'call describe_tool(...)' text) before the actual purpose appears in the trailing Summary. The actionable content is present but poorly front-loaded and padded with meta-receipt detail.

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?

With no output schema, the description compensates by naming the outputs (disclosure_gaps, leg_regimes, pvp_handoff, travel_rule_handoff, verdict) and the downstream consumers. Combined with rich annotations and a fully documented schema, an agent has enough to call it correctly; only the exact shape of policy_parameters.corridor_legs entries remains undefined.

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 explains compute, parent_hashes, parent_tool_ids and policy_parameters with its required corridor_legs key. The description adds little parameter-level detail beyond repeating compute semantics; baseline 3 is correct when the schema does the heavy lifting.

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 'Summary:' sentence gives a specific verb and resource: route each leg of a multi-currency Arc corridor to its per-currency home regime, flag missing disclosures, and emit PvP (511) and Travel-Rule (art-104) handoffs, with concrete regime mappings. That distinguishes it from siblings like model_stablecoin_corridor_economics and score_partner_stablecoin_readiness, though the purpose is buried behind platform boilerplate rather than stated first.

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 implied by the regime list and the downstream handoff targets (511 validator, art-104), so an agent can infer it is for Arc multi-currency corridor routing. But there is no explicit when-to-use/when-not, no named alternatives, and no stated prerequisites or inputs needed beyond 'corridor_legs'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

route_vida_oss_registrationViDA OSS Registration RouterB
Read-onlyIdempotent
Inspect

ViDA OSS Registration Router: OpenChainGraph compute node (compliance_mandate). 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-162-vida-platform-deemed-supplier-classifier. Output feeds: art-164-vida-compliance-readiness-diagnostic. Open at: https://ainumbers.co/chaingraph/art-163-vida-oss-registration-router.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.

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". See the tool's manifest for field names.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real value beyond that: server-side vs browser delegation semantics, transient processing with no storage/logging, a synthetic-inputs-only warning, and AP2 artifact export with execution_hash for provenance. No contradiction with the read-only/idempotent hints.

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?

The opening repeats "OpenChainGraph compute node" twice, the compute-mode paragraph duplicates the schema's enum documentation verbatim in substance, and the trailing FV-status sentence is long boilerplate hedging about a snapshot. Useful content (privacy, artifact export, chain position) is buried mid-paragraph rather than front-loaded, so the structure fights the reader.

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?

With 100% schema coverage and read-only annotations, the description supplies the remaining needed pieces: execution model, data-handling posture, chain inputs/outputs, and what the call returns (AP2 artifact with execution_hash or a browser delegation URL) despite no output schema. What is missing is a concrete statement of the routing decision itself.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description only reinforces the compute modes (duplicating the enum description) and points at upstream artifacts generically; it adds no field-level syntax or ordering detail for parent_hashes/parent_tool_ids. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first two sentences restate the label ("ViDA OSS Registration Router: OpenChainGraph compute node... Deterministic OpenChainGraph compute node") rather than describing what the routing decision does. Purpose is only inferable from the chain context: it consumes art-162 deemed-supplier classification and feeds art-164 readiness diagnostic, which hints at the role but never states the actual decision logic.

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?

Pipeline position (after art-162, before art-164) implies when the node belongs in a workflow, which is genuine context. But there is no explicit when-to-use/when-not guidance and no differentiation from closely-named siblings like classify_vida_platform_deemed_supplier, run_vida_readiness_diagnostic, or route_einvoice_jurisdiction_mandate. The compute auto/browser paragraph is invocation mechanics, not selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_401k_adp_acp_test401(k) ADP/ACP Nondiscrimination TesterC
Read-onlyIdempotent
Inspect

401(k) ADP/ACP Nondiscrimination Tester: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-302-401k-adp-acp-test.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: Runs the IRC §401(k)(3) Actual Deferral Percentage test and the §401(m)(2) Actual Contribution Percentage test from supplied HCE vs NHCE deferral/match percentages (current-year or prior-year method), applying the fixed statutory permitted-disparity limits (1.25x, or 2 percentage points and 2x, w... Outputs: acp, adp, all_tests_pass, error, method. Output schema: call describe_tool("run_401k_adp_acp_test").

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: acp_hce_pct, acp_nhce_pct, adp_hce_pct, adp_nhce_pct, method. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Well beyond what readOnlyHint/idempotentHint/destructiveHint/openWorldHint already convey, the description discloses server-side execution on Cloudflare Workers, browser delegation for gpu:true nodes, transient non-retained input processing, AP2 artifact export with execution_hash, and a published FV-status receipt. These are meaningful operational details an agent cannot get from the annotations. It still does not describe rate limits, failure/error modes, or what gets returned when a test fails, which keeps it below 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Heavily front-loaded with generic OpenChainGraph/Cloudflare/AP2 boilerplate that is repeated across every node in this server, and the tool-specific content is pushed to the end and then truncated mid-sentence. An agent scanning the first lines learns the tool's name twice before learning what it computes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Execution semantics and provenance are covered thoroughly, but for a compliance calculation tool the substantive part is incomplete: the permitted-disparity limits sentence is cut off, the result semantics (acp, adp, all_tests_pass, method) are listed without explanation of how all_tests_pass is derived, and the nested policy_parameters values are typed as empty objects in the schema. The agent knows how to run it but not fully how to interpret or populate it.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds only a modest amount: it names method as current-year or prior-year and mentions 'unknown keys are refused', but does not explain what the percentage fields mean or the units/format expected. Baseline 3 applies when the schema carries the weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The tool's actual job (running the IRC §401(k)(3) ADP and §401(m)(2) ACP nondiscrimination tests from HCE vs NHCE percentages) is stated, but only in a truncated 'Summary:' clause buried after several sentences of boilerplate. The opening line merely restates the title, and the summary cuts off mid-word ('w...'), so the agent must piece the purpose together from fragments. Siblings like run_section125_ndt are distinguishable in principle but never contrasted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this tool versus alternatives such as run_section125_ndt or compute_disparity_metrics. The only directional guidance ('Use synthetic or anonymised inputs only') is a data-handling constraint, not a usage condition. Choosing between compute:auto/server/browser is described, but that is execution plumbing rather than tool selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_agent_economy_fitAgent Economy Runtime Fit DiagnosticA
Read-onlyIdempotent
Inspect

Agent Economy Runtime Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-61-x402-batch-settlement-reconciler, art-62-ap2-payment-receipt-verifier, art-63-agent-service-metering-modeler, art-02-agent-spend-policy-simulator, mms-03-app-fraud-graph, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-60-agent-economy-runtime-fit-diagnostic.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: 12-question A-F readiness diagnostic for the agent-economy runtime / post-trade layer (x402 V2 batch settlement, AP2 PaymentReceipt, Human-Not-Present autonomy, reconciliation, metering, runtime fraud). Outputs: dim_scores, hnp_risk_flag, note, overall_grade, overall_score, primary_recommendation, remediation_checklist, secondary_recommendations. Output schema: call describe_tool("run_agent_economy_fit").

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". Unknown keys are refused.

TDQS

A3.6/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 behavior. The description adds meaningful context beyond that: compute 'auto' vs 'browser' execution, server-side Cloudflare Workers processing for registered kernels, browser delegation for gpu:true nodes, transient non-retention of inputs, and an exported AP2 artifact with execution_hash. It stops short of detailing failure modes or rate limits.

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?

The description is bloated and poorly front-loaded: it opens with compute-node plumbing, then a URL, an FV-status hash snapshot, and a sibling-feed list before reaching the actual diagnostic purpose. The 'call describe_tool' sentence is wasteful given the schema is already present. Useful information is present but buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex diagnostic with no output schema, the description does well to list output fields (dim_scores, hnp_risk_flag, overall_grade, etc.) and explain compute/data-handling behavior. However, it leaves the policy_parameters input surface opaque—twelve nested keys with no meaning in either schema or description—which matters for a 12-question diagnostic that depends on those inputs.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates the compute modes but does not add meaningful semantics for the twelve nested policy_parameters keys, which remain undocumented in both places. Baseline 3 is appropriate when the schema carries the parameter burden.

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?

The description states a specific diagnostic: a 12-question A-F readiness assessment for the agent-economy runtime/post-trade layer, naming x402 V2 batch settlement, AP2 PaymentReceipt, HNP autonomy, reconciliation, metering, and runtime fraud. This is specific enough to distinguish it from generic siblings such as run_agentic_readiness_diagnostic.

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 description implies when the tool is relevant through the domain scope and 'Use synthetic or anonymised inputs only', but it never explicitly says when to choose this over related diagnostics like run_agentic_readiness_diagnostic or the AP2-specific tools. Usage is inferable but not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_agentic_readiness_diagnosticAgentic Payments Readiness DiagnosticC
Read-onlyIdempotent
Inspect

Agentic Payments Readiness Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-15-agentic-mandate-sandbox, art-16-google-ap2-mandate-builder, art-17-ap2-mcp-policy-validator, art-18-mcp-developer-readiness-scorecard. Open at: https://ainumbers.co/chaingraph/art-27-agentic-readiness-diagnostic.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.

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". See the tool's manifest for field names.

TDQS

C2.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, but the description adds real substance: deterministic computation, the auto/server/browser execution split with gpu:true always delegating, transient processing with no storage or logging, and the emitted AP2 artifact with execution_hash. It does not say what the returned artifact or diagnostic findings look like, but for a read-only compute node this is well above the annotation baseline.

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?

The core signal (diagnostic name plus kernel) is front-loaded, but the bulk is boilerplate: duplicated compute-mode explanation, a URL, and a long FV-status receipt sentence with a raw hash that does not help an agent decide to call the tool. Several sentences do not earn their place relative to the selection decision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must describe returns, and it partially does (AP2 artifact with execution_hash, downstream consumers). But it omits what the diagnostic evaluates and what policy_parameters the caller should supply beyond 'see the tool's manifest', which is a meaningful gap for a diagnostic tool with a nested free-form object.

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 defines compute modes, parent_hashes, parent_tool_ids, and policy_parameters. The description's compute paragraph largely restates the enum semantics already in the schema, and it does not clarify what fields policy_parameters expects (it defers to a manifest in the schema only). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as an 'Agentic Payments Readiness Diagnostic' compute node bound to the 'agent_guardrail_mandate' kernel, which does distinguish it from the run_*_readiness_diagnostic siblings at a glance. However it never states what the diagnostic actually assesses or returns beyond 'exports an AP2 artifact with execution_hash', so the reader learns the plumbing but not the evaluation substance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives such as score_mcp_readiness, run_mcp_deployability_diagnostic, or agentic_mandate_sandbox. The only usage-directional content is the list of downstream artifacts it feeds (art-15 through art-18), which implies ordering but not selection criteria. The 'use synthetic or anonymised inputs only' line is an input constraint, not a use-case guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_ai_act_highrisk_fitEU AI Act High-Risk Fit & Classification DiagnosticA
Read-onlyIdempotent
Inspect

EU AI Act High-Risk Fit & Classification Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-65-ai-conformity-pack-builder, art-66-fria-postmarket-monitoring-builder, art-67-agentic-ai-risk-classifier, art-05-eu-ai-act-credit-scoring-conformity, 452-fair-lending-ai-bias-assessment, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-64-ai-act-highrisk-fit-diagnostic.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: 12-question A-F diagnostic that screens in-force obligations first (Art 5 prohibited practices, Art 4 AI literacy, GPAI) then classifies financial AI system high-risk status (Annex III: credit scoring, insurance pricing, financial-standing) and grades Article 9-15 readiness plus the provider/depl... Outputs: ai_literacy_grade, annex_iii_basis, applicable_date, dim_scores, do_now_checklist, gpai_applicability, high_risk_verdict, note, overall_grade, overall_score, prepare_ahead_checklist, primary_recommendation, prohibited_practice_verdict, role, secondary_recommendations. Output schema: call describe_tool("run_ai_act_highrisk_fit").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses compute-mode behavior, transient input handling, AP2 artifact export with execution_hash, and downstream tools that consume the output. These details materially improve predictability for a read-only diagnostic.

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?

The description is long and front-loads implementation details, a FV-status hash, a URL, and an output-feed list before reaching the core diagnostic summary. The purpose is present but buried, and several operational details could be compressed or deferred.

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?

For a complex diagnostic with no output schema, the description lists output fields, explains provenance and compute behavior, and defines the screening/classification scope. It leaves policy_parameters semantics to the nested schema property names, which is a gap but not a blocking one.

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%, so the schema already documents the top-level parameters. The description adds compute-mode context but does not explain the nested policy_parameters keys or how the 12-question diagnostic maps to them, so it does not meaningfully exceed the schema baseline.

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 description states a specific diagnostic verb and resource: it screens in-force EU AI Act obligations, classifies high-risk status under Annex III, and grades Articles 9-15 readiness. It is clear what the tool does, but it does not explicitly distinguish itself from nearby siblings such as assess_ai_act_conformity or run_ai_governance_fit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the diagnostic does and that inputs should be synthetic or anonymised, but it gives no explicit when-to-use guidance, exclusions, or comparison against alternative EU AI Act tools. The downstream output list identifies consumers of the result, not conditions for selecting this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_ai_governance_fitAI Governance Readiness DiagnosticA
Read-onlyIdempotent
Inspect

AI Governance Readiness Diagnostic: OpenChainGraph compute node (compliance_mandate). 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-175-gpai-code-of-practice-conformance. Open at: https://ainumbers.co/chaingraph/art-176-ai-governance-readiness-diagnostic.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: A-F AI governance readiness diagnostic across six dimensions spanning ISO/IEC 42001, NIST AI RMF, and EU AI Act convergence: AIMS documentation, impact assessment, NIST RMF mapping, GPAI obligation check, monitoring plan, and review cycle. Outputs: dimensions_met, dimensions_total, frameworks_addressed, fully_ready, gaps, readiness_grade, readiness_score. Output schema: call describe_tool("run_ai_governance_fit").

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". Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations: explains compute:auto vs server vs browser, gpu:true always delegating, transient processing with no storage/logging/retention, synthetic-inputs-only constraint, and AP2 artifact export with execution_hash for provenance. This is rich behavioral context an agent could not infer from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the diagnostic summary, but noticeably redundant ('OpenChainGraph compute node... Deterministic OpenChainGraph compute node') and padded with a long FV-status hash/URL block. The core purpose and outputs are buried after infrastructure prose.

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?

Covers outputs (dimensions_met, readiness_grade, gaps, etc.), upstream artifact dependency, compute/delegation behavior, and privacy posture, which is substantial for a tool without an output schema. Minor gap: no guidance on selecting among the many sibling readiness diagnostics.

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 compute parameter is fully documented in the schema, so baseline is 3. The description reinforces compute-mode semantics and the upstream chaining intent, but adds no syntax or format detail beyond the schema for parent_hashes/parent_tool_ids/policy_parameters.

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: an A-F AI governance readiness diagnostic across six named dimensions spanning ISO/IEC 42001, NIST AI RMF, and EU AI Act. The scope is clearly narrower than siblings like assess_iso42001_aims_conformance or map_nist_ai_rmf_functions, though it never names which alternative to pick instead.

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 implied by 'Consumes upstream artifacts from art-175-gpai-code-of-practice-conformance', which indicates a sequencing dependency. However, with many overlapping fit/compliance diagnostics in the sibling list, there is no explicit when-to-use-this-vs-alternatives or exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_arc_fit_diagnosticArc Fit DiagnosticB
Read-onlyIdempotent
Inspect

Arc Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-43-arc-cpn-model, art-44-arc-stablefx-model, art-45-arc-xreserve-linter, art-46-arc-paymaster-model, art-47-arc-cctp-transfer. Open at: https://ainumbers.co/chaingraph/art-42-arc-fit-diagnostic.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.

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". See the tool's manifest for field names.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds genuinely new behavior: server-side compute on Workers for gpu:false nodes with a registered kernel, browser delegation URL otherwise, gpu:true nodes always delegating, transient processing with no storage or logging, and an offline-verifiable provenance receipt. That is well beyond what the annotation flags convey; only the dense FV-status sentence is opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is dense and front-loads a name restatement rather than the actual purpose. The privacy and chain-provenance sentences earn their place, but the trailing URL and the long hash-bearing /fv-status sentence read as provenance boilerplate that does not help an agent decide to invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Execution mode, privacy posture, chaining via parent_hashes/parent_tool_ids, and downstream consumers are all covered, which is good for a 4-parameter nested-input tool with no output schema. But the substantive gap remains: with no output schema and no description of the decision function or its parameter fields, an agent knows how the tool runs but not what it returns or what to put in policy_parameters.

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 baseline is 3. The description's explanation of compute:"auto"/"browser" largely duplicates the schema's own enum description rather than adding to it, and policy_parameters still points the caller to "the tool's manifest" for field names without listing any.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening restates the name/title ("Arc Fit Diagnostic: OpenChainGraph compute node") and then describes the execution substrate rather than what the diagnostic actually evaluates. It does establish that this is a deterministic compute node that emits an AP2 artifact with an execution_hash and feeds a named set of downstream artifacts, which is useful, but a sibling like run_robinhood_chain_fit_diagnostic or model_arc_cpn_economics cannot be cleanly separated from it — nothing says what "arc fit" measures.

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?

"Use synthetic or anonymised inputs only" is a real usage constraint, and the compute auto/browser explanation implies when client-side execution is needed. Beyond that there is no when-to-use/when-not guidance, no mention of the sibling fit-diagnostic tools, and no statement of prerequisites or what a caller must already know to run it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_audit_recalc_suiteAudit Recalculation SuiteA
Read-onlyIdempotent
Inspect

Audit Recalculation Suite: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-463-recalc-suite.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: Independently recalculates five caller-supplied audit schedule types (straight-line/double-declining-balance/units-of-production depreciation, interest accrual, EPS basic and diluted, straight-line intangible amortization, and prepaid-expense roll-forwards) and diffs each recalculated figure agai... Outputs: amortization, categories_run, depreciation, eps, flagged_count, interest_accrual, prepaid_rollforward, tolerance_used, total_items. Output schema: call describe_tool("run_audit_recalc_suite").

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: amortization, depreciation, eps, interest_accrual, prepaid_rollforward, tolerance. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds substantive context beyond that: server-side vs browser delegation semantics with a delegation URL return, transient non-retention of inputs, and an AP2 artifact with execution_hash for provenance. Some of this is recurring platform boilerplate rather than tool-specific insight, keeping it below 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and category list are front-loaded and useful, but the opening redundantly repeats 'OpenChainGraph compute node' and 'Deterministic OpenChainGraph compute node', and the description is truncated mid-sentence ('...diffs each recalculated figure agai...'), wasting space on a URL and a raw FV-status hash.

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?

With no output schema, the description compensates by listing the returned fields (depreciation, eps, flagged_count, tolerance_used, etc.), and all four parameters are documented. The truncation and the lack of explanation of how flagged_count/tolerance_used are derived leave a small gap.

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 compute, parent_hashes, parent_tool_ids, and the policy_parameters keys are already documented. The description reinforces the compute modes and lists the required policy categories but adds little on ordering of parent_hashes/parent_tool_ids or the tolerance semantics beyond what the schema 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?

The description names a concrete verb (independently recalculates and diffs) plus enumerated resources (depreciation, interest accrual, EPS, amortization, prepaid roll-forwards), so an agent knows exactly what it computes. It does not distinguish itself from close siblings such as compute_deterministic_amortization_schedule, compute_interest_accrual_recompute, or build_amortization_schedule, which all sit in the same namespace.

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?

It gives a hard usage constraint ('Use synthetic or anonymised inputs only') and explains the compute modes, but never states when to pick this suite over the many single-purpose recompute siblings. The caller must infer that this is the multi-category variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_call_report_edit_checksCall Report Published Edit-Check GateA
Read-onlyIdempotent
Inspect

Call Report Published Edit-Check Gate: OpenChainGraph compute node (regulatory_reporting). 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-432-call-report-rc-balance-sheet, art-433-call-report-rcr-capital. Open at: https://ainumbers.co/chaingraph/art-434-call-report-edit-check-gate.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: Runs a curated battery of FFIEC-style published Call Report edit checks -- balance-sheet identity, capital-stack ordering (CET1 <= Tier 1 <= Total capital), ratio-vs-component consistency, cross-schedule entity/period match -- against art-432 (Schedule RC) and art-433 (Schedule RC-R) output paylo... Outputs: all_fatal_passed, check_count, checks, coverage_note, entity_id, fatal_failure_count, gate_status, report_form, reporting_period, rounding_tolerance_usd, warning_failure_count. Output schema: call describe_tool("run_call_report_edit_checks").

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: rc_output_payload, rcr_output_payload. Unknown keys are refused.

TDQS

A3.8/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 behavior, and the description adds meaningful context about server-side versus browser compute delegation, transient input processing, AP2 execution_hash provenance, and upstream artifact consumption. It does not contradict 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description contains relevant operational context and a useful summary, but it is padded with repeated OpenChainGraph compute-node boilerplate, a raw URL, a long FV-status receipt path, and a redundant output-schema pointer. The actual tool purpose is present but not optimally front-loaded ahead of the compute-mode exposition.

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?

For a complex compute node with no output schema, the description is fairly complete: it identifies the upstream schedules consumed, the edit-check families performed, the compute modes, privacy handling, provenance artifact, and the output fields. It lacks explicit routing guidance versus similar edit-check tools, which keeps it from a 5.

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 carries detailed meaning for compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates compute auto/browser behavior and upstream artifact chaining but adds little parameter-level detail beyond the schema.

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?

The description states a specific verb and resource: it runs FFIEC-style published Call Report edit checks against Schedule RC and RC-R outputs, listing concrete check families. It is readily distinguishable from generic regulatory-reporting siblings because it names the exact Call Report schedules and edit-check scope.

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 description implies usage by stating that it consumes upstream artifacts art-432 and art-433 and by requiring synthetic or anonymised inputs. However, it does not explicitly say when to use this tool versus siblings such as run_regrpt_edit_checks or the Call Report schedule mapping tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_carbon_compliance_fitCarbon & Climate Compliance Fit DiagnosticA
Read-onlyIdempotent
Inspect

Carbon & Climate Compliance Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-69-cbam-embedded-emissions-calculator, art-72-cbam-precursor-emissions-aggregator, art-73-taxonomy-alignment-scorer, art-75-eugb-factsheet-validator, art-76-climate-scenario-applicator, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-68-carbon-compliance-fit-diagnostic.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: 12-question A-F diagnostic that classifies which carbon/climate obligations bind a firm (CBAM authorised-declarant duty, EU Taxonomy alignment, EU Green Bond conformance, climate stress) and routes to the right carbon-compliance chain. Outputs: cbam_declarant_required, cbam_declarant_verdict, cbam_dual_status, climate_stress_applicable, dim_scores, do_now_checklist, eugb_readiness, note, overall_grade, overall_score, prepare_ahead_checklist, primary_recommendation, secondary_recommendations, taxonomy_scope. Output schema: call describe_tool("run_carbon_compliance_fit").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/idempotent/non-destructive profile, but the description adds real behavioral context beyond them: the compute:'auto' vs 'browser' delegation semantics, gpu:true always delegating, transient non-logged processing, a 'synthetic or anonymised inputs only' constraint, and the AP2 execution_hash export for provenance. This is genuine added value; the compute-mode text overlaps the schema, but the privacy and chaining behavior do not.

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?

Badly front-loaded: the first several sentences are compute-binding and FV-status hash boilerplate that an agent must read past to find what the tool does. The 14-item output field list and a full SHA-256 receipt URL are pasted in verbatim, adding bulk without proportional value.

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?

Given there is no output schema, the description does enumerate the return fields (cbam_declarant_verdict, taxonomy_scope, overall_grade, do_now_checklist, etc.) and names the downstream consumers, so an agent can see what comes back and where it goes. Combined with the privacy and chaining notes, it is fairly complete for a diagnostic node, though the unexplained policy_parameters keys remain a gap.

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 compute, parent_hashes, and parent_tool_ids. The description does not add meaning to policy_parameters, whose twelve nested keys (declarant_status, taxonomy_scope, imports_cbam_goods, etc.) are untyped with no descriptions — the closest it comes is naming the four obligation domains the diagnostic assesses. Baseline 3 for a fully-covered schema.

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 description does state a specific purpose: a '12-question A-F diagnostic that classifies which carbon/climate obligations bind a firm (CBAM authorised-declarant duty, EU Taxonomy alignment, EU Green Bond conformance, climate stress) and routes to the right carbon-compliance chain.' That distinguishes it from siblings like run_eudr_readiness_fit or model_cbam_certificate_cost. However, roughly two-thirds of the preamble is platform boilerplate (compute binding, AP2 provenance, FV-status URL) before the actual purpose appears, diluting the signal.

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 implied rather than stated: the description says it 'routes to the right carbon-compliance chain' and lists downstream tools (art-69 CBAM calculator, art-73 taxonomy scorer, etc.), which suggests it is a pre-flight screening step. But there is no explicit 'use this before X' or 'do not use when Y' guidance, and no mention of when a user should skip straight to a calculator sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_chainRun a whole ChainGraph chain in one callA
Read-onlyIdempotent
Inspect

Executes every step of a named chain (list names with find_chain / build_workflow_links) and returns ONE composite artifact whose execution_hash anchors all step outputs. compute:"server"/"auto" (default) runs each kernel-backed step server-side, threading step N's execution_hash into step N+1's parent_hashes; compute:"browser" returns a zero-egress delegation bundle (composer URL + ordered deep-links) to run client-side instead — no data leaves the agent. Supply inputs as a map of step tool_id -> policy_parameters (field names per node manifest / build_chaingraph); a step whose kernel needs inputs you omit is reported per-step (status "input_required"), never failed silently. Steps that are browser-only (gpu:true or no registered kernel) are listed for browser delegation. Deterministic, zero PII, zero payload logging. Verify the result with verify_execution_hash. Runs with anything to explain carry decision_trail: per-step reason codes (gate rule id, escalation rule id, input_required cause), hash-excluded adjacent metadata recomputable from the hash-bound decisions[]. Each server-mode run also returns an OpenTelemetry GenAI span document as a resource link (one execute_tool span per executed step under an invoke_agent parent). Response includes a ledger_url fragment link for human verification at ledger.ainumbers.co. Server-mode responses also echo a stable dedupe object — dedupe.input_hash (JCS-SHA-256 over the effective run inputs: chain, per-step inputs after the caller/fixture fallback, and mandate_hash when a mandate governs) beside dedupe.composite_execution_hash — so a client can recognize and skip an exact re-run (idempotentHint) without recomputing anything. See docs/IDEMPOTENCY.md.

NameRequiredDescriptionDefault
chainYesChain name, e.g. "agent-commerce-conformance". List names with find_chain or build_workflow_links.
inputsNoMap of step tool_id -> policy_parameters overrides. Omitted steps run with {} (kernels needing required fields are reported, not failed silently).
computeNo"auto"/"server" (default) runs kernel-backed steps server-side; "browser" returns a zero-egress delegation bundle to run client-side.
mandateNoOptional §22 Work Mandate artifact. When supplied: §16 signature is verified and validity window is checked (unsigned/bad-sig/expired returns a structured error); mandate_hash is folded into every step and the composite receipt as a conditional-presence key, proving which policy governed this run. A no-mandate run is byte-identical to the pre-binding baseline (linear-hash-freeze invariant).
escalation_transportNoHow an OCG §22.8 escalation is delivered. "resolve_handle" (DEFAULT) never blocks: the run COMPLETES with status "escalated" plus the open record, its record_hash and a resolve handle, and a human closes it out of band. "input_required" opts into the SEP-2322 multi-round-trip: the call answers with an InputRequiredResult asking for the §22.8.4 closure, and the retry (echoing requestState) resolves the record inline.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety and idempotency, yet the description adds substantial non-structured behavior: deterministic, zero PII / zero payload logging, per-step 'input_required' reporting instead of silent failure, browser-only steps being listed rather than run, the decision_trail reason codes, the OTel GenAI span document, ledger_url, and the dedupe.input_hash / dedupe.composite_execution_hash pair for skipping exact re-runs. This is exactly the kind of context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Delivered as a single dense paragraph of long compound sentences with no structure, and it repeats itself (input_required is explained twice; compute modes appear in both prose and schema wording). Most sentences carry real information, but a definition this complex should be broken into scannable sections, and the 'See docs/IDEMPOTENCY.md' pointer sits where a short return-shape summary would serve better.

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 five-parameter, nested-input tool with no output schema and execution semantics that are hard to infer, the description is essentially complete: it covers inputs, both compute paths, escalation handling, the composite artifact and its hash, dedupe, telemetry, and how to verify. An agent has everything needed to call it correctly and interpret the response.

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 prose genuinely adds mechanism beyond the field descriptions: it explains that compute:'server' threads step N's execution_hash into step N+1's parent_hashes, that omitted inputs run with {} and surface as status 'input_required', and that mandate_hash is folded in as a conditional-presence key. The escalation_transport and compute semantics are largely restated from the schema, which keeps it out of 5 territory.

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 ('Executes every step of a named chain') plus the composite output ('ONE composite artifact whose execution_hash anchors all step outputs'), which is far more than the title restated. It also names the sibling that enumerates chain names (find_chain / build_workflow_links) and the sibling that validates the result (verify_execution_hash), so an agent can place it precisely in the tool graph.

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 concrete when-conditions: compute 'auto'/'server' for kernel-backed steps vs 'browser' for a zero-egress client-side delegation bundle, and escalation_transport 'resolve_handle' vs 'input_required' with the consequences of each. The one noticeable gap is that near-siblings run_chain_batch and run_kernel_vm exist in the catalogue and are never mentioned, so the agent must infer single-chain vs batch selection on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_chain_batchRun or estimate several ChainGraph chains in one callA
Read-onlyIdempotent
Inspect

Batch over named chains in ONE round-trip with a PER-ROW terminal status — one row's failure never fails another, and every row's result rides the single response. mode:"run" (default) executes each row through the same engine as run_chain (composite artifact + execution_hash per row, deterministic); mode:"estimate" validates every row (chain exists, step counts, compute feasibility, inputs coverage, OCG §21.4 gate rule previews) WITHOUT executing anything. Capped at 8 rows and 11 total server-kernel steps per batch — caps MEASURED live on the deployed free-plan endpoint, where N kernel builds in one invocation share one CPU budget (an 11-step chain: green at 416 ms). Beyond the cap, use sequential run_chain calls — each call gets its own CPU budget (the blessed fan-out pattern on this tier; docs/client-fan-out-patterns.md). Retry = re-run the WHOLE batch: safe, because determinism reproduces byte-identical execution hashes. Mandates and input_required escalation are not accepted on batch rows; escalated rows carry the non-blocking resolve_handle record. Zero PII, zero payload logging.

NameRequiredDescriptionDefault
modeNo"run" (default) executes every row server-side through the same engine as run_chain; "estimate" validates all rows and previews gates without executing anything.
rowsYes1-8 rows, one chain per row. The cap keeps the synchronous response bounded and inside the free-plan CPU budget measured live; for larger fan-out use sequential run_chain calls (docs/client-fan-out-patterns.md).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: per-row isolation of failures, per-row composite artifact and execution_hash, escalated rows carrying a non-blocking resolve_handle record instead of failing, and zero payload logging. Annotations already cover safety/idempotency, so this is bonus rather than load-bearing; the one thing left implicit is that 'run' mode performs server-side execution despite readOnlyHint=true (defensible since nothing is mutated, but an agent could misread it).

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?

Front-loaded with the core contract (one round-trip, per-row status) before any caveats, and each sentence carries information. Some measurement trivia (416 ms, 'MEASURED live', 'OCG §21.4 gate rule previews') adds density without helping tool selection.

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?

With no output schema, the description does the work of explaining the return shape (single response, per-row terminal status, execution_hash, resolve_handle records) and the modal behavior difference; it stops short of describing row field names or partial-failure status enumeration.

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; the description still adds meaningful semantics — mode 'run' as the default, the 8-row/11-step caps that bound the rows array, and the escalation behavior for inputs that are omitted or incomplete.

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 (batch over named chains) plus the two modes, and explicitly contrasts with run_chain ('same engine as run_chain') so an agent can distinguish it from the single-chain sibling 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?

Gives explicit when-to-use (batch <=8 rows, <=11 kernel steps) and when-not (beyond the cap, use sequential run_chain calls and each call gets its own CPU budget, pointing at the fan-out doc). Retry guidance ('re-run the WHOLE batch: safe because determinism reproduces byte-identical hashes') removes a common uncertainty.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_digital_trade_fitDigital Trade Corridor Fit DiagnosticB
Read-onlyIdempotent
Inspect

Digital Trade Corridor Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-53-mletr-ebl-conformance-validator, art-54-digital-trade-rules-checker, art-55-trade-document-provenance-verifier, 509-canton-party-allowlist-validator, art-10-amla-transaction-typology-risk-scorer, ml-02-credit-default-risk-scorer, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-52-digital-trade-fit-diagnostic.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: 12-question A–F readiness diagnostic for digital trade / electronic trade documents (MLETR). Outputs: corridor_enforceability_flag, dim_scores, note, overall_grade, overall_score, primary_recommendation, remediation_checklist, secondary_recommendations. Output schema: call describe_tool("run_digital_trade_fit").

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". Unknown keys are refused.

TDQS

B3.4/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 the description goes well beyond them: it explains the auto/server/browser compute resolution, that gpu:true nodes always delegate to the browser, that inputs are transient and not stored or logged, and that it exports an AP2 artifact carrying execution_hash for chain provenance. The remaining gap is error/failure behavior and what the FV-status receipt actually guarantees in practice.

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?

The text is badly front-loaded: the reader wades through 'agent_guardrail_mandate', compute-mode plumbing, a raw URL, and a 64-character FV-status hash path before reaching what the tool actually does. The large trailing sibling-consumer list and unlabelled provenance boilerplate crowd out the one sentence that matters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Strong coverage of the execution model, privacy posture, downstream consumers and its output field names, and it points at describe_tool for the output schema. What's missing is any semantics for the twelve nested policy_parameters - the actual diagnostic inputs - leaving the agent unable to construct a valid call without guessing.

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 compute, parent_hashes, parent_tool_ids and policy_parameters are already documented - a baseline 3. The description's '12-question' phrasing hints that the twelve policy_parameters keys are the questions, but it never explains what ebl_usage, rule_basis, ebl_platform, tbml_controls or the other untyped nested keys should contain, so the agent gains little beyond the schema.

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 core purpose is stated: '12-question A–F readiness diagnostic for digital trade / electronic trade documents (MLETR)'. That is a specific resource and output shape, but it sits in the last third of the text and nothing distinguishes it from siblings like check_digital_trade_rules, lookup_mletr_jurisdiction_adoption, or the many other run_*_fit diagnostics in the same family.

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 implied rather than directed – nothing says when to pick this over check_digital_trade_rules or run_agent_economy_fit, and there are no exclusions. The 'Output feeds:' list does provide genuine downstream routing value, and 'Use synthetic or anonymised inputs only' is a hard input constraint, which partially compensates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_dora_readiness_diagnosticDORA Readiness DiagnosticA
Read-onlyIdempotent
Inspect

DORA Readiness Diagnostic: OpenChainGraph compute node (infrastructure_mandate). 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. Output feeds: art-09-dora-incident-classifier, pnr-01-dora-ict-cascade-simulator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-29-dora-readiness-diagnostic.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: 12-question scored diagnostic across four DORA pillars (ICT risk management, incident classification & reporting, resilience testing, third-party risk). Outputs: all_answered, applicable_deadline_note, domain_scores, gaps, gaps_count, grade, grade_title, immediate_action_required, incident_route_recommended, regulatory_framework, score_pct, supervisory_exposure. Output schema: call describe_tool("run_dora_readiness_diagnostic").

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: answers. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered. The description adds genuinely new behavior: transient processing with no storage, logging or retention; a browser delegation URL path; and an AP2 artifact export carrying execution_hash for chain provenance. The FV-status snapshot caveat is also disclosed. It stops short of describing result determinism boundaries or what happens with partial answers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The most decision-relevant content (what the diagnostic scores, its outputs) sits at the end, behind several sentences of repetitive platform boilerplate ('OpenChainGraph compute node (infrastructure_mandate). Deterministic OpenChainGraph compute node'). The FV-status explanatory clause ('a snapshot, not a subscription...') is verbose relative to its value to an agent choosing a tool.

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?

With no output schema, the description usefully enumerates the returned fields (all_answered, domain_scores, gaps, grade, immediate_action_required, etc.) and points to describe_tool for the full schema. Combined with the privacy and provenance disclosures, an agent has enough to call it correctly; the unexplained 'answers' payload shape is the remaining shortfall.

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 baseline applies — compute, parent_hashes and parent_tool_ids are already well documented in the schema. The description adds nothing about the critical nested 'answers' object (declared only as an empty schema), such as whether it is keyed by question id or an array of 12, which is the one real semantic gap.

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 'Summary' sentence states a concrete verb and resource: a 12-question scored diagnostic across four named DORA pillars, with a listed output set (grade, gaps, score_pct). That is far more specific than the name alone. It does not, however, distinguish itself from near siblings such as classify_dora_incident or run_t1_readiness_diagnostic — the 'Output feeds' line names downstream consumers rather than competing tools.

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?

It gives a clear condition for the compute modes (auto/server/browser, and that gpu:true always delegates) plus a data-handling instruction ('Use synthetic or anonymised inputs only'). But there is no statement of when to pick this diagnostic over the many other readiness/fit diagnostics in the sibling list, and no prerequisites for the 12 answers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_emir_reporting_fitEMIR Reporting Readiness DiagnosticB
Read-onlyIdempotent
Inspect

EMIR Reporting Readiness Diagnostic: OpenChainGraph compute node (compliance_mandate). 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-157-emir-lifecycle-event-validator. Open at: https://ainumbers.co/chaingraph/art-158-emir-reporting-readiness-diagnostic.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.

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". See the tool's manifest for field names.

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely useful behavior the annotations cannot express: the compute:"browser" path returns a delegation URL instead of a result, gpu:true nodes always delegate, inputs are processed transiently and not retained, and an AP2 artifact with execution_hash is emitted. That is real information about return shape and data handling. It stops short of saying what a readiness result looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loading is reasonable, but a large share of the text is redundant with the schema (the compute:"auto"/"browser" explanation is near-verbatim what the compute property already says) or is opaque provenance plumbing (the FV-status receipt URL and the "snapshot, not a subscription" caveat). The sentences that earn their place — transient processing, synthetic inputs, AP2 export, upstream artifact — are buried mid-paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should convey what comes back; it names only the AP2 artifact and execution_hash, not the readiness verdict or findings payload. The decision-function inputs are explicitly outsourced to an external manifest, so an agent cannot construct meaningful policy_parameters from this definition alone. Callable with zero required params, but under-specified for correct use.

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%, so compute, parent_hashes, parent_tool_ids and policy_parameters are already documented in structured form; the description largely restates the compute-mode semantics. Its only added value is pointing the agent at the tool's manifest for policy_parameters field names, which is a deferral rather than documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title-style opening ("EMIR Reporting Readiness Diagnostic") tells an agent this runs an EMIR reporting readiness assessment, which is enough to distinguish it from validate_emir_trade_report or reconcile_emir_pairing. But the description never states what the diagnostic actually checks or produces — no verb+resource sentence beyond the label. Most of the remaining text is platform boilerplate about compute modes and provenance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to reach for this versus the many sibling EMIR tools (check_emir_uti_completeness, validate_emir_upi, adjudicate_emir_reconciliation), and no prerequisites or exclusions. The only contextual hint is that it consumes artifacts from art-157-emir-lifecycle-event-validator, which implies sequencing but is not framed as guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_eudr_readiness_fitEUDR Readiness DiagnosticA
Read-onlyIdempotent
Inspect

EUDR Readiness Diagnostic: OpenChainGraph compute node (compliance_mandate). 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-169-eudr-supply-chain-traceability-linker. Open at: https://ainumbers.co/chaingraph/art-170-eudr-readiness-diagnostic.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: A-F EUDR readiness diagnostic across six dimensions: scope mapping, geolocation data quality, DDS submission readiness (TRACES NT), country risk assessment, risk mitigation documentation, and 5-year retention system. Outputs: dimensions_met, dimensions_total, enforcement_deadlines, fully_ready, gaps, readiness_grade, readiness_score. Output schema: call describe_tool("run_eudr_readiness_fit").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond what annotations declare (readOnly, idempotent, non-destructive), the description discloses compute-mode routing, that gpu:true nodes always delegate to the browser, that inputs are processed transiently and not retained, and that an AP2 artifact with execution_hash is exported. These are genuinely additive behavioral facts; it loses a point for the noisy, partly-redundant FV-status/hash paragraph.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the description is padded with a raw FV-status URL and 64-hex hash, an explanatory receipt sentence, and duplicated determinism/compute notes. Those sentences don't earn their place for an agent trying to decide whether to call the tool.

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?

With no output schema, the description compensates by enumerating the return fields (readiness_grade, gaps, enforcement_deadlines, etc.) and the six assessed dimensions. Combined with annotations covering the safety profile, an agent has enough to call and interpret it correctly; only the missing when-to-use routing keeps it from a 5.

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 defines compute, parent_hashes, parent_tool_ids, and policy_parameters. The description largely restates compute semantics and does not add syntax or format guidance for policy_parameters beyond what the schema provides — baseline 3 is appropriate.

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?

It names the specific resource (EUDR) and the mechanism (an A-F readiness diagnostic across six named dimensions), so an agent can tell it apart from the many other run_*_fit siblings. It stops short of naming which sibling a differently-scoped EUDR question (e.g. classify_eudr_commodity_scope) should route to.

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 description gives precondition guidance (use synthetic/anonymised inputs only, consumes art-169 upstream) but never states when to reach for this tool versus the numerous alternative EUDR tools in the sibling list. Usage is implied by the dimension breakdown rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_illustration_selfsupport_testLife Illustration Self-Support Test (NAIC Model 582)A
Read-onlyIdempotent
Inspect

Life Illustration Self-Support Test (NAIC Model 582): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-254-compute-rbc-action-level. Open at: https://ainumbers.co/chaingraph/art-253-run-illustration-selfsupport-test.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: Runs the NAIC Model Regulation 582 §8C self-support test (year 15 and year 20 account value positive) and §8D lapse-support prohibition check for life insurance illustrations. Outputs: account_value_yr15, account_value_yr20, cumulative_net, face_amount, illustration_valid, issues, lapse_adjusted_av_yr20, lapse_support_flag, not_legal_advice, pii_note, policy_years_provided, regulatory_basis, self_support_pass, self_support_yr15_pass, self_support_yr20_pass, table_source, table_version, total_coi, total_expenses, total_interest, total_premiums. Output schema: call describe_tool("run_illustration_selfsupport_test").

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: account_values, cost_of_insurance, credited_interest, expense_charges, face_amount, lapse_rates, premium_payments. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), but the description adds real behavioral detail: the compute:'auto'/'server'/'browser' routing rules, that inputs are processed transiently and not retained, that only synthetic or anonymised inputs should be used, and that an AP2 artifact with execution_hash is exported. These are useful traits an agent could not infer 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dominated by platform boilerplate — OpenChainGraph compute-node language, a Cloudflare Workers explanation, an offline-verifiable FV-status URL, and a full output-field dump — before the actual test semantics arrive near the end. The core purpose is buried rather than front-loaded, and several sentences do not help an agent decide whether or how to call this tool.

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?

For a read-only deterministic compute tool with a rich input schema, the description is largely sufficient: the regulatory test, compute routing, data-handling constraints, and output fields are all covered. The absence of an explicit usage boundary relative to sibling tools is the main remaining gap.

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 schema itself documents compute, parent_hashes, parent_tool_ids, and the required policy_parameters keys. The description adds little parameter-specific meaning beyond what is already in the schema, so the baseline of 3 applies; the long output list describes return fields, not input semantics.

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?

The description states a specific verb and resource: it runs the NAIC Model Regulation 582 §8C self-support test (year 15 and year 20 account value positive) and the §8D lapse-support prohibition check. That is far more precise than the tool name alone and distinguishes it from generic compute or fit-diagnostic siblings.

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 implied by the regulatory citation and by the line 'Output feeds: art-254-compute-rbc-action-level', which hints at where the result goes next. But it never states when to use this instead of adjacent tools such as run_insurance_reporting_fit, lint_insurance_evidence_freshness, or assess_naic_ais_program_readiness, and it gives no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_insurance_reporting_fitInsurance Reporting Readiness DiagnosticB
Read-onlyIdempotent
Inspect

Insurance Reporting Readiness Diagnostic: OpenChainGraph compute node (compliance_mandate). 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-181-sii-ifrs17-reconciliation-bridger. Open at: https://ainumbers.co/chaingraph/art-182-insurance-reporting-readiness-diagnostic.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: A-F insurance reporting readiness diagnostic across six dimensions: IFRS 17 measurement model election, CSM system implementation, risk-adjustment disclosure, Solvency II Pillar-3 QRT reporting, SII-IFRS 17 reconciliation, and ICS assessment for IAIGs. Outputs: dimensions_met, dimensions_total, fully_ready, gaps, readiness_grade, readiness_score. Output schema: call describe_tool("run_insurance_reporting_fit").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuine extra context: compute:'auto' vs 'browser' delegation semantics, gpu:true always delegating, transient non-stored processing, and export of an AP2 artifact with execution_hash. The duplicated 'deterministic OpenChainGraph compute node' phrasing and FV-status receipt detail add noise, but the behavioral picture is materially richer than 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core diagnostic summary and output list are buried after several lines of node boilerplate, and 'Deterministic OpenChainGraph compute node' is stated twice in adjacent sentences. The FV-status URL/receipt explanation is lengthy relative to its decision value. It is front-loaded only by title, not by the payload that matters.

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?

For a multi-dimension diagnostic with no output schema, the description names the return fields (dimensions_met, dimensions_total, fully_ready, gaps, readiness_grade, readiness_score), the upstream artifact to chain from, and the export artifact type. That is enough for an agent to call the tool correctly, though the usage boundary with sibling diagnostics remains unstated.

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 explains compute modes, parent_hashes chaining, and policy_parameters. The description reinforces the compute default but adds no syntax or format detail the schema lacks; baseline 3 is appropriate when the schema does the heavy lifting.

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: an A-F 'readiness diagnostic' and enumerates the six dimensions it scores (IFRS 17 measurement election, CSM, risk adjustment, SII Pillar-3 QRT, SII-IFRS 17 reconciliation, ICS). That scope distinguishes it from reconcile_sii_ifrs17 or check_ifrs17_risk_adjustment, which cover single dimensions. It does not explicitly name a sibling to contrast with, so a 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what the tool produces but never states when to reach for this diagnostic versus the many adjacent tools (run_emir_reporting_fit, run_slate_reporting_fit, reconcile_sii_ifrs17) or any prerequisites/exclusions. The only contextual constraints ('synthetic or anonymised inputs only', upstream artifact art-181) are constraints, not selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_irrbb_disclosure_fitIRRBB Disclosure Readiness DiagnosticA
Read-onlyIdempotent
Inspect

IRRBB Disclosure Readiness Diagnostic: OpenChainGraph compute node (compliance_mandate). 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-187-irrbb-csrbb-scope-checker. Open at: https://ainumbers.co/chaingraph/art-188-irrbb-disclosure-readiness-diagnostic.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: A-F IRRBB disclosure readiness diagnostic across five dimensions: EVE shock calculation performed, SOT (EVE + NII) evaluated, standardised approach mapped, CSRBB scope assessed, and Pillar 3 IRRBB1 disclosure template ready. Outputs: dimensions_met, dimensions_total, fully_ready, gaps, readiness_grade, readiness_score. Output schema: call describe_tool("run_irrbb_disclosure_fit").

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". Unknown keys are refused.

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, but the description adds genuine behavior: transient processing with no storage or logging, a synthetic/anonymised-input requirement, server-vs-browser delegation semantics including a returned delegation URL, and export of an AP2 artifact with execution_hash for chain provenance. The compute-mode passage largely restates the schema property, which weakens the addition, but the data-handling and artifact-export disclosures are real value beyond annotations and consistent with readOnlyHint.

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?

The purpose appears last under 'Summary' while the opening sentences repeat the name twice as 'IRRBB Disclosure Readiness Diagnostic: OpenChainGraph compute node' and 'Deterministic OpenChainGraph compute node'. Framework boilerplate (compute binding, FV-status snapshot disclaimer, 'verifies offline regardless of whether that file is ever fetched') consumes most of the text and does not help tool selection.

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?

With no output schema, the description usefully enumerates the returned fields (dimensions_met, dimensions_total, fully_ready, gaps, readiness_grade, readiness_score) and points to describe_tool for the schema, and it covers data handling, chaining, and delegation behavior. The remaining gap is input semantics for policy_parameters, which an agent would need to supply 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 description coverage is 100%, so the baseline is 3. The description does not explain what keys belong in policy_parameters beyond 'parameters for this tool's decision function', and the five graded dimensions are only a loose hint at required inputs. No syntax or format guidance is added over the schema.

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 'Summary' sentence states a specific readiness diagnostic verb-plus-resource and enumerates the five dimensions it scores (EVE shock, SOT, standardised approach, CSRBB scope, Pillar 3 IRRBB1), which clearly separates it from atomic siblings like calculate_irrbb_eve_shocks or map_irrbb_standardised_approach. It also names the upstream artifact (art-187-irrbb-csrbb-scope-checker) it consumes. Sibling differentiation is implicit rather than stated as an explicit contrast, and the purpose is buried at the end behind compute-framework boilerplate.

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?

It implies usage by describing what gets graded and which upstream artifact must feed it, so an agent can infer this is the aggregate readiness call after the individual IRRBB checks. However, it never says when to prefer this over the atomic sibling tools or what preconditions (completed EVE/SOT/CSRBB assessments) must hold; there is no when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_kernel_vmKernel VMA
Read-onlyIdempotent
Inspect

Run a ChainGraph decision kernel's compute(policy_parameters) inside a sandboxed, deterministic, in-browser QuickJS-ng WebAssembly VM (ocg-deterministic-compute@2) and return its output_payload. Demo kernel set only -- for the full catalog, use the worker's compute kernels directly. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("run_kernel_vm").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only, idempotent, non-destructive annotations, the description discloses that execution occurs in a sandboxed deterministic in-browser QuickJS-ng WebAssembly VM, runs client-side with zero PII and zero network, and renders an interactive widget. These are substantive behavioral details not present in 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and scope, and each sentence carries relevant information about environment, limitations, or output discovery. It is dense but not padded, though the long opening sentence could be split for easier parsing.

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?

Given one optional parameter, no output schema, and strong annotation coverage, the description is largely complete: it explains the execution model, demo-only scope, output_payload behavior, and points to describe_tool for the output schema. It could still say more about how to discover which demo kernels exist, but no critical invocation detail 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?

The input schema has 100% description coverage for the single optional inputs object, so the schema already carries parameter meaning. The description adds only that inputs are applied via the AIN Bridge prefill, which is useful but does not go materially beyond the schema's own description.

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?

The description uses a specific verb/resource pair: it runs a ChainGraph decision kernel's compute function and returns output_payload. It also distinguishes the demo kernel scope from the full catalog and names the execution environment, so an agent can identify exactly what this tool does.

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?

It explicitly says 'Demo kernel set only' and directs users to the worker's compute kernels for the full catalog, giving a clear use condition and alternative. The alternative is not named as a specific sibling tool, which keeps it from being maximally explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_liquidity_stress_testLiquidity Stress Test Simulator (LCR/NSFR)C
Read-onlyIdempotent
Inspect

Liquidity Stress Test Simulator (LCR/NSFR): OpenChainGraph compute node (liquidity_mandate). 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. Output feeds: rca-02-mica-reserve-stress, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/sim-01-lcr-nsfr-liquidity-stress-test.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: Monte Carlo simulation of LCR and NSFR under Basel III stress (CRR Art. Outputs: compliance_flags, lcr_breach_pct, lcr_median_day30, lcr_p5, n_paths, nsfr_breach_pct, nsfr_median_day250, nsfr_p5, scenario, verdict. Output schema: call describe_tool("run_liquidity_stress_test").

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: asf_cap, hqla_l1, hqla_l2a, hqla_l2b, inflows, preset, retail_outflow, rsf_loans, rsf_other, rsf_securities, scenario, secured_outflow, wholesale_outflow. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/ idempotentHint/ destructiveHint=false, so the safety profile is covered. The description adds genuine, non-redundant context: inputs are processed transiently and not stored or logged, execution is deterministic, an AP2 artifact with execution_hash is exported for chaining, and downstream consumers are named. However it wastes words repeating 'OpenChainGraph compute node' twice and the FV-status receipt paragraph is jargon-heavy with unclear agent actionability.

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?

Badly front-loaded: the title is restated, followed by boilerplate, compute-mode logistics, a URL, an FV-status hash path, and only then the 'Summary:' that says what the tool does. The summary sentence is truncated mid-clause ('CRR Art.'), and the closing 'Output schema: call describe_tool(...)' delegates documentation elsewhere instead of being self-contained.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description partially compensates by listing the returned fields (lcr_breach_pct, lcr_p5, nsfr_breach_pct, verdict, etc.), plus data-retention and chaining behavior. But the truncated regulatory sentence and the total absence of guidance on the nested policy_parameters leave real gaps for a tool whose inputs drive the entire simulation.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters object, including the required key list. The description adds nothing about the 15 nested policy inputs (units, ranges, defaults for hqla_l1, asf_cap, n_paths, scenario presets), so 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?

The description does state a specific verb and resource: 'Monte Carlo simulation of LCR and NSFR under Basel III stress'. The problem is placement and completeness — the actual purpose appears mid-way under 'Summary:' and the sentence is truncated at 'CRR Art.', leaving the regulatory basis unfinished. No differentiation from closely-named siblings such as compute_lcr_nsfr_leverage, compute_stress_test_scenarios or stress_test_ap_redemption_path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to pick this tool over alternatives, no prerequisites beyond the data-handling caveat ('Use synthetic or anonymised inputs only'), and no exclusions. The compute-mode paragraph is execution logistics already spelled out in the schema, not usage guidance. An agent must infer selection purely from the tool name against ~400 siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_mcp_deployability_diagnosticMCP Server Deployability DiagnosticC
Read-onlyIdempotent
Inspect

MCP Server Deployability Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-18-mcp-developer-readiness-scorecard. Open at: https://ainumbers.co/chaingraph/art-28-mcp-server-deployability-diagnostic.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. Output schema: call describe_tool("run_mcp_deployability_diagnostic").

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely useful behavior: compute:"browser" returns a delegation URL rather than a result, gpu:true nodes always delegate, inputs are processed transiently and not retained, and an AP2 artifact with execution_hash is exported. That goes meaningfully beyond the annotation set.

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?

The paragraph opens with near-duplicate sentences ("OpenChainGraph compute node" / "Deterministic OpenChainGraph compute node") and then spends substantial space on a spec URL, a 64-character FV-status hash, and an offline-verification caveat that do not help an agent decide or invoke. Only the compute/delegation sentences earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should explain what the diagnostic returns, but it only says to call describe_tool for the schema and names a downstream artifact consumer. For a 4-parameter diagnostic with a nested policy_parameters object, the agent is left without the payload shape or expected input fields.

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 all four parameters; baseline 3 applies. The description reinforces the compute-mode default and delegation semantics but says nothing about parent_hashes/parent_tool_ids and only defers policy_parameters to "the tool's manifest for field names."

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentences restate the title ("MCP Server Deployability Diagnostic") and the platform ("Deterministic OpenChainGraph compute node") without a verb describing what computation actually happens or what the diagnostic measures. The only hints about purpose are indirect ("Output feeds: art-18-mcp-developer-readiness-scorecard"). An agent cannot distinguish this from siblings like score_mcp_server_readiness or lint_mcp_server_conformance based on the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the many adjacent readiness/conformance siblings. The only guidance present is an input constraint ("Use synthetic or anonymised inputs only") and compute-mode routing, which are operational rather than selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_mica_casp_fitMiCA CASP Fit DiagnosticB
Read-onlyIdempotent
Inspect

MiCA CASP Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-99-mica-transitional-deadline-router, art-100-mica-casp-authorization-readiness, art-102-crypto-asset-whitepaper-linter, art-103-mar-crypto-surveillance-readiness, art-104-tfr-travel-rule-batch-validator, art-105-mica-token-service-scoper, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-98-mica-casp-fit-diagnostic.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: 12-question A-F diagnostic scoping a crypto-asset service provider's MiCA Title-V lifecycle readiness (authorization, Art 67 own-funds, whitepaper, MAR-crypto, travel rule) and routing to the right MiCA chain. Outputs: dim_scores, gaps, note, primary_recommendation, readiness_grade, reference_version, secondary_recommendations, services_count. Output schema: call describe_tool("run_mica_casp_fit").

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: inputs. Unknown keys are refused.

TDQS

B3.4/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 description's added value is elsewhere: it discloses transient processing ('not stored, logged, or retained'), instructs synthetic/anonymised inputs, explains compute:'auto'/'browser'/'server' delegation with gpu:true always delegating, and states an AP2 artifact with execution_hash is exported. Those data-handling and provenance traits go meaningfully beyond the annotation set.

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?

The description is dominated by OpenChainGraph boilerplate — an FV-status content hash, a documentation URL, and a seven-item downstream feed list — while the single sentence that actually explains the tool sits at the very end. Front-loading is inverted; an agent must read past most of the text to learn what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does list the return fields (dim_scores, gaps, readiness_grade, etc.), which is useful. However, the nested policy_parameters object has ten sub-properties with no documented semantics and 'unknown keys are refused', so an agent cannot construct the required 'inputs' payload from the description or schema alone.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description adds little parameter-level meaning beyond restating compute modes, and it does not explain what keys the nested policy_parameters 'inputs' object expects.

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 'Summary' sentence late in the description states a specific verb and resource: a 12-question A-F diagnostic scoping a MiCA Title-V lifecycle readiness and routing to the right MiCA chain, with a named output list. That is genuinely disambiguating, but the differentiation from the near-duplicate sibling assess_mica_casp_readiness is never stated, and the actual purpose is buried behind compute/boilerplate prose.

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 'Output feeds:' list of seven downstream tools implies where this sits in a workflow, but there is no explicit when-to-use or when-not guidance, and no comparison against assess_mica_casp_readiness or the other MiCA tools. Usage has to be inferred from the downstream routing list rather than read directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_model_test_batteryModel Test BatteryA
Read-onlyIdempotent
Inspect

Model Test Battery: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-489-model-test-battery.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: Runs the deterministic-given-data quantitative model validation battery: discriminatory power (Gini coefficient, Kolmogorov-Smirnov statistic) from scored outcomes, population and characteristic stability (PSI, CSI) between two declared snapshots using the caller's own bins, back-test outcome-vs-... Outputs: as_of_date, back_test, tests, tests_breached, tests_passed, tests_run, tests_skipped_insufficient_data, tests_skipped_no_threshold, threshold_version, thresholds_applied. Output schema: call describe_tool("run_model_test_battery").

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: as_of_date, backtest, discrimination, stability, threshold_version, thresholds. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile, and the description adds a lot on top: deterministic execution, the server/browser delegation split, gpu:true always delegating, transient non-retention of inputs, AP2 artifact emission with execution_hash for chain provenance, and an offline-verifiable FV receipt. That is far beyond what readOnlyHint/idempotentHint convey.

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?

Compute semantics and the input-hygiene caveat are front-loaded, but the middle carries procedural boilerplate: the marketing URL, a long FV-status hash and receipt essay, and a 'call describe_tool' pointer. The summary is also cut off mid-sentence, wasting the space left for it.

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?

With no output schema, the description usefully enumerates the return fields (as_of_date, back_test, tests_breached, tests_passed, threshold_version, etc.), and privacy/provenance behavior is covered. The remaining gap is the truncated function summary and the absence of any note on what the chain hashes do downstream.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description reinforces the compute enum semantics but adds no syntax or format detail the schema lacks, and the required sub-keys of policy_parameters are spelled out in the schema, not here.

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?

Beyond restating the name, it specifies the concrete computations: discriminatory power (Gini, KS) from scored outcomes, PSI/CSI stability between two declared snapshots using caller-declared bins, and back-testing. That clearly distinguishes it from siblings like assess_model_validation_status or compute_eba_im_model_validation_tracker. The trailing summary is truncated mid-phrase ('back-test outcome-vs-...'), which blunts an otherwise strong statement.

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?

It gives real conditional guidance for the compute modes (auto vs server vs browser, when gpu:true delegates) and a data-handling directive ('use synthetic or anonymised inputs only'). However, it never says when to pick this tool over the adjacent model-validation siblings, nor states prerequisites beyond input hygiene.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_pqc_timeline_fitPQC Timeline & Migration Fit DiagnosticB
Read-onlyIdempotent
Inspect

PQC Timeline & Migration Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-86-tls-pki-migration-planner, art-87-iso20022-pqc-readiness-checker, art-88-fido-pqc-conformance-checker, art-89-blockchain-quantum-risk-classifier, 499-crypto-asset-inventory-classifier, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-85-pqc-timeline-fit-diagnostic.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: 12-dimension A-F diagnostic mapping an organisation's cryptographic estate and sector to the CNSA 2.0 / EU-2030 / G7 / DORA post-quantum milestones, flagging the end-2026 EU crypto-inventory deadline. Outputs: dim_scores, do_now, inventory_deadline_flag, milestone_fit, milestones, note, prepare_ahead, primary_recommendation, protocol_routes, readiness_grade, reference_version, total_score. Output schema: call describe_tool("run_pqc_timeline_fit").

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". Unknown keys are refused.

TDQS

B3.2/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), so the bar is lower, and the description still adds real context: deterministic execution, server-side compute on Cloudflare Workers for gpu:false nodes, forcing browser delegation, transient non-retained processing, and a 'synthetic or anonymised inputs only' constraint. The AP2 export with execution_hash for chain provenance is also disclosed. What is missing is any note on latency/cost or what happens when the kernel is unavailable.

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?

The description is badly front-loaded: it leads with compute-mode and data-retention boilerplate before stating what the tool does. The full FV-status URL and a 64-character provenance hash path consume substantial space with no relevance to selecting or invoking the tool, and the compute paragraph duplicates the input schema verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating output keys (readiness_grade, total_score, dim_scores, milestone_fit, etc.) and by covering chaining via parent_hashes/parent_tool_ids and AP2 export. But for a nested-object decision tool, the actual decision inputs inside policy_parameters are left entirely opaque, and there is no statement of what a passing vs failing grade looks like.

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% at the top level, so baseline 3 applies; the description's explanation of compute:'auto'/'server'/'browser' merely restates the schema's own parameter description. Critically, the twelve policy_parameters keys (sector, agility_maturity, hndl_data_shelf_life, crypto_inventory_status, etc.) are undimensioned in both schema and description, so the agent gets no help on the inputs that actually drive the diagnostic.

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 summary sentence states a specific verb and deliverable: a 12-dimension A-F diagnostic mapping an organisation's cryptographic estate and sector to CNSA 2.0 / EU-2030 / G7 / DORA post-quantum milestones, flagging the end-2026 inventory deadline. That is concrete enough to distinguish it from generic fit diagnostics. However, it appears after three sentences of compute-mode boilerplate, and it never names the closest siblings (compute_pqc_deadline_ladder, plan_tls_pki_migration, check_iso20022_pqc_readiness) as distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use statement, and no alternative is named. The 'Output feeds: art-86..., art-87...' list communicates downstream routing, not selection criteria for this tool. An agent must infer from the title alone whether this or compute_pqc_deadline_ladder is the right entry point.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_rate_shock_ladderRate Shock Ladder ReplayA
Read-onlyIdempotent
Inspect

Rate Shock Ladder Replay: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-369-run-rate-shock-ladder.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: US OCC/FDIC interest-rate-risk parallel shock ladder: sweeps four prescribed parallel magnitudes (+/-100/200/300/400bp) over a bucketed repricing-gap schedule, returning both a duration-weighted delta-EVE leg and a 12-month cumulative-gap delta-NII leg per shock. Outputs: buckets_used, convention, ladder, magnitudes_bps, nii_12m_gap, preset_shocks, total_net_gap, worst_delta_eve, worst_scenario. Output schema: call describe_tool("run_rate_shock_ladder").

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: nii_12m_gap, shock_presets. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behavior: server-side vs browser delegation, gpu:true always delegating, transient non-retained input processing, and the AP2 execution_hash export for chain provenance. The FV-status note clarifies that the linked receipt verifies offline, so it does not contradict openWorldHint=false. Minor deduction for the boilerplate density rather than the content.

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?

The genuinely useful business summary is buried after boilerplate about Cloudflare Workers, GPU delegation, and a long FV-status URL plus an 80-character hash that an agent cannot act on. Roughly half the text is operator/runtime noise, and the front-loaded sentence ('OpenChainGraph compute node (analytics_mandate)') conveys almost nothing.

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?

With no output schema, the description compensates by enumerating the returned fields (buckets_used, convention, ladder, magnitudes_bps, nii_12m_gap, preset_shocks, total_net_gap, worst_delta_eve, worst_scenario) and pointing to describe_tool for the full schema. Combined with compute-mode and retention disclosure, an agent has enough to call it correctly; only the shape of the nested policy_parameters inputs remains thin.

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 baseline is 3. The description restates compute mode behavior and names required policy parameters (nii_12m_gap, shock_presets) that the schema already documents, and adds nothing about the format of repricing_gaps or shock_presets beyond what the schema says.

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 'Summary' sentence names a specific verb and resource: sweeping four prescribed parallel shock magnitudes over a bucketed repricing-gap schedule, returning a delta-EVE leg and a delta-NII leg. That is far more precise than the vague name would suggest, though it does not explicitly distinguish itself from the many IRRBB siblings (calculate_irrbb_eve_shocks, evaluate_irrbb_sot_nii, calculate_basis_risk_nii_shock), so the agent must infer the difference.

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 description gives usage constraints ('Use synthetic or anonymised inputs only') and explains compute-mode selection, but never states when to choose this ladder over the other IRRBB shock tools or what input preconditions the repricing-gap schedule needs. Usage is implied by domain description rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_regrpt_edit_checksPublished Regulatory Report Edit-Check RunnerB
Read-onlyIdempotent
Inspect

Published Regulatory Report Edit-Check Runner: OpenChainGraph compute node (regulatory_reporting). 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. Open at: https://ainumbers.co/chaingraph/art-484-regrpt-editcheck-runner.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: Evaluates a caller-supplied report instance against a caller-supplied published edit-check rule set -- FFIEC Call Report validity and quality edits (Excel/PDF, published ahead of each quarter-end, latest 2026-01-22) or the EBA ITS validation-rules list -- across seven rule shapes: intra-schedule... Outputs: compliance_flags, findings, note, rule_set_source, rule_set_version, stale_suppressions, summary, suppressions_applied. Output schema: call describe_tool("run_regrpt_edit_checks").

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: report_instance, rule_set, suppressions. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, and the description adds genuinely useful context beyond them: transient processing with no storage/logging, a synthetic-or-anonymised-inputs constraint, server vs. browser delegation semantics, and an AP2 artifact carrying execution_hash for provenance. The cost is that this value is padded with low-signal platform boilerplate (FV-status file hash, snapshot disclaimer).

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?

Badly under-structured for its size: it opens with node/compute/kernel boilerplate, then a URL, then an FV-status hash and a snapshot disclaimer, before reaching the actual purpose. The summary sentence is visibly truncated ("across seven rule shapes: intra-schedule..."), so the most informative content is literally cut off.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-policy, four-parameter compute node with no output schema, the description does list the eight output keys and covers compute modes and privacy. But the truncated rule-shape summary and the absence of any differentiation from run_call_report_edit_checks leave the agent without enough to choose confidently between them.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description restates the compute-mode semantics verbatim and only lightly enriches policy_parameters by naming the caller-supplied report_instance/rule_set and implying suppressions through the stale_suppressions and suppressions_applied outputs — 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?

Buried past several paragraphs of platform boilerplate, the core sentence is specific: "Evaluates a caller-supplied report instance against a caller-supplied published edit-check rule set" with named rule sources (FFIEC Call Report edits, EBA ITS validation rules) and seven rule shapes. However, it never distinguishes itself from the very close sibling run_call_report_edit_checks, which appears to cover overlapping Call Report edit-check territory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use / when-not-to-use guidance and no mention of run_call_report_edit_checks or run_call_report_edit_checks-adjacent alternatives. The only routing information is the generic compute-mode discussion, which is about execution location, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_robinhood_chain_fit_diagnosticRobinhood Chain Fit DiagnosticB
Read-onlyIdempotent
Inspect

Robinhood Chain Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-317-rhc-multiplier-reconciler, art-318-rhc-regime-mapper, art-319-rhc-valuation-linter, art-320-rhc-collateral-haircut, art-321-rhc-bold-finality-classifier, art-322-rhc-ap-redemption-stress. Open at: https://ainumbers.co/chaingraph/art-323-rhc-fit-diagnostic.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.

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". See the tool's manifest for field names.

TDQS

B3/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 the description adds genuinely useful behavioral facts: deterministic server-side computation on Cloudflare Workers, browser delegation when compute='browser' or gpu:true, transient non-retained processing, a synthetic-input constraint, and export of an AP2 artifact carrying execution_hash for provenance. It does not describe the return payload shape or what a failing diagnostic looks like, keeping it below 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The compute and privacy content is front-loaded and useful, but the final sentence chain — the marketing URL, the long provenance list of downstream tool ids, and the FV-status receipt paragraph — is boilerplate that does not help an agent decide or invoke. Roughly half the text earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Read-only annotations plus full schema coverage cover the safety and input side, and the AP2 artifact export is disclosed even without an output schema. However, the actual decision content is left opaque: policy_parameters is a free-form object whose fields are only findable in an external manifest, and the description never says what a 'fit' result means, so an agent cannot predict the outcome.

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 compute, parent_hashes, parent_tool_ids and policy_parameters are already documented; the description largely restates the compute-mode semantics. It adds no meaning for parent_hashes/parent_tool_ids ordering or for what field names policy_parameters expects (it defers to 'the tool's manifest'), so this sits at the schema-reliant baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as an OpenChainGraph compute node for the Robinhood Chain fit diagnostic and lists six downstream consumer tools (multiplier reconciler, regime mapper, valuation linter, collateral haircut, finality classifier, AP redemption stress), which hints at domain. But it never states what the diagnostic actually evaluates or returns conceptually — 'compute node (agent_guardrail_mandate)' is infrastructure language, not a description of the analytical purpose. An agent cannot tell from this text how it differs substantively from siblings like run_arc_fit_diagnostic or run_tempo_fit_diagnostic.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage-oriented content is about the compute mode parameter (auto vs server vs browser), which is parameter behavior, not when to select this tool over alternatives. There is no statement of preconditions, no mention of when this diagnostic applies versus the many other '*_fit_diagnostic' siblings, and no exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_sanctions_screening_fitSanctions & Export-Control Screening Fit DiagnosticA
Read-onlyIdempotent
Inspect

Sanctions & Export-Control Screening Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-91-ownership-50pct-aggregator, art-92-screening-list-coverage-checker, art-93-fuzzy-match-calibration-scorer, art-94-eccn-dual-use-classifier, art-95-circumvention-diligence-assessor, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-90-sanctions-screening-fit-diagnostic.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: 12-param A-F diagnostic scoping a firm's sanctions/export-control screening program (50%-rule ownership, list coverage, fuzzy-match calibration, ECCN classification, circumvention controls) and routing to the right sanctions/export-control chain. Outputs: always_route, dim_scores, gaps, key_dates, note, primary_recommendation, program_grade, raw_score, reference_version, secondary_routes. Output schema: call describe_tool("run_sanctions_screening_fit").

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". Unknown keys are refused.

TDQS

A3.5/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), yet the description adds genuinely new traits: deterministic computation, server-vs-browser delegation rules, transient non-retention of inputs, the instruction to use only synthetic/anonymised inputs, and an AP2 artifact with execution_hash for provenance. Minor waste in that the compute-mode paragraph largely restates the `compute` schema description, but the data-handling and provenance disclosures are real value.

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?

The definition is badly front-loaded: it opens with title duplication and ~150 words of compute/data-retention boilerplate, then a downstream-feed list, a URL, and an unreadable 64-character FV-status hash path before finally reaching the actual purpose in the 'Summary:' clause. The content is mostly relevant but ordered so the agent must read to the end to learn what the tool is.

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?

With no output schema, the description usefully enumerates the return keys (program_grade, raw_score, dim_scores, gaps, always_route, secondary_routes, key_dates, etc.) and points to describe_tool for the full schema. It also covers determinism, delegation, and data handling. What remains unstated is whether policy_parameters must be populated for a meaningful grade and how always_route is decided.

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 carries param meaning; the description only adds that policy_parameters is a '12-param' A-F set and maps it to five topical domains (ownership, list coverage, fuzzy-match, ECCN, circumvention). It does not explain 'always_route', 'dim_scores', or grading mechanics, so it neither compensates further nor degrades below the baseline.

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 'Summary:' clause gives a specific verb and resource: a '12-param A-F diagnostic scoping a firm's sanctions/export-control screening program' with the five assessed domains named, plus its routing role. That is far more than a restated title. It loses a point because the statement is buried after boilerplate and never distinguishes this from adjacent siblings such as score_sanctions_screening_quality or build_sanctions_screening_evidence_pack.

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?

There is no explicit when-to-use or when-not, and no named alternative. Usage is only implied: it is a pre-work scoping diagnostic whose 'Output feeds:' list (art-91 through art-95, cry-05) signals it as an entry point that routes downstream. That is enough to infer intent but not enough to choose between this and the other sanctions tools without reading their schemas.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_section125_ndt§125 Cafeteria Plan Nondiscrimination TesterB
Read-onlyIdempotent
Inspect

§125 Cafeteria Plan Nondiscrimination Tester: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-301-section125-ndt.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: Runs the §125 cafeteria-plan nondiscrimination tests from supplied aggregate participant counts: an eligibility-ratio test and a contributions-and-benefits ratio test (§410(b)-style ratio-percentage analogy -- IRS has never finalized regs under §125(g)(3), DRAFT pending final rules), and the stat... Outputs: all_tests_pass, benefits, concentration, eligibility, error. Output schema: call describe_tool("run_section125_ndt").

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: hce_avg_benefit_pct, hce_eligible_count, hce_total_count, key_employee_elected_total, nhce_avg_benefit_pct, nhce_eligible_count, nhce_total_count, total_elected_all_participants. Unknown keys are refused.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description does add genuine behavior beyond them: transient processing with no storage/logging, compute modes with browser delegation, and an AP2 artifact export carrying execution_hash for chain provenance. Much of this is generic boilerplate repeated verbatim across the suite and duplicates the compute parameter description, so it is useful but not tool-specific enough for a 4.

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?

Severely back-loaded: the domain purpose, which is what an agent needs first, appears only after four sentences of compute-binding and FV-status boilerplate. The payload is also truncated mid-sentence, so the structure actively harms readability rather than merely running long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does list the returned fields (all_tests_pass, benefits, concentration, eligibility, error), which is the right compensation. But it omits any threshold logic (what ratio percentage passes, how the concentration test is applied) and the sentence explaining the tests is cut off, leaving a gap for a computation tool whose whole value is the decision rule.

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. The description nevertheless names the required policy_parameters keys and notes that unknown keys are refused, which the schema's 'additionalProperties: {}' and bare property declarations do not make obvious. It still explains nothing about the meaning or units of hce_avg_benefit_pct or key_employee_elected_total, so it stops short of a 5.

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 Summary paragraph states a specific verifiable purpose: running §125 cafeteria-plan eligibility-ratio and contributions/benefits ratio tests from aggregate participant counts, with the §410(b) analogy and a note that IRS regs under §125(g)(3) are unfinalized. That is far more specific than the title alone. However, the statement is buried after several sentences of platform boilerplate and is truncated mid-sentence ("...and the stat..."), and it never distinguishes itself from the close sibling run_401k_adp_acp_test.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this versus alternatives. run_401k_adp_acp_test performs a closely related nondiscrimination test and is not mentioned, nor are exclusions (e.g. safe-harbor plans, non-aggregate data). The only routing guidance is a pointer to describe_tool for the output schema, which is not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_slate_reporting_fitSLATE Reporting Readiness DiagnosticB
Read-onlyIdempotent
Inspect

SLATE Reporting Readiness Diagnostic: OpenChainGraph compute node (compliance_mandate). 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-544-slate-report-validator. Open at: https://ainumbers.co/chaingraph/art-545-slate-readiness-diagnostic.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: Score a caller-declared covered-securities-loan reporting pipeline against the FINRA Rule 6540 obligation checklist (SEC 10c-1a implementation, SLATE reporting) across five dimensions: reporting-agent registration, same-day capture of new/modified/terminated loans, Rule 6500-series field-spec map... Outputs: compliance_date_note, dimensions_passed, gaps, grade, obligation_checklist_version, ready, regulatory_basis, scope_note. Output schema: call describe_tool("run_slate_reporting_fit").

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: field_spec_mapping_complete, recordkeeping_retention_configured, reporting_agent_registered, same_day_capture_configured, unique_loan_identifier_scheme. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description still adds real behavior: default server-side compute with a browser-delegation fallback, transient input processing with no storage or logging, an AP2 artifact export carrying execution_hash, and a self-verifying FV status receipt. The gap is that the trust/provenance claims are asserted rather than scoped, and the truncated summary leaves the scoring behavior itself underspecified.

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?

Roughly the first half is reusable infrastructure boilerplate (Cloudflare Workers, gpu:false kernels, AP2, FV-status URL with a 64-character hash) that appears to be templated across many sibling tools. The genuine purpose is buried mid-paragraph and the sentence listing the dimensions is literally cut off with an ellipsis, which is a structural defect rather than concision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does list the returned keys (grade, ready, gaps, dimensions_passed, regulatory_basis, etc.) and points to describe_tool for the schema, which is adequate. However, the truncated dimension list and the absence of any indication of what grade/ready thresholds mean leave the diagnostic's decision behavior incomplete for a tool whose whole value is a scored verdict.

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 baseline is 3; compute mode and parent_hashes semantics are already in the schema. The description does add light meaning by naming the five diagnostic dimensions (agent registration, same-day capture, field-spec map, etc.), which correspond to the five policy_parameters booleans, but it never explains that mapping or why all five must be supplied.

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 description eventually states a specific verb and object: 'Score a caller-declared covered-securities-loan reporting pipeline against the FINRA Rule 6540 obligation checklist ... across five dimensions'. That is clearly distinct from the sibling validate_slate_report_fields, which validates fields rather than scoring readiness. The problem is placement: the actual purpose appears only after ~90 words of compute-infrastructure boilerplate, and the sentence is truncated mid-list ('Rule 6500-series field-spec map...').

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: 'caller-declared ... pipeline' plus 'Use synthetic or anonymised inputs only' and a note that it 'Consumes upstream artifacts from: art-544-slate-report-validator', which hints at chaining after the validator. There is no explicit statement of when to choose this over other readiness siblings (run_agentic_readiness_diagnostic, run_vida_readiness_diagnostic, etc.) and no when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_t1_readiness_diagnosticT+1 Settlement Readiness DiagnosticB
Read-onlyIdempotent
Inspect

T+1 Settlement Readiness Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-78-csdr-penalty-calculator, art-79-settlement-fail-predictor, art-80-ssi-conformance-checker, art-81-allocation-affirmation-conformance, art-82-securities-settlement-message-linter, art-83-buy-in-exposure-modeler, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-77-t1-settlement-readiness-diagnostic.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: 12-question A-F diagnostic scoring a firm's readiness for the coordinated EU/UK/CH T+1 move (11 Oct 2027) against the Industry Roadmap phases, grading trade-date allocation/confirmation (the Dec-2026 23:00 CET machine-readable mandate), SSI automation, funding compression and CSDR-penalty exposur... Outputs: binding_deadline, dim_scores, dual_date_note, firm_type, gap_checklist, jurisdictions, note, overall_score, primary_recommendation, readiness_grade, secondary_recommendations. Output schema: call describe_tool("run_t1_readiness_diagnostic").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description adds real context beyond them: default server-side compute on Cloudflare Workers for gpu:false nodes, 'browser' returning a delegation URL instead of a result, unconditional browser delegation for gpu:true, transient non-retained processing, and an exported AP2 artifact carrying execution_hash. The one omission is what the AP2 artifact or compute mode means for the immediate return payload.

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?

The core purpose is buried behind platform boilerplate: 'OpenChainGraph compute node' is stated twice in consecutive sentences, plus a marketing URL, a 64-character FV-status snapshot path, a seven-item downstream tool list, and a 'Summary' that is truncated mid-word ('CSDR-penalty exposur...'). Sizable portions (URL, receipt hash) do not help an agent decide or invoke.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, enumerating the return fields (readiness_grade, overall_score, dim_scores, gap_checklist, primary_recommendation, etc.) is genuinely useful and covers that gap. But it deflects the remaining contract to describe_tool("run_t1_readiness_diagnostic") and leaves the nested policy_parameters unspecified, which is the main thing an agent must fill in for a 12-question diagnostic.

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?

Top-level schema coverage is 100%, so compute/parent_hashes/parent_tool_ids/policy_parameters are already documented and the baseline of 3 applies. The description adds nothing about parameter values and notably does not explain the 11 nested policy_parameters keys (firm_type, jurisdictions, ssi_automation, allocation_confirmation_timing, etc.), which are declared as empty untyped objects in the schema and are the actual decision 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 description names a specific verb and resource: a 12-question A-F diagnostic that scores a firm's readiness for the coordinated EU/UK/CH T+1 move of 11 Oct 2027, covering allocation/confirmation, SSI automation, funding compression and CSDR-penalty exposure. That is far more specific than the title alone. It does not, however, differentiate itself from adjacent siblings such as predict_settlement_fail, check_ssi_conformance or the other run_*_readiness_diagnostic tools that also score readiness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage constraint given is a data-handling one ('Use synthetic or anonymised inputs only'). There is no statement of when to pick this over predict_settlement_fail, model_buy_in_exposure or the other readiness/fit diagnostics, and no prerequisites or exclusion conditions. The list of downstream consumers implies a sequencing ('Output feeds: ...') but never states it as guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_tempo_fit_diagnosticTempo Fit DiagnosticA
Read-onlyIdempotent
Inspect

Tempo Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-35-tempo-payments-business-case, art-36-tempo-mpp-agent-mandate, art-37-tempo-stablecoin-issuance, art-40-tempo-agentic-checkout. Open at: https://ainumbers.co/chaingraph/art-34-tempo-fit-diagnostic.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.

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". See the tool's manifest for field names.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses server-side versus browser execution, gpu:true delegation behavior, transient input handling with no storage/logging/retention, and AP2 artifact export with execution_hash for chain provenance. These are material behavioral traits that help the agent understand what happens when the tool is invoked.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the tool identity, but it is dense and contains redundant phrasing such as repeating 'OpenChainGraph compute node.' The long FV-status sentence and URL are useful but make the description less scannable, so it is adequate but not tight.

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?

For a complex compute node with no output schema, the description does a good job explaining compute modes, privacy posture, the AP2 artifact output, and downstream consumers. It still does not explain what diagnostic findings or policy outcomes are produced, but the schema is fully documented and the artifact behavior is covered.

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 input schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds some context about chain provenance and compute modes, but it does not materially extend parameter semantics beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as a 'Tempo Fit Diagnostic' OpenChainGraph compute node, but it never states what fit question is being diagnosed or what decision function is applied. It names the resource and artifact rather than giving a clear verb+resource purpose, leaving the agent to infer the tool's actual assessment scope.

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 description implies usage by listing downstream artifacts it feeds, but does not explicitly say when to use this diagnostic versus sibling diagnostics such as run_arc_fit_diagnostic or run_robinhood_chain_fit_diagnostic. Compute-mode guidance exists, but that is parameter behavior rather than tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_tokenized_settlement_fitWholesale Tokenized Settlement Fit DiagnosticA
Read-onlyIdempotent
Inspect

Wholesale Tokenized Settlement Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Output feeds: art-57-deposit-token-compliance-validator, art-58-cross-network-settlement-validator, art-59-settlement-asset-finality-classifier, 505-tokenized-collateral-eligibility-checker, 509-canton-party-allowlist-validator, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-56-tokenized-settlement-fit-diagnostic.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: 12-question A-F readiness diagnostic for wholesale tokenized settlement (tokenized deposits, central bank money, regulated stablecoins as settlement assets). Outputs: dim_scores, finality_flag, note, overall_grade, overall_score, primary_recommendation, remediation_checklist, secondary_recommendations. Output schema: call describe_tool("run_tokenized_settlement_fit").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: compute:'auto' resolves server-side on Workers for gpu:false nodes with a registered kernel, compute:'browser' instead returns a delegation URL, gpu:true always delegates, inputs are processed transiently and not stored or logged, and an AP2 artifact with execution_hash is exported. This is consistent with readOnlyHint/idempotentHint and explains execution semantics the annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Core purpose and outputs are present, but the text is padded with compute-node boilerplate, an FV-status hash URL, a fully-qualified spec URL, and a six-item list of downstream validator tool ids embedded mid-paragraph. Useful signal exists but is buried rather than front-loaded; the first sentence partially restates the title.

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?

With no output schema, the description does the work of enumerating the return fields (dim_scores, finality_flag, overall_grade, overall_score, primary_recommendation, remediation_checklist, secondary_recommendations) and explains chaining via parent_hashes/execution_hash and privacy handling. The main remaining gap is that the value space of the twelve policy inputs — which drive the grade — is left entirely unexplained.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters container, and the description adds little beyond restating compute modes. The twelve nested policy keys (network_model, finality_regime, operating_hours, etc.) carry no type or value guidance in either place, and the description's '12-question' framing only loosely maps to them.

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 and resource: a 12-question A-F readiness diagnostic for wholesale tokenized settlement (tokenized deposits, central bank money, regulated stablecoins). That is concrete and distinguishable in subject matter, but with dozens of near-identical 'run_*_fit'/'*_readiness_diagnostic' siblings (run_t1_readiness_diagnostic, run_mica_casp_fit, run_dora_readiness_diagnostic) it never names a contrasting alternative, so an agent still has to infer which diagnostic applies.

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 by the subject domain; there is no explicit 'use this when...' or 'use X instead'. The one genuinely directive sentence is the input constraint ('Use synthetic or anonymised inputs only'), plus compute-mode guidance, which is helpful but is about execution rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_treasury_clearing_fitTreasury Clearing Fit DiagnosticA
Read-onlyIdempotent
Inspect

Treasury Clearing Fit Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). Regulatory deadline: 2026-12-31 (SEC UST clearing: cash Dec 31 2026, repo Jun 30 2027. D0 root of all treasury-clearing chains.). 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. Output feeds: art-49-clearing-access-model-selector, art-50-ficc-margin-netting-estimator. Open at: https://ainumbers.co/chaingraph/art-48-treasury-clearing-fit-diagnostic.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: 12-question A-F readiness diagnostic for the SEC US Treasury clearing mandate (cash Dec 31 2026 / repo Jun 30 2027). Outputs: compliance_deadline, dim_scores, note, overall_grade, overall_score, primary_recommendation, remediation_checklist, secondary_recommendations. Output schema: call describe_tool("run_treasury_clearing_fit").

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". Unknown keys are refused.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), yet the description adds substantial extra context: default server-side compute on Workers for gpu:false nodes, browser delegation URL behavior for compute:'browser', no logging/retention of inputs, a 'synthetic or anonymised inputs only' warning, and AP2 artifact export with execution_hash for chain provenance. This is exactly the kind of behavior annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The regulatory deadline is stated twice ('2026-12-31' then 'cash Dec 31 2026 / repo Jun 30 2027'), and the FV-status paragraph with a full 64-character hash is verbose relative to its operational value. The core purpose is front-loaded, but the description wanders through compute plumbing and provenance receipts before restating the summary.

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?

With no output schema, the description compensates by enumerating the return fields (compliance_deadline, dim_scores, overall_grade, remediation_checklist, etc.) and pointing to describe_tool for the full schema. It is nearly complete for an agent to call it correctly, with the main gap being how policy_parameters keys map to the 12 diagnostic questions.

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% for the four top-level parameters, so the schema carries the burden and a 3 is the baseline. The description explains the compute modes and chaining purpose of parent_hashes/parent_tool_ids at a high level, but adds nothing about the 13 undocumented policy_parameters sub-keys that define the actual diagnostic questions.

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 ('12-question A-F readiness diagnostic for the SEC US Treasury clearing mandate'), with concrete deadline scope (cash Dec 31 2026 / repo Jun 30 2027) that separates it from the many other run_*_fit siblings. An agent can identify what this computes without opening 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies downstream usage ('Output feeds: art-49-clearing-access-model-selector, art-50-ficc-margin-netting-estimator'), which is useful chaining context, but never says when to choose this over sibling diagnostics such as run_t1_readiness_diagnostic or model_clearing_access_economics, nor when it is inappropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_umr_aana_readinessUMR / AANA Readiness DiagnosticB
Read-onlyIdempotent
Inspect

UMR / AANA Readiness Diagnostic: OpenChainGraph compute node (agent_guardrail_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-407-umr-aana-readiness-diagnostic.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: Determines whether a group's declared AANA (average aggregate notional amount) puts it in scope for the uncleared margin rules (UMR), per AT-CLEARING-WAVE-SPEC.md CW-2, and flags which counterparties are over the regulatory initial-margin threshold with an open documentation or custody gap. Outputs: aana_group_eur, aana_in_scope_threshold_eur, constants_version, counterparties, counterparties_over_im_threshold, counterparty_count, disambiguation, im_threshold_eur, in_scope_aana, note, overall_grade, remediation_checklist, thresholds_vintage. Output schema: call describe_tool("run_umr_aana_readiness").

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: counterparties. Unknown keys are refused.

TDQS

B3.2/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, not open-world), yet the description still adds real behavior: server-vs-browser delegation via compute modes, that gpu:true nodes always delegate and 'browser' returns a delegation URL instead of a result, transient no-retention processing, and an AP2 export carrying execution_hash. The spec reference (CW-2) and FV-status receipt add provenance context. Only the return-shape nuance under delegation is left implicit.

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?

The core purpose is buried behind boilerplate: compute-binding exposition, a Cloudflare Workers privacy paragraph, a spec URL, an FV-status receipt hash with a disclaimer, and a 14-item output field dump. Several sentences duplicate what annotations and the schema already establish, and the actual 'what it determines' sentence arrives only after all of that.

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?

With no output schema, listing the returned fields (aana_group_eur, in_scope_aana, counterparties_over_im_threshold, remediation_checklist, etc.) is genuinely useful for an agent deciding whether to call it. Combined with the compute-mode behavior, an agent has enough to invoke it correctly; the verbosity, not the coverage, is the problem.

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 carries the parameter semantics and the baseline is 3. The description reinforces 'compute:"auto"' defaults and that inputs are computed server-side for gpu:false nodes, but adds nothing about policy_parameters keys (aana_group_eur, counterparties) or parent_hashes/parent_tool_ids ordering beyond what the schema states.

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 summary states a specific verb and domain: it determines whether a group's declared AANA puts it in scope for UMR per spec CW-2, and flags counterparties over the IM threshold with an open documentation or custody gap. That is far more concrete than the name alone. It does not, however, distinguish itself from the many sibling readiness diagnostics (run_dora_readiness_diagnostic, run_agentic_readiness_diagnostic, etc.).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage instruction is "Use synthetic or anonymised inputs only," which is an input constraint rather than a when-to-use rule. Nothing says when this diagnostic is appropriate versus the sibling fit/readiness diagnostics, and no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_vida_readiness_diagnosticViDA Compliance Readiness DiagnosticC
Read-onlyIdempotent
Inspect

ViDA Compliance Readiness Diagnostic: OpenChainGraph compute node (compliance_mandate). 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-163-vida-oss-registration-router. Open at: https://ainumbers.co/chaingraph/art-164-vida-compliance-readiness-diagnostic.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.

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". See the tool's manifest for field names.

TDQS

C2.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool as read-only, idempotent, non-destructive, and closed-world, but the description adds substantial behavioral context beyond that: compute modes and browser delegation, transient processing with no storage/logging/retention, an AP2 artifact export with execution_hash, and a specific upstream artifact dependency. No annotation is contradicted, though error behavior and output contents beyond the artifact hash are not described.

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?

The description is a single dense paragraph that front-loads the tool name but then mixes compute mechanics, privacy notes, artifact provenance, an external URL, and a long FV-status hash path. The low-value URL and hash snapshot text dilute the core invocation information, and key semantics are buried rather than structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex compute node with four parameters, a nested object, and no output schema, the description omits what the diagnostic computes and what policy_parameters should contain beyond pointing to an external manifest. It covers compute environment, privacy, and provenance well, but not enough for an agent to confidently invoke the diagnostic or understand its return values.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates compute mode behavior and adds context around upstream artifact chaining, but it leaves policy_parameters opaque by only calling it the tool's 'decision function' and deferring field names to an external manifest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the tool as a 'ViDA Compliance Readiness Diagnostic' and an OpenChainGraph compute node, but it never explains what the diagnostic actually evaluates or what the decision function in policy_parameters decides. It also does not differentiate this from sibling ViDA tools such as assess_vida_drr_reporting_obligation or route_vida_oss_registration, aside from a vague upstream reference to art-163-vida-oss-registration-router.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no named alternatives among the many ViDA-related siblings. The only usage context is an implied upstream dependency ('Consumes upstream artifacts from: art-163-vida-oss-registration-router') and a data-handling constraint ('Use synthetic or anonymised inputs only'), neither of which tells an agent when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_vop_readiness_diagnosticVoP Readiness DiagnosticB
Read-onlyIdempotent
Inspect

VoP Readiness Diagnostic: OpenChainGraph compute node (vop_readiness_attestation). 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. Open at: https://ainumbers.co/chaingraph/art-548-vop-readiness-diagnostic.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: EU Instant Payments Regulation Verification-of-Payee (VoP) readiness/consistency diagnostic. Outputs: classification, consistent, match_score_provided, not_legal_advice, pii_note, psp_declared_maps_to, psp_vop_response_code, regulatory_basis, scope_note. Output schema: call describe_tool("run_vop_readiness_diagnostic").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds real value beyond that: transient non-stored processing, deterministic kernel execution, browser delegation semantics for gpu:true nodes, and an AP2 artifact export carrying execution_hash for chain provenance. The determinism claim is consistent with readOnlyHint+idempotentHint, so no contradiction; the only weakness is that it never says what a failed/unsupported compute mode looks like.

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?

The purpose sentence arrives late, behind name restatement and infrastructure prose, and the block is padded with artifacts that do not aid tool selection: a documentation URL, a full FV-status content hash, and a claim that the receipt verifies offline. Those sentences do not earn their place in a tool definition, and the real payload (purpose + outputs) is compressed into the last two lines.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the nine return fields (classification, consistent, match_score_provided, psp_declared_maps_to, psp_vop_response_code, regulatory_basis, scope_note, etc.), which is genuinely helpful. But it never explains what input drives the decision (policy_parameters accepts unknown-refused keys beyond psp_vop_response_code), and the sibling-overlap with simulate_vop_matching and build_vop_session_receipt is left unresolved.

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 carries the compute and parent_hashes/parent_tool_ids semantics almost verbatim. The description adds the chaining notion ("Exports an AP2 artifact with execution_hash") but says nothing about policy_parameters keys, other than echoing psp_vop_response_code in the outputs list — leaving the agent to infer what inputs the decision function needs.

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 description does state a specific verb and resource: "EU Instant Payments Regulation Verification-of-Payee (VoP) readiness/consistency diagnostic" with enumerated outputs, so an agent can tell what it computes. However, that sentence is buried after several paragraphs of ChainGraph infrastructure boilerplate, and it never distinguishes this tool from close siblings such as simulate_vop_matching, build_vop_session_receipt, or score_payee_name_match.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not, or alternative-tool guidance. The only conditional guidance is about compute routing (auto/server/browser), which restates the schema and is about execution mechanics rather than tool selection. The sole usage constraint given is "Use synthetic or anonymised inputs only," which is a data-handling rule, not selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_tool_poisoningMCP Tool-Poisoning & Prompt-Injection Manifest ScannerB
Read-onlyIdempotent
Inspect

Scan an MCP tool description/manifest for tool-poisoning and prompt-injection smells; returns a risk score and flagged patterns. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("scan_tool_poisoning").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful context: it returns a risk score and flagged patterns, renders as an interactive widget, and runs client-side with 'zero PII, zero network.' It does not contradict annotations, but it also does not add rich behavioral detail like scoring scale, pattern categories, or any rate limits.

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?

The description is front-loaded with purpose and return values, then briefly covers execution context. The final meta-instruction to call describe_tool is slightly unusual but functional. No wasted sentences.

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 tool has low complexity: one optional parameter, high schema coverage, and no output schema. The description covers what it does, the output summary (risk score and flagged patterns), and execution context. It omits details like scoring scale or specific pattern categories, but given the schema and annotations, it is adequate for correct invocation.

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 the single 'inputs' parameter is fully documented in the schema. The description adds only that inputs are applied via the AIN Bridge prefill, which is marginal beyond the schema. Baseline 3 is appropriate.

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 description states a specific verb and resource: 'Scan an MCP tool description/manifest for tool-poisoning and prompt-injection smells.' It also states the return ('risk score and flagged patterns'). However, it does not explicitly distinguish itself from similar siblings such as lint_mcp_tool_definition or lint_mcp_server_conformance, so an agent may still hesitate between them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no exclusions, and no alternatives. It does not say whether this should be used before or after linting, or how it differs from the many other MCP-related tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scope_mica_token_and_serviceMiCA Token & Service ScoperB
Read-onlyIdempotent
Inspect

MiCA Token & Service Scoper: OpenChainGraph compute node (agent_guardrail_mandate). 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-98-mica-casp-fit-diagnostic. Output feeds: cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-105-mica-token-service-scoper.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: Disambiguation router classifying a case as ART/EMT-issuer (delegated to existing stablecoin-compliance chains) vs CASP-service (MiCA chains). Outputs: classification, delegated_to_existing, existing_chains_delegated, mica_note, rationale, reference_version, route_target, wave20_chains_applicable. Output schema: call describe_tool("scope_mica_token_and_service").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the bar is lower, yet the description still adds genuinely useful behavior: compute:'auto' runs server-side on Cloudflare Workers for gpu:false kernels, 'browser' returns a delegation URL, gpu:true always delegates, inputs are transient and not stored, and an AP2 artifact with execution_hash is exported. Some of this is generic node boilerplate, but the compute/delegation semantics are real added value.

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?

The text is dominated by reusable platform boilerplate (compute-node explanation, privacy statement, FV-status hash URL) placed before the one sentence that says what the tool actually does. Front-loading is poor; the classification purpose and outputs should lead.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so listing the outputs (classification, delegated_to_existing, route_target, wave20_chains_applicable, etc.) is helpful, as is the describe_tool pointer. But the primary decision inputs — what goes into policy_parameters.inputs to make the classification — are never explained, which is the biggest gap for a tool whose only real parameter is that nested payload.

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 compute modes, parent_hashes, parent_tool_ids ordering, and policy_parameters with unknown-key refusal. The description restates the compute-mode rules and chain provenance but adds no additional parameter semantics beyond the schema.

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 final line names the concrete job: a disambiguation router classifying a case as ART/EMT-issuer (delegated to existing stablecoin-compliance chains) versus CASP-service (MiCA chains). That distinguishes it from siblings such as run_mica_casp_fit and assess_mica_casp_readiness, which assess rather than route. The purpose is real and specific, but it is buried at the very end of a wall of platform boilerplate.

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 description gives pipeline context (consumes art-98-mica-casp-fit-diagnostic, feeds cry-05-agent-action-audit-trail-aggregator) and says ART/EMT cases are delegated elsewhere, which implies when to use it. However, it never states a direct 'use this instead of run_mica_casp_fit' rule or the trigger conditions for a case that is neither cleanly ART/EMT nor CASP.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_agent_insurability_evidenceAgent Insurability Evidence ScorerA
Read-onlyIdempotent
Inspect

Agent Insurability Evidence Scorer: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-307-claim-dispute-bundle-builder. Open at: https://ainumbers.co/chaingraph/art-306-agent-insurability-evidence-scorer.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: Scores an agent execution evidence bundle for underwriter-facing evidence completeness across four dimensions (determinism, replayability, oversight density, dispute history) using a version-pinned rubric selected by underwriter_profile: aiuc, aisure (Munich Re aiSure evidence-doc list), armilla... Outputs: composite, dims, incident_history_provided, insufficient_evidence, reputation_self_asserted, rubric_version, underwriter_profile. Output schema: call describe_tool("score_agent_insurability_evidence").

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: execution_claims, incident_history, receipts, reputation, underwriter_profile. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world behavior. The description adds meaningful operational context: compute mode distinctions (server vs. browser delegation), transient data processing with no storage or logging, and export of an AP2 artifact with execution_hash for provenance. These are useful details beyond the annotations, though mixed with generic platform boilerplate.

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?

The description is poorly front-loaded: the first several sentences cover compute-node semantics, a URL, and FV-status snapshots before reaching the actual purpose in the final paragraph. Much of the leading content duplicates the schema's compute parameter description, making the overall text longer than necessary.

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?

For a complex scoring tool with four policy_parameters sub-objects and no output schema, the description provides a solid amount of context: it names the four scoring dimensions, lists output fields (composite, dims, rubric_version, etc.), explains compute behavior, and notes downstream feeding into art-307-claim-dispute-bundle-builder. It stops short of explaining how the dimensions are scored, but the essential calling context is present.

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. The description adds semantic value by naming underwriter_profile options (aiuc, aisure, armilla) and clarifying rubric_version pinning, which is not fully conveyed by the schema's empty object for underwriter_profile. It also lists output fields despite no output schema, aiding interpretation.

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 core sentence in the summary states a specific verb and resource: 'Scores an agent execution evidence bundle for underwriter-facing evidence completeness across four dimensions ... using a version-pinned rubric selected by underwriter_profile.' This is clear, though it is buried after several paragraphs of compute-node boilerplate and does not explicitly differentiate from similar scoring or evidence-assembly siblings.

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 description implies usage through the underwriter_profile selection and notes 'Use synthetic or anonymised inputs only,' which is a useful constraint. However, it never states when to use this tool versus alternatives such as lint_aiuc1_control_evidence, assemble_aiuc1_evidence_pack, or score_mcp_readiness, leaving the agent to infer the right context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_aml_typologiesAMLA Transaction-Typology Risk ScorerA
Read-onlyIdempotent
Inspect

AMLA Transaction-Typology Risk Scorer: OpenChainGraph compute node (risk_control). Regulatory deadline: 2027-07-01 (EU AMLR full application July 2027; AMLA full operations 2028). 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. Output feeds: cry-01-zk-compliance-proof-generator, art-11-vop-batch-match-rate-analyser, ptg-01-ap2-prompt-template-generator, mms-03-app-fraud-graph, ml-01-isolation-forest. Open at: https://ainumbers.co/chaingraph/art-10-amla-transaction-typology-risk-scorer.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: Scores a synthetic transaction graph against AML typologies and FATF Travel Rule predicates; exports an AML risk determination per account/cluster. Outputs: average_score, compliance_flags, high_risk_count, max_score, medium_risk_count, overall_risk, top_risk_accounts, transaction_count, travel_rule_violations, typology_hit_counts. Output schema: call describe_tool("score_aml_typologies").

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: transactions. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, but the description adds substantial behavior beyond them: deterministic compute, server-side execution on Cloudflare Workers vs browser delegation, transient processing with no storage or logging, and an exported AP2 artifact carrying execution_hash for chain provenance. It also enumerates the output fields (overall_risk, top_risk_accounts, travel_rule_violations, typology_hit_counts) and points to describe_tool for the schema. No contradictions with annotations.

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?

The definition is heavily bloated with regulatory deadlines, a marketing URL, and a 64-character FV-status receipt hash that an agent cannot act on. The actual purpose is deferred to a final 'Summary:' line rather than front-loaded. Several sentences restate the same compute-mode behavior twice.

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 enumerates the output fields and defers full output structure to describe_tool, which is appropriate given no output schema. Annotations cover the safety profile, and the synthetic-input constraint plus provenance chaining are stated. Minor gap: the typology/FATF predicate set and the meaning of overall_risk bands are not characterized, so an agent knows what it returns but not how to interpret the risk levels.

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 description coverage is 100%, so the baseline is 3 and the schema already documents compute modes and parent_hashes/parent_tool_ids pairing. The description adds modestly beyond that by tying parent_hashes to chain provenance via execution_hash and by confirming that policy_parameters are computed server-side for gpu:false kernels and that unknown keys are refused. It does not explain scenario, structuring_threshold, velocity_window_hours, or round_trip_window_hours semantics, which remain opaque.

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 summary sentence states a specific verb and resource: 'Scores a synthetic transaction graph against AML typologies and FATF Travel Rule predicates; exports an AML risk determination per account/cluster.' That is concrete enough to distinguish it from siblings like detect_transaction_anomalies or simulate_app_fraud_graph, though the description never names those alternatives directly. The actual purpose is buried at the end behind title/regulatory/compute boilerplate, which weakens first-glance clarity.

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 one real usage directive is 'Use synthetic or anonymised inputs only,' which is a meaningful constraint. The compute-mode guidance ('auto' vs 'browser', gpu:true always delegates) is invocation mechanics rather than when-to-use guidance. There is no statement of when to pick this over sibling AML/typology scorers, and no stated prerequisites or exclusions beyond the synthetic-data rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_cash_forecast_accuracyCash Forecast Accuracy ScoringA
Read-onlyIdempotent
Inspect

Cash Forecast Accuracy Scoring: OpenChainGraph compute node (analytics_mandate). 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-258-parse-camt053-reconciliation, art-261-test-hedge-effectiveness. Open at: https://ainumbers.co/chaingraph/art-263-score-cash-forecast-accuracy.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: Scores treasury cash forecast accuracy per AFP Cash Forecasting Survey 2024 benchmarks. Outputs: afp_benchmark_tiers, by_horizon, not_legal_advice, overall_accuracy_tier, overall_bias_pct, overall_mape_pct, persistent_sign_periods, pii_note, regulatory_basis, skipped_zero_actual, table_source, table_version, timing_bias_detected, total_observations. Output schema: call describe_tool("score_cash_forecast_accuracy").

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: forecasts. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely new behavior: deterministic execution, server-side vs browser delegation, transient processing with no storage or logging, and emission of an AP2 artifact carrying execution_hash for chain provenance. It omits any note on rate limits, failure modes, or what happens when the upstream artifacts are absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded but the opening repeats itself ('Cash Forecast Accuracy Scoring: OpenChainGraph compute node... Deterministic OpenChainGraph compute node'), and a long FV-status hash URL plus a full output-field enumeration pad the body. Usable, but several sentences are boilerplate present on every sibling node.

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?

For a 4-param chained compute node with no output schema, the description covers purpose, execution model, data-handling guarantees, upstream artifact dependencies, and an explicit list of returned fields with a pointer to describe_tool. The gap is the input contract for `forecasts`, which is neither shown nor linked.

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 baseline is 3 and the description largely restates the compute-mode semantics already in the `compute` property text. It adds nothing about the shape of `policy_parameters.forecasts` (an untyped array), which is the one real ambiguity in the schema.

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 ('Scores treasury cash forecast accuracy') and the governing benchmark (AFP Cash Forecasting Survey 2024), which is far more than the name restated. It does not, however, distinguish itself from the near-identical sibling compute_forecast_accuracy_score, leaving an agent unable to tell which to call.

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 an input constraint ('Use synthetic or anonymised inputs only') and names the upstream artifacts it consumes, which implies a chain context. But there is no explicit when-to-use/when-not versus the sibling forecast-accuracy tool or the alternative chain/export tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_clause_coverageClause Coverage ScorerC
Read-onlyIdempotent
Inspect

Clause Coverage Scorer: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-410-clause-coverage-scorer.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive/closed-world, and the description adds real context beyond them: transient processing with no storage or logging, a requirement for synthetic or anonymised inputs, server- vs browser-side execution semantics, and an AP2 artifact carrying execution_hash. It omits any description of the returned payload's shape, which is the remaining gap.

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?

Significant waste: an immediate near-duplicate ('Clause Coverage Scorer: OpenChainGraph compute node' followed by 'Deterministic OpenChainGraph compute node'), a long FV-status URL and hash, and privacy boilerplate crowd out the actual purpose. The essential 'what does this compute' sentence is absent entirely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compute node with a free-form nested policy_parameters object, no output schema, and no explanation of the decision function's inputs or outputs, the description is not sufficient. It explains infrastructure and provenance but not what the tool calculates or what an agent should put in policy_parameters.

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 compute and parent_hashes/parent_tool_ids semantics are already documented; the description only restates the compute-mode behavior. The important nested parameter, policy_parameters, is deferred to 'the tool's manifest for field names' in both schema and description, adding no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as an "OpenChainGraph compute node (compliance_mandate)" and repeats its own title, but never states what a 'clause' is or what 'coverage' is being scored. It leaves that to the tool's external HTML manifest, so an agent reading only this cannot tell what the tool computes, beyond a hint from the 'compliance_mandate' tag.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this over the many sibling scoring/compute tools (e.g. score_taxonomy_alignment, prevalidation_readiness_scorer). The only conditional logic given is about compute mode routing, which is a parameter concern rather than tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_credit_default_riskCredit Default Risk ScorerA
Read-onlyIdempotent
Inspect

Credit Default Risk Scorer: OpenChainGraph compute node (credit_assessment). Regulatory deadline: 2027-12-02 (EU AI Act Annex III Part 5(b) credit-scoring high-risk obligations — 2 December 2027, per the Digital Omnibus amendments (June 2026); EBA GL/2017/16 IRB model performance). 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-05-eu-ai-act-credit-scoring-conformity. Output feeds: sim-03-basel-rwa-scenario-modeler, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/ml-02-credit-default-risk-scorer.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: Logistic regression PD scorer on synthetic loan portfolio with Basel 3.1 F-IRB / A-IRB / SA RWA comparison (BCBS d424 formula, Φ⁻¹ Horner rational approximation). Outputs: auc_roc, compliance_flags, expected_loss_gbp, gini_coefficient, high_pd_loans, irb_capital_gbp, irb_rwa_gbp, irb_vs_sa_saving, ks_statistic, n_defaults_observed, n_loans_scored, portfolio_pd, sa_capital_gbp, sa_rwa_gbp, total_ead_gbp, verdict. Output schema: call describe_tool("score_credit_default_risk").

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: asset_class, lgd, maturity_yrs, n_loans, pd_threshold, preset, seed, target_default_rate. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent safety, yet the description adds real substance beyond them: compute:"auto" vs "browser" execution semantics, that gpu:true nodes always delegate, transient non-retained processing, and an AP2 artifact export with execution_hash. The deadline and FV-status boilerplate is less behavioral, but the compute-binding disclosure alone exceeds the annotation bar.

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?

The description is heavily bloated: the EU AI Act deadline with Digital Omnibus citation, EBA GL/2017/16 reference, a FV-status hash URL, and a 16-item output enumeration. The actual function statement appears only after this preamble, so front-loading is poor and much of the text does not help tool selection.

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?

With no output schema, listing the returned fields (auc_roc, irb_rwa_gbp, verdict, etc.) is valuable compensation, and upstream/downstream artifact IDs plus compute modes give the agent enough to invoke it correctly. The remaining gap is the absence of any contrast with competing credit/RWA scoring tools.

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 compute, parent_hashes, parent_tool_ids, and the policy_parameters required keys. The description restates the compute auto/browser behavior already present in the schema and adds little about policy_parameters values. Baseline 3 is appropriate.

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 summary states a specific method and resource: "Logistic regression PD scorer on synthetic loan portfolio with Basel 3.1 F-IRB / A-IRB / SA RWA comparison". That is a clear verb-plus-resource picture, but it is buried after a regulatory-deadline preamble and a compute-mode explanation. It never names or contrasts with close siblings such as score_credit_model_quantized or compute_rwa_scenarios.

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?

"Use synthetic or anonymised inputs only" is an explicit constraint, and the upstream/downstream artifact IDs (art-05, sim-03, ptg-01) imply where it belongs in a chain. However, there is no explicit statement of when to pick this over the similarly named credit/RWA siblings, which is the main thing an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_credit_model_quantizedQuantized Credit Model ScorerB
Read-onlyIdempotent
Inspect

Quantized Credit Model Scorer: OpenChainGraph compute node (credit_assessment). 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. Open at: https://ainumbers.co/chaingraph/art-348-score-credit-model-quantized.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: Runs a fixed, int8-quantized logistic-regression-class credit-decisioning model as a pure integer inference kernel and returns the score it produced from the supplied normalized inputs. Outputs: accumulator_fixp, bits, decision, n_features, quant_method, threshold_fixp. Output schema: call describe_tool("score_credit_model_quantized").

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: normalized_fixp16. Unknown keys are refused.

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds material context beyond them: deterministic pure-integer execution, GPU nodes always delegating to the browser, transient non-stored processing, and an AP2 artifact carrying execution_hash for provenance. It does not contradict the annotations; the only weakness is that output field meanings are not explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose — the most important sentence — is buried near the end after boilerplate about compute binding, a spec URL, and an offline FV-status receipt. There is also redundancy ('OpenChainGraph compute node' appears twice), and the description is larger than needed, though most sentences do carry some information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-complexity quantized scoring node, the description adequately covers execution mode, privacy posture, and provenance chaining, and it points to describe_tool for the output schema. However, it lists output names (accumulator_fixp, decision, bits) without explaining their meaning, and the opaque normalized_fixp16 array format is left entirely implicit, so an agent still lacks key details for correct invocation.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters. The description echoes the server-side vs browser computation but adds no detail on the required normalized_fixp16 vector's length or format, so it does not compensate for that practical gap.

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 sentence states a specific verb and resource: it runs a fixed int8-quantized logistic-regression-class credit-decisioning model as an integer inference kernel and returns the score. That is clear enough to act on, but there is no differentiation from the sibling score_credit_default_risk, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes (auto/server/browser) and warns 'Use synthetic or anonymised inputs only', but it never says when to choose this tool over score_credit_default_risk or other credit scorers. The guidance present is about execution mechanics, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_eudr_country_riskEUDR Country Benchmark Risk ScorerB
Read-onlyIdempotent
Inspect

EUDR Country Benchmark Risk Scorer: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-169-eudr-supply-chain-traceability-linker. Open at: https://ainumbers.co/chaingraph/art-168-eudr-country-benchmark-risk-scorer.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: Score country-of-production against the EUDR benchmark risk classification (low/standard/high per Art. Outputs: benchmark_risk, commission_delegated_act_note, country_code, due_diligence_level, inspection_rate_pct. Output schema: call describe_tool("score_eudr_country_risk").

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". Unknown keys are refused.

TDQS

B3.2/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 the description adds genuinely useful context beyond that: auto vs server vs browser execution, gpu:true always delegating, transient non-retained input handling, and an AP2 artifact with execution_hash for provenance plus an offline-verifiable FV receipt. What is missing is any statement of what the risk score actually means operationally (how due_diligence_level or inspection_rate_pct are derived).

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?

The description is dominated by node-level boilerplate (Cloudflare Workers, gpu delegation, artifact export, a full FV-status hash URL) before the reader reaches what the tool does. The purpose sentence is fragmented and truncated, and the repeated "Deterministic OpenChainGraph compute node" phrasing earns no space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It does list the outputs (benchmark_risk, due_diligence_level, inspection_rate_pct, etc.), which compensates for the absence of an output schema. But for a domain scoring tool with a nested policy_parameters object, the description never explains the input needed to produce a score or how the EUDR benchmark classification maps to a due-diligence level.

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 baseline is 3; the description's compute-mode text merely restates the compute enum already documented in the schema. Critically it says nothing about the one domain parameter that matters, policy_parameters.country_code, whose schema entry is an empty object — no format (ISO alpha-2?) or allowed values are given anywhere.

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?

It names a specific verb and resource: "Score country-of-production against the EUDR benchmark risk classification (low/standard/high per Art." That is enough to distinguish it from siblings like classify_eudr_commodity_scope or validate_eudr_due_diligence_statement, and it notes the downstream linker artifact. However the key sentence is truncated mid-clause ("per Art."), and the statement is buried after several lines of compute-node boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to pick this tool over the many EUDR siblings (run_eudr_readiness_fit, classify_eudr_commodity_scope, validate_eudr_due_diligence_statement). The only routing signal is "Output feeds: art-169-eudr-supply-chain-traceability-linker", which describes chaining, not selection. The compute-mode paragraph guides the compute parameter, not tool choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_fuzzy_match_calibrationFuzzy-Match Calibration ScorerC
Read-onlyIdempotent
Inspect

Fuzzy-Match Calibration Scorer: OpenChainGraph compute node (model_governance). 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-90-sanctions-screening-fit-diagnostic. Output feeds: art-97-sanctions-screening-quality-scorer, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-93-fuzzy-match-calibration-scorer.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses that inputs are processed transiently and not stored, logged or retained, that only synthetic or anonymised inputs are permitted, and that an AP2 artifact with execution_hash is exported for chain provenance. Those are real operational traits an agent could not derive from annotations alone. It stops short of describing determinism guarantees or failure modes.

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?

Sentences are front-loaded with infrastructure boilerplate ('Deterministic OpenChainGraph compute node', duplicating the title) and the trailing FV-status receipt hash and URL are pure noise for tool selection. The one sentence that carries behavioural value (synthetic inputs / no retention) is buried mid-paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description never says what the scorer returns (thresholds? calibration curve? fit score?). Combined with a nested policy_parameters object whose fields are undocumented and a completely unresolved statement of the decision function, an agent cannot judge whether this tool fits without opening the external manifest link.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and the policy_parameters envelope — baseline 3. The description adds nothing to compute beyond what the enum description says, and for policy_parameters it explicitly defers field names to 'the tool's manifest', which the caller does not have here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the name and labels itself an 'OpenChainGraph compute node (model_governance)' but never states what the calibration scoring actually computes — no verb, no target of scoring, no output meaning. The only substantive signal is indirect lineage (consumes art-90-sanctions-screening-fit-diagnostic, feeds art-97 quality scorer), which implies sanctions fuzzy-match tuning but requires the agent to infer it. Siblings like score_payee_name_match and score_sanctions_screening_quality are far more self-describing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Guidance only covers compute modes (auto/server/browser) and gpu delegation — an execution-routing detail, not when to pick this tool over run_sanctions_screening_fit or score_sanctions_screening_quality. There is no statement of prerequisite inputs, when the tool is inappropriate, or how it differs from adjacent scorers in the sanctions family.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_mcp_readinessMCP Developer Readiness ScorecardA
Read-onlyIdempotent
Inspect

Compute a composite MCP server ship-readiness score across tool definitions, server.json, OAuth, transport, tool poisoning, and spec compliance. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("score_mcp_readiness").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds valuable beyond-annotation context: it renders an interactive AINumbers widget, applies inputs via the AIN Bridge, runs client-side, uses zero PII and zero network, and points to describe_tool for the output schema.

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?

Three sentences, front-loaded with the purpose, followed by the execution model and output schema pointer. No filler or redundant restatement of annotations.

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?

Given the complexity, annotations, and lack of a formal output_schema, the description is largely complete: it names the scoring domains, explains client-side execution, and tells the agent how to retrieve the output schema. The main residual gap is sibling routing, but that is more a usage-guidance issue than missing contextual information.

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?

The single optional inputs object has 100% schema description coverage, so the schema already explains it as a map of tool input element IDs to values. The description only echoes the AIN Bridge prefill behavior and adds no additional parameter semantics beyond the schema.

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 (compute), resource (composite MCP server ship-readiness score), and six assessment domains (tool definitions, server.json, OAuth, transport, tool poisoning, spec compliance). It is clear but does not distinguish itself from the near-identical sibling score_mcp_server_readiness or other MCP readiness diagnostics.

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 stated scope implies it is used for MCP server ship-readiness scoring, but there is no explicit when-to-use, when-not-to-use, or named alternative. This matters because the sibling list includes score_mcp_server_readiness, run_mcp_deployability_diagnostic, and lint_mcp_server_conformance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_mcp_server_readinessMCP Developer Readiness ScorecardA
Read-onlyIdempotent
Inspect

MCP Developer Readiness Scorecard: OpenChainGraph compute node (compliance_control). 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-17-ap2-mcp-policy-validator, art-23-visa-trusted-agent-protocol-inspector, art-24-mastercard-agentic-token-builder, art-25-a2a-agent-card-validator, art-26-x402-payload-decoder-flow-simulator, art-27-agentic-readiness-diagnostic, art-28-mcp-server-deployability-diagnostic. Open at: https://ainumbers.co/chaingraph/art-18-mcp-developer-readiness-scorecard.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: Rolls up caller-supplied yes/partial/no answers across six MCP ship-readiness sections (tool definitions, server.json/registry, OAuth 2.1, transport security, tool-poisoning hygiene, spec-revision compliance) into an overall 0-100 score and a prioritized gap list. Outputs: answers_used, gaps, gaps_count, note, overall, sections, verdict. Output schema: call describe_tool("score_mcp_server_readiness").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, the description discloses compute modes (auto/server/browser, gpu handling), transient processing with no storage, synthetic input requirement, AP2 artifact export with execution_hash, upstream artifact consumption, and an FV-status receipt. This is rich behavioral context that substantially aids correct invocation.

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?

The description is excessively long and buries the core purpose near the end ('Summary: Rolls up caller-supplied yes/partial/no answers...'). Early sentences repeat the title and technical metadata, making it poorly front-loaded. Much of the artifact ID, URL, and FV-status detail could be trimmed or moved to structured fields.

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?

Given no output schema, the description lists outputs (answers_used, gaps, gaps_count, note, overall, sections, verdict) and explains inputs, compute modes, data handling, and provenance. It is largely complete for calling the tool, though it omits differentiation from the sibling `score_mcp_readiness`.

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 schema already documents all four parameters. The description adds meaning beyond schema by clarifying that `policy_parameters.answers` should contain caller-supplied yes/partial/no responses across six named sections, which helps an agent populate the nested object correctly.

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 description states a specific verb and resource: rolls up yes/partial/no answers across six MCP ship-readiness sections into an overall 0-100 score and prioritized gap list. However, it does not distinguish this tool from the sibling `score_mcp_readiness` or other readiness diagnostics, so an agent cannot easily tell them apart without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives input handling guidance ('Use synthetic or anonymised inputs only') but provides no explicit when-to-use versus alternatives. There is no mention of `score_mcp_readiness` or other readiness tools, leaving selection ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_mt_mx_translation_fidelityMT103 to MX Translation Fidelity ScorerB
Read-onlyIdempotent
Inspect

MT103 to MX Translation Fidelity Scorer: OpenChainGraph compute node (compliance_mandate). 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-244-gpi-tracker-lifecycle-simulator. Open at: https://ainumbers.co/chaingraph/art-245-mt-mx-translation-fidelity-scorer.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: Scores ISO 15022 MT103 to ISO 20022 pacs.008 translation fidelity for CBPR+ migration. Outputs: cbpr_plus_deadline, charge_bearer_map, compliant, error_count, fidelity_score, fidelity_tier, issues, mapping_results, pii_note, regulatory_basis, table_source, table_version, truncation_risks. Output schema: call describe_tool("score_mt_mx_translation_fidelity").

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: mt_f20, mt_f23b, mt_f32a, mt_f50, mt_f52a, mt_f57a, mt_f59, mt_f70, mt_f71a, mx_cdtr_agt, mx_cdtr_nm, mx_chrg_br, mx_dbtr_agt, mx_dbtr_nm, mx_rmt_ustrd, mx_uetr. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the bar is lower; the description nonetheless adds real context: deterministic computation, server-side vs browser delegation rules, transient processing with no storage or logging, and an exported AP2 artifact carrying execution_hash. That said, these are shared node boilerplate rather than tool-specific behaviour, and failure modes or limits are absent.

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?

The front-load is poor: 'MT103 to MX Translation Fidelity Scorer: OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.' is redundant title repetition, followed by compute-mode boilerplate, a URL, and an FV-status hash before the actual function is described. Roughly two-thirds of the text does not help an agent decide or call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists output field names (fidelity_score, fidelity_tier, issues, mapping_results, etc.) and delegates the output schema to describe_tool, which is enough to know the return shape. But for a nested 16-field decision function, it never says how fidelity_tier or compliant are derived, nor what truncation_risks or charge_bearer_map depend on, leaving the core computation opaque.

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 compute, parent_hashes, parent_tool_ids and the required policy_parameters keys. The description only restates the compute:'auto'/'browser' semantics already in the schema and never explains what the 16 SWIFT field keys (mt_f20, mt_f32a, mx_uetr, etc.) are meant to carry — baseline 3 is appropriate.

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 real purpose appears only in the 'Summary:' sentence: 'Scores ISO 15022 MT103 to ISO 20022 pacs.008 translation fidelity for CBPR+ migration' — a specific verb and resource. However, the opening line merely restates the title and node type, and nothing distinguishes it from near-neighbours like validate_pacs008_party_completeness, lint_cbpr_structured_address or check_mt101_coexistence_readiness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to choose this scorer over the CBPR+/pacs.008 validation siblings, nor any prerequisite or exclusion beyond 'Use synthetic or anonymised inputs only.' The mention of an upstream artifact (art-244-gpi-tracker-lifecycle-simulator) hints at a chaining context but is not framed as usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_nis2_incident_significanceNIS2 Incident Significance Scorer (Art. 23 Reporting Threshold)B
Read-onlyIdempotent
Inspect

NIS2 Incident Significance Scorer (Art. 23 Reporting Threshold): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-145-nis2-ict-supply-chain-diligence-scorer. Open at: https://ainumbers.co/chaingraph/art-144-nis2-incident-significance-scorer.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: Score whether an operational event meets the NIS2 Art. Outputs: early_warning_deadline_hours, estimated_affected_users, estimated_financial_loss_eur, final_report_deadline_days, notification_deadline_hours, recipients, reporting_required, service_disruption_hours, significance_verdict, triggering_factors. Output schema: call describe_tool("score_nis2_incident_significance").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses deterministic behavior, server-versus-browser compute delegation, transient processing with no storage or logging, and export of an AP2 artifact with execution_hash. These are meaningful operational details. The remaining FV-status hash and URL text is noisy, and the summary sentence is truncated, but the behavioral disclosure is substantial and does not contradict the read-only annotations.

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?

The description is front-loaded with the tool purpose, but it is bloated with boilerplate about OpenChainGraph compute nodes, an FV-status hash, a URL, and a truncated summary sentence. Several sentences do not earn their place for tool selection or invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists the output fields, which helps because there is no output schema, and it covers compute modes and data handling. However, it leaves the nested policy_parameters unexplained and does not describe the decision logic or significance thresholds, which are important for a scoring tool with nested input data.

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 the four top-level parameters. The description echoes the compute-mode behavior but adds little explanation for parent_hashes, parent_tool_ids, or the nested policy_parameters fields. Baseline 3 is appropriate.

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 description states a specific verb and resource: score whether an operational event meets the NIS2 Art. 23 reporting threshold. The tool name and title reinforce this, and the listed outputs confirm the scoring purpose. It does not explicitly distinguish itself from nearby NIS2 siblings such as score_nis2_supply_chain_diligence, so it falls short of a 5.

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 implied by the NIS2 Art. 23 incident-scoring context and the note that output feeds the supply-chain diligence scorer. The description gives execution-mode guidance and a synthetic-input constraint, but it does not explicitly say when to use this tool versus sibling NIS2 tools or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_nis2_supply_chain_diligenceNIS2 ICT Supply-Chain Diligence Scorer (Art. 21(2)(d) / ENISA)A
Read-onlyIdempotent
Inspect

NIS2 ICT Supply-Chain Diligence Scorer (Art. 21(2)(d) / ENISA): OpenChainGraph compute node (compliance_mandate). 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-144-nis2-incident-significance-scorer. Output feeds: art-146-nis2-governance-readiness-checker. Open at: https://ainumbers.co/chaingraph/art-145-nis2-ict-supply-chain-diligence-scorer.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: Score ICT vendor due-diligence posture against NIS2 Art. Outputs: active_risk_flags, enisa_control_coverage_pct, remediation_checklist, risk_score, risk_tier, vendor_incident_history_12mo. Output schema: call describe_tool("score_nis2_supply_chain_diligence").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the bar is lower; the description still adds real value by stating inputs are processed transiently, nothing is logged or retained, and that synthetic/anonymised inputs are required, plus the AP2 execution_hash export 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?

The stated purpose is buried behind repeated boilerplate ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.'), a long hash URL, and an FV-status disclaimer, and the one-line summary is cut off mid-sentence. Much of the text does not earn 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?

There is no output schema, but the description enumerates the returned fields (risk_score, risk_tier, enisa_control_coverage_pct, remediation_checklist, etc.) and points to describe_tool for the full schema, which is adequate for a deterministic scorer. The undocumented nested policy_parameters keys are the remaining gap.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters. The description's compute-mode sentence restates the schema, and it adds nothing about the nested policy_parameters keys (all undocumented in both schema and description), so baseline 3 is right.

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 description names a specific verb+resource ('Score ICT vendor due-diligence posture against NIS2 Art. 21(2)(d)') and the artifacts it consumes/feeds, so it is distinguishable from the sibling score_nis2_incident_significance. The purpose statement is however truncated ('against NIS2 Art.') and buried after a wall of runtime boilerplate.

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?

It explains compute-mode selection ('auto' vs 'server' vs 'browser', GPU delegation) and the upstream/downstream chain (consumes art-144, feeds art-146), which is implied usage context. But there is no explicit 'use this instead of X' guidance against the many other NIS2 siblings such as check_nis2_art21_measures or run_dora_readiness_diagnostic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_partner_stablecoin_readinessArc Partner Stablecoin Onboarding ConformanceA
Read-onlyIdempotent
Inspect

Arc Partner Stablecoin Onboarding Conformance: OpenChainGraph compute node (compliance_mandate). 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-42-arc-fit-diagnostic. Output feeds: art-45-arc-xreserve-linter. Open at: https://ainumbers.co/chaingraph/art-110-arc-partner-stablecoin-onboarding.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: Score a non-USD stablecoin issuer readiness to join Circle Partner Stablecoins on Arc against technical/operational, reserve-management, and risk-management standards. Outputs: ccy, composite_grade, eligible, gaps, grade, home_regime, reserve_score, risk_score, tech_score, verdict. Output schema: call describe_tool("score_partner_stablecoin_readiness").

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: issuer_profile. Unknown keys are refused.

TDQS

A3.5/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), but the description adds meaningful traits: deterministic computation, server-vs-browser delegation semantics, transient processing with no storage or logging, the 'synthetic or anonymised inputs only' restriction, and AP2 artifact export with execution_hash for provenance. These are genuine operational constraints an agent would not learn from the annotations. Minor gap: no indication of latency, quotas, or kernel-availability failures.

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?

The most important content — what the tool actually scores and what it returns — is the last sentence, behind several sentences of graph-plumbing boilerplate, a URL, and a hash receipt. Multiple sentences (FV-status snapshot, 'open at' URL) do not help an agent decide or invoke. It is not concise and it is back-loaded.

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?

For a nested-parameter scoring node with no output schema, the description supplies the output field list (ccy, composite_grade, eligible, gaps, grade, home_regime, reserve_score, risk_score, tech_score, verdict), the input homogeneity rule, the provenance chaining in and out, and the compute-mode contract. What's missing is what shape issuer_profile expects and what the gap semantics or verdict thresholds are, which for a decision function is a notable omission.

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 explains compute modes, parent_hashes/parent_tool_ids pairing and the policy_parameters container with its required issuer_profile. The description restates the compute-mode behavior and chaining, adding no syntax or format detail beyond the schema. Baseline 3 is appropriate; the description does note that unknown keys are refused only indirectly.

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 Summary sentence names a specific resource and action: scoring a non-USD stablecoin issuer's readiness to join Circle Partner Stablecoins on Arc against technical/operational, reserve-management and risk-management standards, and it enumerates the returned fields. That is well beyond a restated name. It loses a point because the purpose is buried at the end of a long boilerplate preamble, and it never distinguishes itself from arc-related siblings such as run_arc_fit_diagnostic or route_partner_stablecoin_jurisdiction.

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 description gives chaining context (consumes art-42-arc-fit-diagnostic, feeds art-45-arc-xreserve-linter) and the synthetic-inputs-only constraint, which implies workflow placement. However, it states no explicit when-to-use or when-not-to-use condition and never names an alternative scoring tool, so the agent must infer selection from sibling names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_payee_name_matchPayee Name-Match Score (VoP/CoP)B
Read-onlyIdempotent
Inspect

Payee Name-Match Score (VoP/CoP): OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-376-score-payee-name-match.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: Deterministic, versioned single-pair payee name-matching score for Verification-of-Payee / Confirmation-of-Payee evidence. Outputs: algorithm_version, close_match_threshold, compliance_flags, entity_suffix_stripped, match_band, match_threshold, normalized_account_name, normalized_reference_name, score, transliteration_in_scope. Output schema: call describe_tool("score_payee_name_match").

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: close_match_threshold, match_threshold. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive and closed-world traits, yet the description adds real context: deterministic versioned computation, server-side execution on Cloudflare Workers with browser delegation, transient processing with no storage or logging, and an AP2 artifact carrying execution_hash. The 'synthetic or anonymised inputs only' constraint is a valuable disclosure beyond the annotations, though compute-mode text largely duplicates the schema field.

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?

The definition is long and back-loads the actual purpose into a closing 'Summary:' clause after compute-binding, privacy, provenance and URL/receipt material. Several sentences (the FV-status snapshot URL, the 'Open at:' link) serve provenance rather than tool selection and crowd out front-loaded guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the return fields (score, match_band, thresholds, compliance_flags, normalized names) and covers provenance and privacy handling. It still leaves gaps an agent needs before calling: the score's scale and band semantics, and the expected input formats for the untyped policy parameters.

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 compute and parent_hash parameters are already documented and the description correctly does not repeat them at length. However, the policy_parameters sub-properties carry no types or descriptions, and the description does not compensate by clarifying expected formats or units for account_name/reference_name or the thresholds.

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 summary sentence names a specific verb and resource: 'Deterministic, versioned single-pair payee name-matching score for Verification-of-Payee / Confirmation-of-Payee evidence.' The qualifier 'single-pair' implicitly distinguishes it from batch-style VOP tools, but the purpose is buried after several sentences of infrastructure boilerplate and no sibling (e.g. simulate_vop_matching, run_vop_readiness_diagnostic) is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over alternatives such as simulate_vop_matching or score_fuzzy_match_calibration. The only conditional guidance concerns the compute mode parameter, which is execution mechanics rather than task-level routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_sanctions_screening_qualitySanctions Screening-Program Quality ScorerA
Read-onlyIdempotent
Inspect

Sanctions Screening-Program Quality Scorer: OpenChainGraph compute node (model_governance). 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-92-screening-list-coverage-checker, art-93-fuzzy-match-calibration-scorer. Output feeds: cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-97-sanctions-screening-quality-scorer.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: Wolfsberg-aligned screening-program quality scorecard: list coverage + match calibration + alert tuning + escalation workflow + model validation -> composite program-conformance grade and improvement priorities. Outputs: component_scores, component_weights, composite_pct, improvement_priorities, note, program_grade, reference_version, wolfsberg_note. Output schema: call describe_tool("score_sanctions_screening_quality").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnlyHint, idempotentHint, and destructiveHint=false, the description adds meaningful context beyond structured fields: data is processed transiently and not stored or logged, compute may run server-side or delegate to the browser depending on compute mode and gpu status, and the tool exports an AP2 artifact with execution_hash. It also identifies upstream and downstream chain dependencies. It stops short of describing error behavior or return timing, but the behavioral disclosure is substantial.

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?

The description is not front-loaded: it opens with a title restatement and generic 'OpenChainGraph compute node' boilerplate, repeats the compute-node phrase, and only reaches the actual scoring purpose near the end. It also includes a full URL and a long FV-status hash that do not help an agent select or invoke the tool. Some sentences earn their place, but several do not.

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?

There is no output schema, but the description compensates by listing the returned fields: component_scores, component_weights, composite_pct, improvement_priorities, note, program_grade, reference_version, and wolfsberg_note. It also covers compute behavior, privacy, chain provenance, and upstream/downstream artifacts. For a complex compute node this is fairly complete, though the nested policy_parameters payload remains opaque beyond the schema.

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 all four parameters are already documented in the input schema. The description repeats the compute-mode semantics but adds no new meaning for parent_hashes, parent_tool_ids, or the nested policy_parameters object. Baseline 3 is appropriate when the schema carries the parameter documentation.

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 description eventually states a specific purpose: a Wolfsberg-aligned screening-program quality scorecard combining list coverage, match calibration, alert tuning, escalation workflow, and model validation into a composite grade. It also differentiates itself by naming the upstream coverage and calibration artifacts it consumes. However, the actionable purpose is buried after generic compute-node boilerplate, so the agent must read to the end to understand what is being scored.

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 description implies usage by specifying upstream artifacts it consumes and the downstream audit-trail aggregator it feeds, which helps situate the tool in a chain. It also warns to use synthetic or anonymised inputs only. But it never explicitly says when to choose this composite scorer over siblings like check_screening_list_coverage, score_fuzzy_match_calibration, or run_sanctions_screening_fit, nor does it state exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_taxonomy_alignmentEU Taxonomy Alignment ScorerA
Read-onlyIdempotent
Inspect

EU Taxonomy Alignment Scorer: OpenChainGraph compute node (compliance_mandate). 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-68-carbon-compliance-fit-diagnostic. Output feeds: art-74-taxonomy-kpi-gar-aggregator, art-75-eugb-factsheet-validator, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-73-taxonomy-alignment-scorer.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: Scores an economic activity against an environmental objective: substantial-contribution technical-screening criteria + DNSH across the other five objectives + minimum safeguards -> aligned / eligible-but-not-aligned / not-eligible. Outputs: alignment_verdict, criterion_refs, dnsh_gaps, dnsh_results, is_aligned, nace_code, note, primary_objective, reference, safeguards_status, substantial_contribution_status. Output schema: call describe_tool("score_taxonomy_alignment").

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". Unknown keys are refused.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/closed-world annotations, it discloses what actually happens at runtime: default server-side execution on Cloudflare Workers, browser delegation URL behaviour, gpu:true always delegating, transient processing with no storage/logging/retention, and an AP2 export carrying execution_hash for chain provenance. It also explains the FV-status receipt is a snapshot verifiable offline, which is real behavioural context 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence that defines what the tool does is buried near the end, after a wall of compute-binding boilerplate, a long FV-status URL, and artifact IDs. Much of that content is genuinely useful, but it is not front-loaded and the receipt-path sentence is disproportionate to its decision value.

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?

There is no output schema, yet the description enumerates all twelve output fields (alignment_verdict, dnsh_gaps, is_aligned, safeguards_status, etc.) so an agent knows what it gets back. Input domain, chaining requirements, data-handling constraints, and a pointer to describe_tool cover the rest; only the detailed structure of the policy_parameters sub-objects is left unstated.

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 3 baseline is met by the schema alone. The description adds conceptual meaning on top: it maps policy_parameters keys to their regulatory content (dnsh = the other five objectives, substantial_contribution = technical screening, minimum_safeguards), and 'Consumes upstream artifacts from...' explains the purpose of parent_hashes/parent_tool_ids. The internal shape of each policy_parameters sub-key is still deferred to describe_tool, keeping it below 5.

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?

The description states a precise verb and resource and the exact regulatory computation: scoring an economic activity against an environmental objective via substantial-contribution technical screening, DNSH across the other five objectives, and minimum safeguards, yielding three named verdicts. The three-outcome taxonomy (aligned / eligible-but-not-aligned / not-eligible) makes it distinguishable from the aggregation sibling aggregate_taxonomy_kpi_gar without opening either 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?

It gives explicit preconditions and operating guidance: 'Use synthetic or anonymised inputs only', the compute:auto/server/browser selection rules including the gpu:true exception, and pipeline placement by naming the upstream artifact (art-68-carbon-compliance-fit-diagnostic) and downstream consumers. It stops short of naming an alternative sibling for the 'I just want the aggregate KPI' case, so use-vs-alternative routing 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.

score_tempo_validator_readinessTempo Validator Readiness ScorerC
Read-onlyIdempotent
Inspect

Tempo Validator Readiness Scorer: OpenChainGraph compute node (infrastructure_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-41-tempo-validator-readiness.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description goes meaningfully beyond them: inputs are processed transiently and not stored or logged, execution is deterministic, synthetic/anonymised inputs are required, and an AP2 artifact with execution_hash is exported for chain provenance. The browser-delegation branch for gpu:true nodes is also disclosed. It does not contradict any annotation.

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?

The opening is redundant ("OpenChainGraph compute node (infrastructure_mandate). Deterministic OpenChainGraph compute node.") and the payload is buried behind boilerplate followed by a documentation URL and an fv-status receipt hash. Useful facts about data handling and the AP2 export are present, but they are not front-loaded or separated from provenance noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 0 required parameters, a free-form nested `policy_parameters` object, and no output schema, the description carries the whole burden — yet it never names the fields to supply or describes what the score result looks like. An agent can tell it is safe and deterministic, but not what to send or what it will get back.

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 baseline is 3. The description restates the compute-mode semantics already present in the schema and says nothing new about parent_hashes/parent_tool_ids or the fields inside policy_parameters, explicitly deferring to "the tool's manifest" — a document the calling agent cannot open.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Beyond the tool's own name, the description never says what "Tempo validator readiness" means, what dimensions are scored, or what a result represents. What it does say is infrastructure plumbing ("OpenChainGraph compute node (infrastructure_mandate)") that would apply verbatim to hundreds of siblings, so it does not distinguish this tool from run_tempo_fit_diagnostic, validate_tempo_token_compliance, or compute_tempo_mainnet_fee_capacity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance offered concerns the `compute` parameter (auto/server/browser), which is execution plumbing rather than when-to-use-this-tool. There is no statement of what input situation calls for a validator readiness score, no prerequisites, and no routing to or away from the many adjacent tempo/readiness siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_je_rulesetJournal-Entry Ruleset ScreenA
Read-onlyIdempotent
Inspect

Journal-Entry Ruleset Screen: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-462-je-ruleset-screen.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: Runs a caller-declared, versioned journal-entry testing ruleset over a caller-declared JE extract and flags each entry that trips one or more rules: weekend/holiday postings, round-number entries, suspense/manual-account postings, post-close entries, and unusual user/account pairings. Outputs: active_rules, extract_population_hash, flagged_count, flagged_entries, missing_policy_inputs, rule_params_used, rule_trip_counts, ruleset_version, total_entries. Output schema: call describe_tool("screen_je_ruleset").

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: active_rules, entries, extract_population_hash, rule_params, rule_severity, ruleset_version. Unknown keys are refused.

TDQS

A4/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 the description adds genuinely non-obvious behavior: deterministic execution, transient processing with no storage or logging, a synthetic-input-only constraint, and an AP2 artifact export carrying execution_hash for provenance. It stops short of describing failure modes or what missing_policy_inputs implies operationally, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core summary is well front-loaded, but the text is padded with redundancy ('OpenChainGraph compute node (compliance_control). Deterministic OpenChainGraph compute node.'), a documentation URL, and a long FV-status hash receipt sentence that consumes space without helping an agent call the tool. Roughly a third of the text is boilerplate.

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?

With no output schema, the description compensates by listing the return fields (flagged_entries, rule_trip_counts, missing_policy_inputs, ruleset_version, extract_population_hash, etc.), and it points to describe_tool for the full schema. Combined with the compute-mode and data-retention notes, an agent has what it needs, though the required-vs-optional nature of policy_parameters sub-keys is only implied.

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 meaning the schema does not: it names the rule families those active_rules/rule_params values represent and ties entries/extract_population_hash to a JE extract population. The compute-mode paragraph reinforces the enum semantics rather than adding much, but the rule-family context is a real lift above the schema.

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?

The summary sentence gives a concrete verb and resource: it runs a caller-declared, versioned JE testing ruleset over a caller-declared JE extract and flags entries that trip rules. It enumerates the rule families (weekend/holiday postings, round numbers, suspense/manual accounts, post-close entries, unusual user/account pairings), which distinguishes it clearly from adjacent audit/recompute siblings like compute_gl_tieout_recompute or score_aml_typologies.

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 description gives real guidance on compute mode (auto/server/browser, gpu:true always delegates) and mandates synthetic or anonymised inputs, which is actionable. But it never states when an agent should pick this tool over sibling screening or recompute tools, nor what input population qualifies as a JE extract. Usage is implied by the summary rather than routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_onledger_transfer_batchOn-Ledger Transfer Batch ScreenA
Read-onlyIdempotent
Inspect

On-Ledger Transfer Batch Screen: OpenChainGraph compute node (compliance_mandate). 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-288-map-iso20022-to-evm-calldata. Open at: https://ainumbers.co/chaingraph/art-291-screen-onledger-transfer-batch.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: Batch-level pre-commit sanctions and purpose-code screen for a shared-ledger transfer batch, modeled on the shipped screen_tip20_transfer_batch pattern: per-transfer status, screening-list hits, purpose-code validity, a batch-clean verdict, and coverage gaps. Outputs: batch_clean, coverage_gaps, per_transfer, profile, transfer_count. Output schema: call describe_tool("screen_onledger_transfer_batch").

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: profile, screening_lists_meta, transfers. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotent/non-destructive, but the description adds substantive traits beyond them: server-side vs browser compute delegation and returned delegation URL, transient non-retention of inputs, AP2 artifact export with execution_hash for chain provenance, and the required upstream artifact (art-288-map-iso20022-to-evm-calldata). The FV-status receipt disclosure further clarifies provenance semantics, though much of this is generic platform boilerplate rather than tool-specific 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?

The most important content — what the tool screens and what it returns — appears only after the title restatement, a near-duplicate 'Deterministic OpenChainGraph compute node' sentence, compute-mode mechanics, retention policy, artifact export, and a long FV-status hash URL. Roughly half the text is repeated platform boilerplate that could be collapsed, so the definition is neither front-loaded nor waste-free.

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?

For a node-less screening tool with no output schema, the description names the returned fields (batch_clean, coverage_gaps, per_transfer, profile, transfer_count), the upstream artifact dependency, and the retention/execution model — enough for an agent to call it and interpret the result. The only shortfall is that the required inner shape of policy_parameters is left entirely to the schema.

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%, so all four parameters are already documented, and the schema's 'compute' description is in fact more detailed than the description's rendering of it. The description does not elaborate on policy_parameters' sub-keys (profile, transfers, screening_lists_meta) or the parent_hashes/parent_tool_ids ordering contract, so it stays at the baseline for a fully documented schema.

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 sentence 'Batch-level pre-commit sanctions and purpose-code screen for a shared-ledger transfer batch' gives a specific verb+resource and enumerates the outputs (per-transfer status, screening-list hits, purpose-code validity, batch-clean verdict, coverage gaps), which separates it from the simpler screen_tip20_transfer_batch sibling. However, that purpose statement is buried after several sentences of platform boilerplate, and the relation to the sibling is framed as 'modeled on' rather than as a scope distinction.

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 description implies usage (pre-commit screening of a batch before committing to a shared ledger) and adds the constraint 'Use synthetic or anonymised inputs only,' which is real guidance. It never explicitly says when to prefer this over sibling screeners such as screen_tip20_transfer_batch, check_screening_list_coverage, or check_purpose_code_requirement, so selection still requires inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_sanctions_privatePrivate-Input Sanctions ScreenA
Read-onlyIdempotent
Inspect

Private-Input Sanctions Screen: OpenChainGraph compute node (analytics_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-413-screen-sanctions-private.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: Screens a privately held party/transfer list against a pinned OFAC-SDN-style list version and emits a public verdict (screened, hit count, clean flag) without disclosing the party list. Outputs: clean, coverage, hit_count, list_version, not_legal_advice, pii_note, regulatory_basis, screened. Output schema: call describe_tool("screen_sanctions_private").

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: list_version. Unknown keys are refused.

TDQS

A3.5/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), and the description adds meaningful context on top: inputs are processed transiently and not stored/logged, execution is deterministic, server vs browser delegation depends on gpu flag, and an AP2 artifact with execution_hash is produced. The undisclosed party list is also explained as the central privacy property.

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?

The core purpose appears mid-text after near-duplicate boilerplate ('OpenChainGraph compute node (analytics_mandate). Deterministic OpenChainGraph compute node.'), plus a documentation URL and a 64-character FV-status path. Several sentences are template artifacts rather than tool-specific information, and front-loading of the actual function is poor.

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?

With no output schema, the description compensates by enumerating the returned fields (clean, coverage, hit_count, list_version, screened, plus disclaimer fields) and states the privacy and provenance guarantees. It is missing only sibling routing and any note on pricing/rate limits, which are minor for a read-only screening call.

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%, so the compute enum, policy_parameters.list_version requirement and parent_hashes/parent_tool_ids pairing are already documented. The description reinforces the compute modes and the chain-provenance intent of parent hashes but adds no format-level detail beyond the schema; 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?

The 'Summary:' sentence gives a specific verb+resource with scope: screens a private party/transfer list against a pinned OFAC-SDN-style list version and emits a public verdict. It never names or distinguishes the adjacent siblings (screen_onledger_transfer_batch, score_sanctions_screening_quality, run_sanctions_screening_fit), so differentiation is left to inference.

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?

'Use synthetic or anonymised inputs only' is real usage guidance, and the compute-mode sentence tells the agent how execution is routed. But there is no statement of when to prefer this over the on-ledger screening tool or the screening-quality scorer, and no preconditions beyond the input-privacy warning.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_tip20_transfer_batchTempo On-Chain AML & Travel Rule ScreenerA
Read-onlyIdempotent
Inspect

Tempo On-Chain AML & Travel Rule Screener: OpenChainGraph compute node (aml_rule). 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-37-tempo-stablecoin-issuance. Output feeds: art-39-tempo-zone-disclosure, art-10-amla-transaction-typology-risk-scorer. Open at: https://ainumbers.co/chaingraph/art-38-tempo-onchain-aml.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: Parses a batch of synthetic TIP-20 transfers (with memos), runs OFAC/SDN hit screening, checks FATF Travel Rule field completeness (originator/beneficiary name + VASP ID, threshold US$3,000), scores AML typologies (structuring $9k–$9.99k, missing identity, unusual tx), and emits SAR determination... Outputs: batch_verdict, escalate_count, flag_count, pass_count, results, sar_threshold_usd, total, tr_threshold_usd. Output schema: call describe_tool("screen_tip20_transfer_batch").

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: sar_threshold, tr_threshold, transfers. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds substantial behavior beyond that: server-vs-browser compute routing, that gpu:true nodes always delegate to a browser URL, that inputs are processed transiently with no storage or logging, the synthetic-input-only restriction, and that an AP2 artifact with execution_hash is exported for chain provenance. It also names the upstream artifact consumed and the two downstream artifacts, which is non-obvious chaining behavior not captured in annotations.

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?

The definition is badly front-loaded: the actual purpose appears only in the eighth line after OpenChainGraph node boilerplate, artifact IDs, and an FV-status URL/hash. It also ends mid-thought with an ellipsis ('emits SAR determination...') and appends an output-field list that is better served by describe_tool. Useful content exists but is padded and misordered.

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?

With no output schema, the description does enumerate return fields (batch_verdict, escalate_count, flag_count, pass_count, results, sar_threshold_usd, tr_threshold_usd, total) and covers compute routing, privacy, and artifact chaining. What it omits is sibling differentiation and any indication of failure modes or batch size limits, which matter for a screening tool.

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 description coverage is 100%, so the baseline is 3, but the description adds real meaning: it states the Travel Rule threshold of US$3,000 and the structuring typology band of $9k–$9.99k, which is exactly the semantics of tr_threshold and the sar logic in policy_parameters. It still does not describe the shape of the transfers array entries or explain the parent_hashes/parent_tool_ids pairing, leaving those to the schema.

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 'Summary:' sentence states a specific verb and resource chain: parses a batch of synthetic TIP-20 transfers with memos, runs OFAC/SDN hit screening, checks FATF Travel Rule completeness, scores AML typologies, and emits a SAR determination. However, this is buried after ~90 words of provenance boilerplate, and the description never distinguishes the tool from close siblings such as screen_onledger_transfer_batch, validate_tfr_travel_rule_batch, or score_aml_typologies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use / when-not-to-use guidance and no named alternative among the many sibling screening, typology-scoring, and travel-rule validation tools. An agent must infer from the summary alone whether this batch screener supersedes score_aml_typologies or validate_tfr_travel_rule_batch. The only explicit constraint is 'Use synthetic or anonymised inputs only,' which is a data-handling rule rather than tool selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdjwt_issueIssue a Selective Disclosure JWT (RFC 9901)AInspect

Issues a Selective Disclosure JWT (RFC 9901) from a claims object, marking selected top-level claim keys as selectively disclosable via salted-hash digests in the _sd array. Signed EdDSA over a fresh ephemeral did:key (generated per call, not reused). Pair with sdjwt_present to build a redacted presentation from the returned sd_jwt.

NameRequiredDescriptionDefault
claimsYesClaim key-value pairs to issue (required, at least one entry).
subjectNosub claim. Default: "subject-001".
selective_keysNoTop-level claim keys marked selectively disclosable. Keys not listed stay always-disclosed cleartext.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already specifying non-readonly, non-destructive, non-idempotent behavior, the description adds meaningful context: EdDSA signing and a fresh ephemeral did:key per call. It also discloses the _sd digest mechanism and names the returned sd_jwt, though it does not discuss authentication, failure modes, or rate limits.

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?

The description is three tight sentences that front-load the core action, then explain signing and selective disclosure, then point to the sibling workflow. Every sentence carries relevant information with no repetition or filler.

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 cryptographic issuance tool with full schema coverage and annotations covering safety and idempotency, the description supplies the missing operational context: standard, signing identity, selective disclosure behavior, and output field name. It is complete enough for an agent to select and invoke the tool 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 description coverage is already 100%, so the schema fully documents claims, subject, and selective_keys. The description adds useful semantics for selective_keys by explaining that selected top-level keys become salted-hash digests in the _sd array while unlisted keys remain always-disclosed cleartext.

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?

The description states a specific verb and resource: issuing a Selective Disclosure JWT under RFC 9901. It also explains how selected claim keys are marked disclosable and distinguishes this from the sibling sdjwt_present by positioning that tool as the next step for redacted presentations.

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?

It gives clear usage context by saying to pair with sdjwt_present to build a redacted presentation from the returned sd_jwt. It does not explicitly state when not to use this tool or contrast it with other issuance tools such as vc_issue, but the main workflow guidance is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdjwt_presentPresent a redacted Selective Disclosure JWTAInspect

Builds a redacted presentation from an existing SD-JWT (as returned by sdjwt_issue), keeping only the listed disclosures. Pass aud to add a KB-JWT holder-binding (a fresh ephemeral holder key is generated per call). Pass issuer_did (the sd_jwt's "issuer" field) to also verify the JWS and return the verifier_view -- exactly the claim set a relying party would resolve -- plus an OCG receipt of the presentation activity.

NameRequiredDescriptionDefault
audNoKB-JWT audience. Supplying this adds a holder-binding KB-JWT to the presentation.
nonceNoKB-JWT nonce. Auto-generated if aud is set and this is omitted.
sd_jwtYesAn SD-JWT string with all disclosures attached, as returned by sdjwt_issue.
keep_keysNoDisclosure keys to keep in the presentation. Default: none (all disclosures redacted).
issuer_didNoThe sd_jwt's issuer did:key, to verify the JWS and populate verifier_view + receipt.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-read-only, non-idempotent operation, and the description explains why: a fresh ephemeral holder key is generated per call. It also discloses that passing issuer_did triggers JWS verification and adds a verifier_view and OCG receipt to the output, which is behavioral context the annotations do not carry. It does not describe failure modes or what exactly is returned when issuer_did is omitted.

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?

Three tight sentences, front-loaded with the core action and then optional-mode consequences. Every sentence conveys material information, though the density of protocol jargon makes it slightly heavy for a single paragraph.

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?

With no output schema, the description carries the return-value burden and does so for the issuer_did path (verifier_view, OCG receipt). It does not spell out the output shape when issuer_did is omitted or describe error behavior, but for a 5-parameter credential tool it is largely complete.

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 parameters are already documented, but the description adds consequence-level meaning: aud triggers a KB-JWT binding with a fresh ephemeral key, issuer_did causes verification and extra return fields, and keep_keys defines which disclosures survive redaction. This ties parameters to outcomes in a way the schema's terse descriptions do not.

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 ('Builds a redacted presentation from an existing SD-JWT') and explicitly ties it to the sibling that produces its input ('as returned by sdjwt_issue'). An agent can distinguish it from sdjwt_issue without opening either 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?

Clearly establishes the precondition (an SD-JWT from sdjwt_issue) and states the conditions under which the optional parameters matter: pass aud for a KB-JWT holder-binding, pass issuer_did to verify and get verifier_view plus a receipt. No explicit exclusions or when-not-to-use guidance, which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_agentic_checkout_protocolAgentic Checkout Protocol SelectorB
Read-onlyIdempotent
Inspect

Agentic Checkout Protocol Selector: OpenChainGraph compute node (routing_policy). 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. Output feeds: art-20-acp-ucp-product-feed-conformance-auditor, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-19-agentic-checkout-protocol-selector.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: Scores ACP, UCP, x402, and Visa TAP against platform profile (buyer type, AOV, geography, stack capabilities) and returns a ranked protocol recommendation with fit scores. Outputs: primary_name, primary_recommendation, primary_score, profile, protocol_scores, recommended_protocols, viable_protocols. Output schema: call describe_tool("select_agentic_checkout_protocol").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower, yet the description adds genuinely useful operational context: server-side kernel execution vs. browser delegation URL, gpu:true nodes always delegating, transient non-retained input processing, and an exported AP2 artifact with execution_hash. Much of this is wrapped in noisy provenance/status text, but the compute and retention semantics are substantive and consistent with 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text opens with duplicated framework boilerplate ('OpenChainGraph compute node (routing_policy). Deterministic OpenChainGraph compute node.') and then buries the actual purpose in a mid-document 'Summary:' line. The FV-status hash URL, file-path reference, and downstream tool list consume substantial space without helping an agent decide or call the tool.

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?

With no output schema, listing the returned fields (primary_name, protocol_scores, recommended_protocols, etc.) and pointing to describe_tool is appropriate compensation, and the compute/provenance behavior is explained. The remaining gap is selection guidance against near-duplicate comparison tools, which the description never addresses.

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 would be 3, but the description adds real meaning by unpacking the otherwise-bare policy_parameters keys into a platform profile (buyer type, AOV, geography, stack capabilities) — the nested keys aov/geo/tech_cap have no per-property descriptions in the schema. The compute-mode explanation largely restates the enum description rather than extending it.

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 'Summary' sentence states a specific verb and resource: it scores ACP, UCP, x402, and Visa TAP against a platform profile and returns a ranked recommendation with fit scores. That is clear enough for an agent to know what it does, but it appears only after a block of ChainGraph infrastructure boilerplate, and the description never distinguishes it from siblings like compare_agentic_payment_protocols or compare_agentic_rail_protocols.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this over the very similar compare_agentic_payment_protocols / compare_agentic_rail_protocols tools, and no stated prerequisites for building a valid profile. The only usage-like statement, 'Use synthetic or anonymised inputs only,' is an input-safety constraint rather than a when-to-use rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_cbe_licenseCan't Be Evil License SelectorB
Read-onlyIdempotent
Inspect

Can't Be Evil License Selector: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-196-cant-be-evil-license-selector.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: Rights-matrix lookup for a16z's six Can't Be Evil NFT licenses. Outputs: arweave_uri, arweave_uri_legacy, caveats, cbe_id, commercial, creator_retains, current_enum_name, derivatives, disclaimer, exclusivity, launch_alias, license_version_index, matrix_verified, objectionable_use_restriction, reference_url, sublicense. Output schema: call describe_tool("select_cbe_license").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/non-destructive/closed-world), the description adds genuinely useful behavior: inputs are processed transiently and never stored or logged, server-vs-browser compute routing with GPU delegation, and an AP2 artifact with execution_hash is exported for provenance. These are real operational facts an agent could not infer from annotations alone.

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?

Front-loaded with generic ChainGraph compute-node boilerplate, a full FV-status URL and hex hash, and repeated statements ('Deterministic OpenChainGraph compute node' / 'OpenChainGraph compute node'), while the single sentence that says what the tool does appears last. Substantial text earns no place for an agent trying to select the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the outputs is helpful, and provenance/JSON-export behavior is covered. But for a 'selector', the description never explains the decision logic — how policy_parameters map to one of the six CBE licenses — and it defers output detail to describe_tool rather than being self-contained.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters fields are already documented. The description's compute-mode text is effectively a restatement of the schema description and adds no new meaning for policy_parameters, whose four keys (exclusive, waive_all, commercial, hate_speech_termination) drive the actual selection and are never explained.

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 'Summary' sentence states the actual purpose precisely: 'Rights-matrix lookup for a16z's six Can't Be Evil NFT licenses,' with a concrete output list. However, the identity of the tool is buried after ~80% generic compute-node boilerplate, and nothing distinguishes it from siblings like choose_cc_license, select_embedded_license, or compare_rights_matrix.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to pick this selector over the adjacent license tools (choose_cc_license, select_embedded_license, verify_license_election). The only conditional guidance is parameter-level (compute:auto vs browser vs server), which tells the agent how to invoke, not when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_embedded_licenseEmbedded License SelectorB
Read-onlyIdempotent
Inspect

Embedded License Selector: OpenChainGraph compute node (compliance_mandate). 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-198-cross-license-rights-comparator. Output feeds: art-204-license-compatibility-checker. Open at: https://ainumbers.co/chaingraph/art-203-embedded-license-selector.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: Maps creator answers to the SolSea and ALL.ART 4-tier embedded-license menu: Private/No Commercial, Personal/Public Display/No Commercial, Public Display/No Commercial, or Reproduction/Commercial. Outputs: decision_path, description, disclaimer, inputs_resolved, label, rights, source_family, source_url, tier_id. Output schema: call describe_tool("select_embedded_license").

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: allow_sharing, commercial_use, public_display. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, yet the description adds genuinely new traits: deterministic computation, transient processing with no storage/logging, AP2 artifact export with execution_hash, and upstream/downstream artifact contracts. The compute-mode paragraph largely restates the schema, but the privacy and provenance disclosures go beyond 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The key sentence — what the tool actually selects — appears last, behind framework identifiers, a verbatim restatement of the compute enum, and a full FV-status receipt URL. Important operational facts (transient processing, upstream/downstream) are good, but the ordering and duplication with the schema waste the front load.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It compensates for the missing output schema by enumerating output fields and chaining contracts, and it discloses the no-retention policy. However, for a decision tool whose policy_parameters are untyped empty objects, the description never explains accepted values or expected answer shape, a significant gap for correct invocation.

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 compute, parent_hashes, parent_tool_ids, and the required policy_parameters keys. The description adds nothing about what allow_sharing, commercial_use, or public_display should contain, leaving the decision inputs opaque even though they are the heart of the tool.

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 'Summary' segment gives a specific verb+resource: mapping creator answers onto the SolSea/ALL.ART four-tier embedded-license menu, with the tiers enumerated. That distinguishes it from generic siblings like choose_cc_license or select_cbe_license, though the actual purpose statement is buried near the end after node-framework boilerplate.

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 the pipeline wiring ('Consumes upstream artifacts from art-198-cross-license-rights-comparator. Output feeds: art-204-license-compatibility-checker'), which tells an agent where it sits in a chain. There is no explicit when-to-use versus choose_cc_license / select_cbe_license / assemble_license_terms, and no stated preconditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

servicing_compliance_clockServicing Compliance ClockB
Read-onlyIdempotent
Inspect

Servicing Compliance Clock: OpenChainGraph compute node (consumer_finance). 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. Open at: https://ainumbers.co/chaingraph/733-servicing-compliance-clock.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: Computes servicer-compliance due dates and clock states from event dates and loan values across the Regulation X/Z servicing rules: error-resolution, information-request, loss-mitigation, foreclosure-timeline, force-placed-insurance, reminder, cancel, refund, payment-crediting, payoff-statement a... Outputs: verdict, obligations, evidence, manual_review_required. Output schema: call describe_tool("servicing_compliance_clock").

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: events. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses that inputs are processed transiently and not stored or logged, that gpu:true nodes always delegate to the browser, and that an AP2 artifact with execution_hash is exported for provenance. These are real operational facts not present in the readOnly/idempotent hints; the only gap is no mention of failure modes or latency.

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?

The functional sentence is buried behind OpenChainGraph compute-binding boilerplate and an FV-status hash URL, and the summary is actually truncated mid-word ('payoff-statement a...'). Significant volume is spent on infrastructure detail rather than the tool's job.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It lists the four output fields (verdict, obligations, evidence, manual_review_required) and defers schema detail to describe_tool, which is reasonable with no output schema. But for a nested-object tool whose only real input is an undocumented events array, the definition leaves an agent unable to construct a call from the description alone.

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 baseline is 3. The description restates the compute modes already documented in the schema and never explains the structure of the nested policy_parameters.events array, which is the one parameter an agent actually has to construct correctly.

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 description names a specific verb and resource ('Computes servicer-compliance due dates and clock states from event dates and loan values') and enumerates the Regulation X/Z domains covered (error-resolution, loss-mitigation, foreclosure-timeline, force-placed-insurance, etc.). That is enough to distinguish it from generic clock tools, though it never contrasts itself with near-siblings like classify_dora_ict_incident_and_clock_deadlines.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over the hundreds of sibling compliance tools, nor any exclusion conditions or prerequisites. The only usage-shaped sentence is 'Use synthetic or anonymised inputs only', which is a data constraint, not selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_agent_spend_policyAgentic Mandate SandboxC
Read-onlyIdempotent
Inspect

Agentic Mandate Sandbox: OpenChainGraph compute node (agent_guardrail_mandate). 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-27-agentic-readiness-diagnostic. Output feeds: art-16-google-ap2-mandate-builder. Open at: https://ainumbers.co/chaingraph/art-15-agentic-mandate-sandbox.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: Builds a deterministic Agent Guardrail Mandate skeleton from declared spend caps, MCC allowlist/blocklist, velocity rules, time windows, and approval thresholds. Outputs: approval_thresholds, compliance, corridor, mandate_id, mcc_constraints, note, rail, rejected_inputs, schema, spend_caps, time_windows, velocity_rules. Output schema: call describe_tool("simulate_agent_spend_policy").

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: activeMCCs, allowWeekend, approvalTimeout, blockHoliday, boardSig, capDaily, capFlag, capMonthly, capSingle, destJurisdiction, dualSig, kycCheck, ofacCheck, origJurisdiction, rail, singleSig, timeEnd, timeStart, velCooldown, velDay, velHour. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses genuine behavioral traits: compute:'auto' runs server-side on Cloudflare Workers for gpu:false nodes with registered kernels, compute:'browser' returns a delegation URL, gpu:true always delegates, inputs are processed transiently and never stored or logged, and only synthetic/anonymised inputs should be used. That is meaningful context the annotations do not carry, though it is repeated across several near-identical sentences.

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?

The text is back-loaded: three sentences of 'OpenChainGraph compute node' boilerplate, a full URL, and a long FV-status hash path precede the one sentence that actually says what the tool does. Repeated claims ('Deterministic OpenChainGraph compute node' stated twice, transient-processing restated) do not earn their tokens.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does list the returned keys and points to describe_tool for the schema, and it covers compute modes and data handling. However, for a tool whose payload is a large untyped policy_parameters object, an agent still lacks guidance on valid parameter values and defaults, which is the main gap.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description adds a loose mapping of the policy_parameters domain (spend caps, MCC constraints, velocity rules, time windows, approval thresholds), but the nested properties are untyped and their allowed values (rail, capFlag, dualSig, etc.) are never explained. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The real purpose only appears near the end in the 'Summary' sentence: builds a deterministic Agent Guardrail Mandate skeleton from spend caps, MCC allow/blocklists, velocity rules, time windows and approval thresholds. That is a specific verb+resource, but the opening is tautological boilerplate ('Agentic Mandate Sandbox: OpenChainGraph compute node'), and nothing distinguishes it from close siblings such as agentic_mandate_sandbox, simulate_spend_policy, or ap2_aml_mandate_builder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus the many mandate-building siblings. The only routing information is pipeline placement ('Consumes upstream artifacts from art-27-agentic-readiness-diagnostic', 'Output feeds: art-16-google-ap2-mandate-builder'), which hints at sequencing but never says when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_app_fraud_graphAPP Fraud Graph SimulatorC
Read-onlyIdempotent
Inspect

APP Fraud Graph Simulator: OpenChainGraph compute node (aml_rule). 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-09-dora-incident-classifier, art-10-amla-transaction-typology-risk-scorer. Output feeds: ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/mms-03-app-fraud-graph.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/non-destructive), the description discloses the compute-binding behaviour (server kernel vs browser delegation URL, gpu:true always delegates), data handling (transient, not stored or logged), and the output artifact shape (AP2 export with execution_hash for chain provenance). It stops short of describing latency, failure modes, or what the exported artifact contains beyond the hash, 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose statement occupies one clause, after which the text is dominated by internal plumbing: compute-binding boilerplate, a 64-character FV-status hash URL, and a documentation link. The genuinely useful facts (privacy handling, artifact export, upstream/downstream chaining) are buried mid-paragraph rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compute/decision function with no output schema, the description omits the single most important thing an agent needs: what the decision function evaluates and what result it returns besides the execution_hash. Chaining context is supplied, but the semantic contract of the computation is absent.

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 all four parameters are documented in the schema, including the compute enum and parent_hashes/parent_tool_ids pairing. The description's restatement of compute modes duplicates the schema rather than adding new meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the title ('APP Fraud Graph Simulator') and labels the node family ('OpenChainGraph compute node (aml_rule)'), but never says what the simulation actually computes — what an APP fraud graph evaluates, what decision or graph structure it produces. Against siblings such as score_aml_typologies or simulate_x402_flow there is no statement of what distinguishes this tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one real usage constraint ('Use synthetic or anonymised inputs only') but no when-to-use guidance, no conditions for choosing this node over the many other AML/simulation siblings, and no stated prerequisites beyond which upstream artifacts exist. Chaining hints (consumes art-09, feeds ptg-01) describe positioning, not invocation criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_frtb_esFRTB IMA Expected Shortfall Pre-ValidatorA
Read-onlyIdempotent
Inspect

FRTB IMA Expected Shortfall Pre-Validator: OpenChainGraph compute node (risk_parameter). Regulatory deadline: 2028-01-01 (UK FRTB-IMA go-live January 2028; EU slipped to ~2029-30. Pre-validation educational tool.). 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: qfa-02-portfolio-var-engine, sim-03-basel-rwa-scenario-modeler. Output feeds: ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/rca-01-frtb-ima-pre-validator.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: FRTB IMA Expected Shortfall pre-validation: MC simulation across liquidity horizons LH1–LH5 (10/20/40/60/120 days), NMRF surcharge estimation, PLA Test (green/amber/red), IMA vs SA floor capital comparison. Outputs: capital_ima, capital_required, confidence_level, es_97_5_pct, es_by_lh_class, floor_binding, n_positions, n_scenarios, nmrf_surcharge, pla_ratio, pla_test_status, sa_floor, undiversified_es, verdict. Output schema: call describe_tool("simulate_frtb_es").

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: confidenceLevel, nPositions, nRiskClasses, nScenarios, nmrfRate, seed. Unknown keys are refused.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnly/idempotent/non-destructive/closed-world; the description adds substantial behaviour they do not cover — compute mode resolution (auto → server when a kernel is registered, browser forces a delegation URL, gpu:true always delegates), transient processing with no storage/logging, a synthetic-input-only constraint, and an AP2 artifact with execution_hash for chain provenance. That is exactly the extra disclosure this dimension rewards.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly, but bloated: 'OpenChainGraph compute node' is effectively stated twice, and a 60+ character FV-status hash URL plus the 'snapshot, not a subscription' aside consume space with low selection value. The regulatory deadline and the pointer to describe_tool are useful, but the agent must wade through boilerplate to reach the summary of what is actually computed.

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?

For a 4-param nested simulation with no output schema, the description carries its weight by enumerating the 14 output fields (capital_ima, es_by_lh_class, floor_binding, pla_test_status, verdict, etc.) and by naming upstream/downstream chain partners. Only the chain-provenance mechanics (how parent_hashes bind to parent_tool_ids ordering) are left implicit.

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%: compute, parent_hashes, parent_tool_ids and the six required policy_parameters keys are all documented in the schema, including the enum semantics that the description restates. The description adds little beyond the schema for parameters, 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?

Names a specific verb+resource (FRTB IMA Expected Shortfall pre-validation) and then spells out exactly what it computes: MC simulation across LH1–LH5 (10/20/40/60/120 days), NMRF surcharge, PLA test green/amber/red, IMA vs SA floor comparison. That is distinguishable from neighbours such as simulate_var_monte_carlo or compute_portfolio_var without opening any 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 real context for when to reach for it: it is a pre-validation/educational tool, it consumes artifacts from qfa-02-portfolio-var-engine and sim-03-basel-rwa-scenario-modeler, and its output feeds ptg-01-ap2-prompt-template-generator. It stops short of any explicit 'do not use this when…' or named alternative for the general VaR tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_gpi_tracker_lifecycleSWIFT GPI Tracker Lifecycle SimulatorA
Read-onlyIdempotent
Inspect

SWIFT GPI Tracker Lifecycle Simulator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-245-mt-mx-translation-fidelity-scorer. Open at: https://ainumbers.co/chaingraph/art-244-gpi-tracker-lifecycle-simulator.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: Validates SWIFT GPI pacs.002 payment status code transitions against the GPI state machine (PDNG, ACSP, ACSP/ACWC, ACCC, RJCT) and checks the Universal Confirmation SLA (ACCC must be sent within 24 hours of ACSP). Outputs: allowed_next_statuses, amount_usd, current_status, hours_elapsed, is_rejected, is_settled, is_terminal, issues, lifecycle_states, next_status, pii_note, regulatory_basis, sla_breached, sla_hours_limit, sla_note, stage_description, table_source, table_version, transition_reason, transition_valid. Output schema: call describe_tool("simulate_gpi_tracker_lifecycle").

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: amount_usd, current_status, hours_elapsed, next_status. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. Beyond that, the description adds meaningful behavioral context: server-side versus browser computation, GPU delegation, transient processing with no storage or logging, and export of an AP2 artifact with execution_hash. These details are useful and do not contradict 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a long, dense paragraph with repeated boilerplate ('Deterministic OpenChainGraph compute node') and places the actual purpose summary near the end. The compute and provenance details are relevant, but the structure is not front-loaded and contains more text than needed for an agent to decide and invoke the tool.

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?

For a four-parameter tool with a nested policy_parameters object and no output schema, the description is fairly complete: it explains the GPI lifecycle validation, SLA check, compute behavior, privacy constraints, and output artifact/provenance. It lists many output fields and directs the agent to describe_tool for the output schema, so remaining gaps are minor.

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 input schema already documents the four parameters. The description restates compute-mode behavior but does not add further meaning to policy_parameters fields such as current_status, next_status, amount_usd, or hours_elapsed. With the schema doing the heavy lifting, a baseline 3 is appropriate.

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 description eventually states a specific verb and resource: 'Validates SWIFT GPI pacs.002 payment status code transitions against the GPI state machine... and checks the Universal Confirmation SLA.' This is clear enough for an agent to identify the operation, but the actual purpose is buried after OpenChainGraph compute-mode boilerplate and does not differentiate the tool from similar validation or simulation siblings.

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?

It gives operational constraints such as using synthetic or anonymised inputs, compute mode behavior, and that the output feeds art-245-mt-mx-translation-fidelity-scorer. However, it does not explicitly say when to use this tool versus alternatives or when not to use it, leaving the selection decision largely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_ict_cascadeDORA ICT Cascade SimulatorB
Read-onlyIdempotent
Inspect

DORA ICT Cascade Simulator: OpenChainGraph compute node (infrastructure_mandate). 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-09-dora-incident-classifier. Output feeds: sim-07-open-banking-consent-flow-stress, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/pnr-01-dora-ict-cascade-simulator.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.

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". See the tool's manifest for field names.

TDQS

B3/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 the description adds genuinely non-obvious behavior: inputs are 'processed transiently... not stored, logged, or retained', compute may be forced to the browser with a returned delegation URL, and an AP2 artifact with execution_hash is exported for chain provenance. The FV-status note also clarifies that the receipt is an offline-verifiable snapshot rather than a live subscription. It stops short of describing rate limits or failure modes, 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loading the identity and the compute default is good, but there is visible waste: 'OpenChainGraph compute node (infrastructure_mandate). Deterministic OpenChainGraph compute node.' repeats the same clause, and the trailing FV-status sentence embeds a 64-character hash that consumes attention without adding selection value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, no required parameters, and a free-form nested policy_parameters object, so the description carries real burden. It covers execution, data retention, and provenance chain well, but omits what the simulation returns (beyond 'an AP2 artifact') and what fields policy_parameters expects, leaving the agent to consult an external manifest before it can call the tool meaningfully.

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%, so compute, parent_hashes and parent_tool_ids are already documented in-schema and the description largely restates the compute-mode semantics. What it does add is provenance-oriented context — naming art-09-dora-incident-classifier as the upstream artifact and the two downstream consumers — which helps justify parent_hashes/parent_tool_ids, but policy_parameters is left to 'See the tool's manifest for field names', deferring the key semantics outside the definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name and title give a verb+resource ('DORA ICT Cascade Simulator'), and the body identifies it as an 'OpenChainGraph compute node (infrastructure_mandate)' that exports an AP2 artifact. But aside from 'decision function' and 'policy_parameters', it never says what the cascade simulation actually computes, so the agent cannot tell what result it produces or how it differs from sibling DORA tools like classify_dora_ict_incident_and_clock_deadlines or build_dora_roi_register.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only conditional guidance concerns execution mechanics ('compute:auto' vs 'compute:browser', gpu:true delegation) and a data-handling constraint ('Use synthetic or anonymised inputs only'). There is no statement of when to reach for this simulator versus alternatives, and the upstream/downstream artifact names are stated as facts rather than actionable selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_output_floorBasel Output-Floor Phase-In SimulatorB
Read-onlyIdempotent
Inspect

Basel Output-Floor Phase-In Simulator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-358-simulate-output-floor.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: Basel III finalization / 2026 reproposal output-floor simulator: applies the published floor mechanic (applied RWA = max(internal-model RWA, floor% x standardized RWA)) across a caller-supplied annual phase-in schedule, returning the year-by-year capital impact path, the first binding-floor year,... Outputs: binding_floor_year, capital_impact_path, floor_ever_binds, internal_model_rwa, max_incremental_rwa, note, regulatory_basis, rule_status, standardized_rwa. Output schema: call describe_tool("simulate_output_floor").

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: phase_in_schedule, rule_status. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive, but the description adds real behavioral context: default server-side compute on Workers for gpu:false nodes, compute:'browser' returning a delegation URL instead of a result, gpu:true always delegating, transient non-retained processing, and 'Unknown keys are refused'. It also explains that an AP2 artifact with execution_hash is exported for chain provenance. Most of this is platform-level boilerplate shared across nodes rather than node-specific behavior, which keeps it below 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description opens with platform boilerplate (compute-node framing, data-retention language, a documentation URL, and a long FV-status hash path) before reaching the actual purpose. The functional summary is even truncated mid-sentence with '...', and the parameter semantics from the schema are restated in a compute mode paragraph. Only the middle Summary block earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Inputs are fully covered by the 100%-coverage schema, and the output field names are enumerated, so an agent can call it. But the description's own purpose sentence is cut off with '...', output detail is deferred to describe_tool with no output schema present, and there is no error/validation guidance for the 'unknown keys are refused' policy or for the browser-delegation return path.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters sub-keys, and the baseline is 3. The description adds useful semantics for policy_parameters (the floor formula implies phase_in_schedule, internal_model_rwa and standardized_rwa roles) and repeats the compute-mode default, but adds no format detail for the phase-in schedule array or parent-hash pairing.

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 Summary sentence names a specific verb and domain: it applies the Basel output-floor mechanic (applied RWA = max(internal-model RWA, floor% x standardized RWA)) across a caller-supplied phase-in schedule and returns a year-by-year capital impact path. That is far more specific than the title alone. It does not, however, explicitly differentiate itself from nearby Basel siblings such as compare_basel_2023_vs_2026, compute_basel31_delta or compute_rwa_scenarios, so an agent still has to infer which one fits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to pick this tool over the numerous Basel/RWA siblings, and no exclusions. The only usage-direction content is the data-handling constraint 'Use synthetic or anonymised inputs only' and the implicit requirement of a caller-supplied phase-in schedule, neither of which routes between alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_spend_policyAgent Spend-Policy SimulatorA
Read-onlyIdempotent
Inspect

Agent Spend-Policy Simulator: OpenChainGraph compute node (payment_policy). 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-04-agent-identity-attestation-checker, art-32-a2a-agent-card-trust-chain-validator. Output feeds: art-01-ap2-mandate-chain-validator, art-04-agent-identity-attestation-checker, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-02-agent-spend-policy-simulator.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: Simulates thousands of synthetic agent transactions against a user-authored spend policy (per-merchant caps, category allow/deny, velocity limits, cumulative ceilings). Outputs: bypass_paths_detected, compliance_flags, fail_count, fail_rate_pct, pass_count, top_fail_reasons, total_approved_spend, total_transactions, verdict. Output schema: call describe_tool("simulate_spend_policy").

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: blocked_categories, blocked_merchants, chaos, daily_limit, drip_freq, hnp_ratio, monthly_limit, n_txns, per_tx_limit, seed. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, idempotent, and non-destructive, but the description adds meaningful behavior: deterministic compute routing, server vs browser delegation, gpu delegation, transient non-retention of inputs, synthetic/anonymised input restriction, and AP2 execution_hash export. No contradiction with annotations.

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?

The actual purpose is buried near the end after repeated infrastructure text, a URL, and an FV-status hash, and 'OpenChainGraph compute node' is repeated. Some provenance details are relevant, but the definition is bloated and not front-loaded.

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?

With no output schema, the description supplies the output field list and explains upstream/downstream artifact chaining and privacy behavior. It is nearly complete, but the near-duplicate sibling relationship and some nested policy parameter meanings remain unaddressed.

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%, so the schema carries parameter documentation. The description adds a high-level policy vocabulary such as per-merchant caps, category allow/deny, velocity limits, and cumulative ceilings, but it does not explain opaque nested controls like seed, chaos, drip_freq, or hnp_ratio, and its compute text duplicates the schema.

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 final Summary states a specific action: simulating thousands of synthetic agent transactions against a user-authored spend policy, with policy dimensions named. It is clear what the tool does, but it does not distinguish itself from the near-identical sibling simulate_agent_spend_policy, so it stops short of 5.

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?

It provides usage context such as AP2 ChainGraph placement, upstream artifacts, synthetic-only inputs, and compute auto/browser rules. However, it never explicitly says when to choose this tool over simulate_agent_spend_policy or when not to use it, so usage is implied rather than clearly routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_stablecoin_reserveMiCA Stablecoin Reserve Stress SimulatorA
Read-onlyIdempotent
Inspect

MiCA Stablecoin Reserve Stress Simulator: OpenChainGraph compute node (liquidity_mandate). Regulatory deadline: 2024-06-30 (MiCA Title III/IV in force June 30 2024 — ART/EMT issuers subject to Article 36 reserve requirements now). 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-06-genius-act-reserve-attestation, sim-01-lcr-nsfr-liquidity-stress-test. Output feeds: ptg-01-ap2-prompt-template-generator, cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/rca-02-mica-reserve-stress.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: Monte Carlo simulation of stablecoin reserve portfolios under MiCA Article 36 redemption stress and asset price shocks. Outputs: art36_buffer_adequate_pct, breach_probability_pct, compliance_flags, coverage_p50_end_day, coverage_p5_end_day, horizon_days, n_paths, peak_breach_pct, scenario, verdict, warnings. Output schema: call describe_tool("simulate_stablecoin_reserve").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the bar is lower, and the description still adds real behaviour: deterministic compute node, server-side vs browser delegation semantics, transient (not stored or logged) input handling, and an exported AP2 artifact carrying execution_hash for provenance. It stops short of describing failure modes or what happens when a kernel is unregistered.

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?

The actual function summary — the single most important sentence — is buried after the compute-plumbing, privacy notice, artifact list and a 64-character FV-status hash, so the description is not front-loaded. It also duplicates the compute-mode text already present in the input schema, inflating length without adding information.

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?

With no output schema, the description compensates by enumerating the returned metrics and the verdict/compliance_flags fields, and it covers the regulatory framing, compute modes and provenance export an agent needs before calling. The main omission is any explanation of the policy_parameters knobs that actually drive the simulation.

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 baseline is 3. The description restates the compute modes almost verbatim from the schema, and the policy_parameters sub-fields (seed, n_paths, scenario, art36_buffer, horizon_days, reserve_ratio_init) are never explained in the description despite having no property-level descriptions in the schema.

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 description names a specific verb and resource: 'Monte Carlo simulation of stablecoin reserve portfolios under MiCA Article 36 redemption stress and asset price shocks', plus a concrete output vocabulary (breach_probability_pct, coverage_p5_end_day). It positions the tool in a chain via its upstream/downstream artifact IDs, though it never explicitly contrasts itself with near neighbours like recompute_stablecoin_reserve_3source or run_liquidity_stress_test.

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?

It supplies context that implies when to reach for it (ART/EMT issuers subject to Article 36 reserve requirements since 2024-06-30) and gives compute-mode selection guidance plus a 'use synthetic or anonymised inputs only' constraint. However, there is no explicit when-to-use/when-not statement and no named alternative for overlapping reserve or liquidity-stress tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_var_monte_carloPortfolio VaR — Monte Carlo (Integer PRNG)B
Read-onlyIdempotent
Inspect

Portfolio VaR — Monte Carlo (Integer PRNG): OpenChainGraph compute node (risk_control). 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. Output feeds: qfa-02-portfolio-var-engine, qfa-03-stress-test-engine. Open at: https://ainumbers.co/chaingraph/art-371-simulate-var-monte-carlo.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: Monte Carlo portfolio Value-at-Risk and Expected Shortfall over a one-factor correlated-asset model. Outputs: compliance_flags, conf_level, correlation, draw_count, es_dollar_mm, holding_period, mc_es_pct, mc_var_pct, n_assets, n_paths, prng_algorithm, seed, var_dollar_mm, verdict. Output schema: call describe_tool("simulate_var_monte_carlo").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint:false), the description adds real behavioral context: inputs are processed transiently and not stored or logged, only synthetic/anonymised inputs should be used, execution is deterministic, and an AP2 artifact with execution_hash is exported for chain provenance. It does not disclose rate limits or the cost/latency implications of the browser-delegation path, which keeps it from 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Roughly two-thirds of the text is boilerplate about compute binding, Cloudflare Workers, FV-status snapshot URLs, and artifact links, with the one-line functional summary pushed to the end. The purpose should be the first sentence; as written the agent must read past substantial noise to learn what the tool computes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderately complex simulation tool with nested policy parameters and no output schema, listing the outputs (mc_var_pct, mc_es_pct, var_dollar_mm, compliance_flags, etc.) is genuinely useful. But it omits the model assumptions beyond 'one-factor correlated-asset', the meaning/defaults of the policy parameters, and any guidance on the chain-provenance inputs the schema exposes.

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 fully documents compute, parent_hashes, parent_tool_ids, and the nested policy_parameters fields. The description mostly restates the compute-mode semantics already present in the schema and does not explain what the policy parameters (seed, n_paths, corr, holding_period) mean or what defaults/valid ranges apply — baseline 3.

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 purpose is stated specifically once you reach the summary: 'Monte Carlo portfolio Value-at-Risk and Expected Shortfall over a one-factor correlated-asset model.' However, the first several sentences are OpenChainGraph compute-plumbing boilerplate, so the actual verb+resource is buried, and nothing distinguishes it from sibling compute_portfolio_var or compute_var_backtest_traffic_light.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives — no mention of compute_portfolio_var, compute_stress_test_scenarios, or any other VaR/stress sibling from the tool list. The only usage-like guidance concerns compute:'auto'/'browser' mode selection, which is about execution placement, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_vop_matchingVoP Batch Match-Rate AnalyserA
Read-onlyIdempotent
Inspect

VoP Batch Match-Rate Analyser: OpenChainGraph compute node (compliance_mandate). 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: rca-03-iso20022-address-migration-verifier, art-10-amla-transaction-typology-risk-scorer. Output feeds: ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-11-vop-batch-match-rate-analyser.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: Batch IBAN-name matching: match/close-match/no-match classification, configurable strictness (exact/normalized/fuzzy), false-positive vs false-negative trade-off curves, per-corridor mismatch-rate distribution. Outputs: close_match, match, match_rate_pct, no_match, total_records. Output schema: call describe_tool("simulate_vop_matching").

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: close_match_threshold, match_threshold, payees. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations: compute modes (server kernel vs browser delegation URL), gpu:true always delegating, transient non-retained processing, synthetic/anonymised input requirement, and AP2 provenance export with execution_hash. The only notable omission is what happens on invalid inputs or how thresholds affect the trade-off concretely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and outputs, which is good, but it is padded with an FV-status URL and a 64-character hash receipt that an agent acting on the tool gains little from. The compute-mode explanation duplicates the schema's own parameter description.

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?

With no output schema, listing close_match, match, match_rate_pct, no_match, total_records is genuinely necessary and present. Upstream/downstream linkage and privacy constraints round it out, though the semantics of the policy thresholds still require a describe_tool call.

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 baseline is 3. The description does add that strictness is configurable (exact/normalized/fuzzy) and that trade-off curves exist, but it never explains match_threshold, close_match_threshold, or payees beyond what the schema already states.

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 summary sentence names a specific verb and resource: 'Batch IBAN-name matching: match/close-match/no-match classification... per-corridor mismatch-rate distribution.' That clearly separates it from scoring siblings like score_payee_name_match or score_fuzzy_match_calibration, though the description never names those siblings explicitly.

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?

Consumption of upstream artifacts from rca-03-iso20022-address-migration-verifier and art-10-amla-transaction-typology-risk-scorer implies where this tool fits, but there is no explicit when-to-use / when-not statement or alternative named. The agent must infer placement in the chain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_x402_flowx402 Header Decoder, Payload Linter & 402 Flow SimulatorA
Read-onlyIdempotent
Inspect

x402 Header Decoder, Payload Linter & 402 Flow Simulator: OpenChainGraph compute node (compliance_control). 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-22-agentic-payments-protocol-comparator, art-25-a2a-agent-card-validator. Output feeds: art-03-x402-settlement-modeler, art-18-mcp-developer-readiness-scorecard, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-26-x402-payload-decoder-flow-simulator.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: Decodes base64 PAYMENT-REQUIRED / PAYMENT-SIGNATURE / PAYMENT-RESPONSE headers, lints exact-scheme PaymentPayload (EIP-3009 style authorization fields), walks the HTTP-402 request/verify/settle flow, shows scheme×network matrix. Outputs: decoded_type, errors, findings, has_accepts, is_json, mode, network, passes, scheme, score, warnings. Output schema: call describe_tool("simulate_x402_flow").

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: header_or_payload. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses compute delegation behavior (server-side vs browser delegation, gpu:true always delegates), transient processing with no storage/logging/retention, deterministic execution, AP2 artifact export with execution_hash, and a verifiable offline FV-status receipt. These are substantive behavioral traits that materially help invocation planning.

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?

The useful summary is buried after title repetition, generic compute-node boilerplate, provenance URLs, FV-status hashes, and upstream/downstream listings. Much of the text does not help an agent select or invoke the tool, and the description could be substantially shorter.

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?

For a complex decoder/linter/simulator with no output schema, the description lists the output fields and covers artifact and chaining context sufficiently for an agent to know what to expect. It does not explain each output field's meaning in depth, but overall it is complete enough for correct invocation.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters are already documented in the schema. The description repeats the default compute behavior and mentions required/refused keys for policy_parameters, but adds little beyond what the structured parameter documentation already provides.

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 title and summary state specific verbs and resources: decode x402 headers, lint PaymentPayload, simulate the HTTP-402 request/verify/settle flow, and show a scheme×network matrix. An agent can understand what it does, but the description does not explicitly distinguish it from nearby siblings such as decode_x402_payment or lint_x402_v2_migration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use or when-not-to-use guidance relative to the many other x402 tools. It mentions upstream artifacts and downstream consumers, plus a data-handling caution to use synthetic inputs, but these are context and constraints rather than selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

size_ccp_default_fund_cover2CCP Default Fund Cover-2 SizingA
Read-onlyIdempotent
Inspect

CCP Default Fund Cover-2 Sizing: OpenChainGraph compute node (risk_parameter). 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: qfa-03-stress-test-engine. Open at: https://ainumbers.co/chaingraph/art-530-default-fund-cover2-sizing.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: Sizes a CCP default fund under the PFMI Principle 4 "Cover 2" standard: fund size must be at least the largest plus second-largest clearing-member stress loss across caller-declared stress scenarios. Outputs: as_of, fund_adequate, fund_size_display, fund_size_minor_units, member_count, note, per_scenario, rationale, rejected_inputs, scenario_count, shortfall_display, shortfall_minor_units, worst_case_cover2_requirement_display, worst_case_cover2_requirement_minor_units, worst_case_scenario_id. Output schema: call describe_tool("size_ccp_default_fund_cover2").

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: as_of, fund_size_minor_units, members, stress_scenarios. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnly/idempotent/non-destructive/closed-world already declared by annotations, the description still adds real context: server-side vs browser delegation rules, that inputs are transient and not retained (a privacy constraint), that only synthetic/anonymised inputs should be used, and that an AP2 artifact with execution_hash is exported for chaining. It also names the upstream dependency (qfa-03-stress-test-engine). Minor waste is the redundant 'Deterministic OpenChainGraph compute node' repeated twice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and the Cover-2 rule are front-loaded, which is good, but the middle of the description is boilerplate about Cloudflare Workers, retention, provenance receipts and a long fv-status URL, plus a duplicated sentence. The trailing enumeration of 18 output fields is bulky and could be replaced by the describe_tool pointer alone.

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?

For a compute node with a nested policy_parameters object and no output schema, the description covers the decision rule, the inputs' required shape, compute-mode behavior, chaining/parent hashes, and the exported artifact. It also lists output fields and points to describe_tool for the schema, leaving little that an agent must guess.

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 baseline is 3. Nearly everything the description says about parameters (compute auto/server/browser semantics, required policy_parameters keys, unknown keys refused) is already present verbatim in the schema descriptions, so it adds little beyond structured fields.

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 description states a specific verb and resource — 'Sizes a CCP default fund under the PFMI Principle 4 Cover 2 standard' — and defines the rule precisely (largest plus second-largest clearing-member stress loss). It never names a sibling alternative (e.g. recompute_ccp_default_waterfall), so it is clear in itself but weak on sibling differentiation.

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 implied by the Cover-2 framing and the stated required keys (as_of, fund_size_minor_units, members, stress_scenarios), but there is no explicit when-to-use / when-not-to-use statement and no routing to alternative CCP tools. Compute-mode semantics are the only guidance that is spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stress_test_ap_redemption_pathAP Concentration + Redemption-Path StressA
Read-onlyIdempotent
Inspect

AP Concentration + Redemption-Path Stress: OpenChainGraph compute node (collateral_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-322-rhc-ap-redemption-stress.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: Stress-tests the one-token-equals-one-share economic-exposure claim for Robinhood Chain stock tokens against actual redemption reachability. Outputs: ap_count, concentration_risk, issuer_credit_exposure_distinct, liquidity_flag, not_investment_advice, premium_discount_exposure, redemption_path, redemption_reachable_for_non_ap, structural_dependencies, verdict. Output schema: call describe_tool("stress_test_ap_redemption_path").

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". Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/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), and the description adds substantial context beyond them: server-vs-browser execution routing with a delegation URL, transient non-retention of inputs, and export of an AP2 artifact carrying execution_hash for provenance. It also discloses the FV-status receipt is a snapshot that verifies offline — unusually rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The output list and URL are useful, but the description opens with repeated 'OpenChainGraph compute node' boilerplate and buries the actual purpose mid-way. Several sentences could be cut without losing information, and the key purpose should be front-loaded.

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?

With no output schema, the description compensates by enumerating return fields (verdict, redemption_path, concentration_risk, premium_discount_exposure, etc.) and by pointing to describe_tool for the schema. What it lacks is guidance on interpreting the verdict or how policy_parameters map to the computed outputs.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters object. The description only restates compute routing, which the schema enum already spells out, and adds nothing about issuer_credit, secondary_market_depth or authorised_participants. 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?

The summary sentence — 'Stress-tests the one-token-equals-one-share economic-exposure claim for Robinhood Chain stock tokens against actual redemption reachability' — is a specific verb+resource+scope. However it arrives only after a long block of generic compute-node boilerplate, and no sibling tool (e.g. run_robinhood_chain_fit_diagnostic, compute_stock_token_collateral_haircut) is named as the alternative, so differentiation is left to inference.

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 implied through the summary and the 'Use synthetic or anonymised inputs only' constraint, but there is no explicit when-to-use / when-not-to-use guidance and no named alternative among the many Robinhood Chain and stress-test siblings. The compute-mode paragraph explains routing, not selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_tool_ideaSuggest a new tool, node, or workflowA
Read-onlyIdempotent
Inspect

Builds a prefilled GitHub Issue-Forms URL for proposing a new AINumbers fintech tool, OpenChainGraph compute node, or verifiable workflow. Returns the URL only -- it never posts to GitHub on the caller's behalf. Companion to the site's mailto suggestion form (suggest.html); this is the agent-callable path.

NameRequiredDescriptionDefault
whoNoThe persona or buyer who would use this (e.g. "a compliance officer at a CASP").
kindNoWhat kind of suggestion this is (default "New tool").
titleNoShort issue title (the "[Suggestion] " prefix is added automatically).
domainNoThe regulation or standard it serves (e.g. "MiCA", "ISO 20022", "EMIR Refit").
why_nowNoThe driver, deadline, or demand behind the suggestion.
computesYesWhat the tool would compute or verify (e.g. "validates a CBAM precursor emissions declaration against Annex III default values"). Required by the issue form.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, open-world, non-destructive behavior, so the description does not need to restate safety. It adds useful behavioral context by stating that it returns the URL only and never posts to GitHub on the caller's behalf, though it does not cover auth or URL-expiration details.

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?

Three sentences, front-loaded with the primary action and followed by the key non-posting behavior and companion context. Every sentence contributes useful information without repetition.

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 explains the return value despite there being no output schema, and the input schema plus annotations cover the rest of the invocation contract. Minor post-return guidance, such as presenting the URL to the user, is absent but not essential for correct invocation.

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 all six parameters are already documented in the input schema. The description adds little parameter-level meaning beyond naming the general suggestion categories, so the baseline score of 3 is appropriate.

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?

The description names a specific action and artifact: building a prefilled GitHub Issue-Forms URL for proposing a new tool, compute node, or workflow. This is concrete and distinguishable from the many validation and analysis tools in the sibling set.

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?

It identifies itself as the agent-callable companion to the site's mailto suggestion form, which gives clear usage context. However, it does not explicitly state when not to use it or name other alternatives beyond the mailto form.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suite_howtoAINumbers suite how-to: workflow recipesA
Read-onlyIdempotent
Inspect

How to chain AINumbers tools into audited workflows: call with NO recipe_id for the compact recipe index, or with one recipe_id for that workflow's full step-by-step recipe. Every recipe carries the suite conventions end to end: Policy Mandate exports, execution_hash verification, and receipts.

NameRequiredDescriptionDefault
recipe_idNoA recipe id from the no-arg index (e.g. "aml-programme"). Omit for the compact index; pass exactly ONE id per call.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds useful context about what the recipes contain: Policy Mandate exports, execution_hash verification, and receipts. That is meaningful behavioral context beyond the safety profile, though not exhaustive.

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 sentences with zero waste. The core behavior is front-loaded, and the second sentence explains the recipe contents without repetition or fluff.

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?

With no output schema, the description adequately explains the two return modes: an index or a full step-by-step recipe. Annotations cover the safety profile. Minor gaps remain around the exact structure of the index or recipe, but nothing critical is missing for correct invocation.

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 parameter's schema description already explains omitting it for the index and passing exactly one id for a full recipe. The description reinforces this but adds little semantic detail beyond what the schema provides, so the baseline of 3 is appropriate.

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 description states the tool's specific function: returning either a compact recipe index or a full step-by-step workflow recipe for chaining AINumbers tools. It distinguishes the two modes of operation clearly, though it does not explicitly differentiate this tool from siblings like list_ainumbers_tools or describe_tool.

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?

It tells the agent exactly when to omit recipe_id (to get the index) and when to supply one (to get a full recipe). This is clear conditional guidance, but it does not mention when to choose this over related discovery tools, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sweep_docket_deadlinesDocket Deadline SweepA
Read-onlyIdempotent
Inspect

Docket Deadline Sweep: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-588-docket-deadline-sweep.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: Sweeps a caller-declared docket -- a flat list of {date, action, type, source, done} deadline records, the structured shape practitioners already keep in a spreadsheet, calendar, or practice-management export -- against a caller-declared as-of date, and bands every record OVERDUE, DUE_SOON, SCHED... Outputs: decision, as_of_date, due_soon_days_threshold, due_soon_days_threshold_is_default, roll_rule, record_count, records, conflicts, sweep_summary, rejected_inputs, scope_note, clause_note, not_legal_advice_note. Output schema: call describe_tool("sweep_docket_deadlines").

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: as_of_date, due_soon_days_threshold, records, roll_rule. Unknown keys are refused.

TDQS

A3.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 closed-world behavior, and the description adds materially: deterministic compute modes, server-side versus browser delegation behavior, transient non-retention of inputs, and AP2 artifact provenance. There is no contradiction with 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and not front-loaded: it opens with generic ChainGraph compute-node and hosting details before reaching the docket-sweep behavior. The useful summary is buried, and the truncated band list plus URL and FV-status text add noise for an agent selecting and calling the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested complex tool with no output schema, the description lists output field names and covers the main input record shape, but it leaves key details incomplete, including the full deadline band names and roll_rule semantics. Referencing describe_tool for the output schema helps, but the description alone is only partially complete.

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 description coverage is 100%, so baseline is 3, but the description adds meaningful semantics beyond the schema by spelling out the docket record shape as {date, action, type, source, done} and naming the as-of date and due-soon threshold. It does not fully explain roll_rule options or the parent hash chaining parameters, so it falls short of a 5.

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 description states a specific verb and resource: it sweeps a caller-declared docket of deadline records against an as-of date and bands each record as OVERDUE, DUE_SOON, etc. That is clear enough to distinguish it from most sibling tools, though the purpose is buried behind infrastructure boilerplate and the band list is truncated.

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 by the purpose and the compliance_control label; there is no explicit statement of when to choose this tool versus alternatives, nor any when-not guidance. The description does add the constraint to use synthetic or anonymised inputs only, which is useful but not a routing guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sweep_fedwire_addressesFedwire Payment-File Address SweepA
Read-onlyIdempotent
Inspect

Fedwire Payment-File Address Sweep: OpenChainGraph compute node (compliance_mandate). 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-349-fedwire-structured-address-linter. Open at: https://ainumbers.co/chaingraph/art-350-fedwire-address-sweep.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: Batch-sweeps a Fedwire or CHIPS payment file (CSV, one record per row) through the Fedwire/CHIPS structured-address lint (lint_fedwire_structured_address, art-349) per record. Outputs: disambiguation, fedwire_chips_deadline, pii_note, regulatory_basis, rejection_risk_report, risk_score, table_source, table_version, fedwire_chips_deadline_status. Output schema: call describe_tool("sweep_fedwire_addresses").

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: as_of_date, file_content, records. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, idempotent, closed-world), and the description adds genuinely new behavior: transient non-retained processing, server-side vs browser delegation with a returned delegation URL, gpu:true always delegating, and an exported AP2 artifact carrying execution_hash for chain provenance. The caveat is that most of this is generic node boilerplate rather than sweep-specific 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?

The definition is not front-loaded: the purpose appears only after compute-binding, privacy, artifact, URL and a 64-character FV-status hash string, ending in a 'Summary:' label that should have been the opening line. Much of the preamble is identical node boilerplate that does not earn its place in a tool-specific description.

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?

For a nested-parameter, no-output-schema tool, the description compensates reasonably: it enumerates the output fields (disambiguation, fedwire_chips_deadline, rejection_risk_report, risk_score, table_version, etc.) and states lineage and consumption of art-349. The remaining gap is that it points to describe_tool("sweep_fedwire_addresses") for an output schema that the context signals say does not exist.

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%, so the four parameters are already documented structurally and baseline 3 applies. The description does add the useful framing that file_content is a CSV with one record per row and that policy_parameters drives a per-record decision, but it never disambiguates when to pass file_content versus the parsed records array, nor what as_of_date controls.

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 core sentence — 'Batch-sweeps a Fedwire or CHIPS payment file (CSV, one record per row) through the Fedwire/CHIPS structured-address lint (lint_fedwire_structured_address, art-349) per record' — names a specific verb, resource, input format and the sibling tool it builds on. It is, however, buried at the end of the description behind compute-node boilerplate, so an agent must read past a lot of noise to find it.

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?

'Use synthetic or anonymised inputs only' is a clear constraint, and the compute-mode guidance ('auto' vs 'browser') gives some operational context. But the description never explicitly says when to pick this over the single-record sibling lint_fedwire_structured_address; the batch-vs-single split is left to inference from 'per record'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_asc280_reportable_segmentASC 280 Reportable Segment TesterC
Read-onlyIdempotent
Inspect

ASC 280 Reportable Segment Tester: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-633-asc280-reportable-segment-tester.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: Applies the ASC 280-10-50-12 quantitative thresholds to one caller-declared candidate operating segment and computes the ASC 280-10-50-14 seventy-five percent coverage test. Outputs: is_reportable_by_quantitative_threshold, tests_met, tests_not_assessable, tests, coverage_75_pct, aggregation_criteria, unanswered_aggregation_criteria, management_judgment_required, aggregation_criteria_answered_count, aggregation_criteria_met_count, majority_of_criteria_met, reportable_segment_count, practical_limit_consideration_advised, threshold_pct, coverage_threshold_pct, comparison_basis, rounding_steps, oracle, regulatory_basis, note. Output schema: call describe_tool("test_asc280_reportable_segment").

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: segment_revenue_external, combined_revenue_all_reported_segments, segment_profit_or_loss, combined_profit_of_profitable_segments, combined_loss_of_loss_segments, segment_assets, combined_assets_all_segments, reportable_external_revenue, total_consolidated_revenue. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely new behaviour: transient server-side computation with no storage or logging, browser delegation for gpu:true nodes, and an AP2 artifact carrying execution_hash for provenance. It does not explain what the tool does with partially answerable inputs (the 'tests_not_assessable' / management-judgment path).

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?

Badly structured: 'OpenChainGraph compute node' is stated twice, a long FV-status URL and 64-character hash are inlined, and the actual purpose only appears after three sentences of infrastructure detail. The output enumeration is useful, but a large share of the text does not help an agent decide or invoke.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the returned fields (is_reportable_by_quantitative_threshold, coverage_75_pct, aggregation_criteria, management_judgment_required, etc.) and pointing to describe_tool is a real contribution. But it never explains how those outputs should be interpreted or what regulatory_basis/note contain, which leaves part of a fairly complex nested-input tool under-described.

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%, including per-property descriptions and an explicit required-key list inside policy_parameters, so the schema does the heavy lifting. The description adds only the notion of a single 'caller-declared candidate operating segment' and does not explain how fields like combined_loss_of_loss_segments or the aggregation similarity booleans feed the tests.

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 'Summary' sentence gives a specific verb and resource: applies the ASC 280-10-50-12 quantitative thresholds to one caller-declared candidate operating segment and computes the 50-14 75% coverage test. That is far more specific than the title, though the real purpose is buried behind execution boilerplate and no sibling is named for contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the many other compliance tests in the sibling list, and no exclusions or prerequisites. The only constraints offered are operational ('compute' modes) and privacy ('Use synthetic or anonymised inputs only'), neither of which helps tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_bifsg_bias_thresholdsBIFSG Insurance Proxy Bias Threshold Test (Colorado SB 21-169)B
Read-onlyIdempotent
Inspect

BIFSG Insurance Proxy Bias Threshold Test (Colorado SB 21-169): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-240-assess-naic-ais-program-readiness. Open at: https://ainumbers.co/chaingraph/art-239-test-bifsg-bias-thresholds.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: Tests BIFSG proxy bias thresholds under Colorado SB 21-169 / Reg. Outputs: anchor_instruction, attestation_deadline, attestation_year, bias_detected, do_now, marginal_effect_flag, marginal_effect_pct, marginal_effect_threshold_pp, model_type, p_value, p_value_significant, p_value_threshold, pii_note, premium_flag, premium_per_1000_above_avg_pct, premium_threshold_pct, regulatory_basis, remediation_required, table_source, table_version, test_context, test_result. Output schema: call describe_tool("test_bifsg_bias_thresholds").

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: model_type, test_context. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-destructive annotations, the description adds real behavioral context: inputs are processed transiently and not stored, logged, or retained; synthetic/anonymised inputs only; an AP2 artifact with execution_hash is exported; and compute modes control server vs. browser execution. These are genuine additions not derivable from the annotation block.

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?

Most of the text is generic OpenChainGraph infrastructure boilerplate (kernel/compute binding, FV-status receipt file, offline verification) that repeats across many sibling tools, followed by a 23-field output list run inline as a paragraph. The actual purpose is buried and the structure is not front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, enumerating the return fields is useful compensation, and data-handling behavior is covered. However, the description never explains the decision logic — what thresholds are applied, what inputs produce what result, or what the regulatory basis field means — leaving the agent unclear on what the test actually decides.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates the compute-mode semantics (duplicating the schema) and notes model_type/test_context are required, but adds no threshold values, units, or guidance on what marginal_effect_pct or p_value inputs mean relative to the tested thresholds.

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 title and opening line name a specific verb and resource — testing BIFSG proxy bias thresholds under Colorado SB 21-169 — which distinguishes it from the many other test_* siblings (test_hoepa_high_cost, test_reg_w_affiliate_transactions, etc.). The purpose line is present but sits after generic compute-node framing rather than leading, so the agent must read past boilerplate to find it.

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?

There is no explicit when/when-not or named alternative. Usage is only implied: the 'compliance_mandate' tag and 'Output feeds: art-240-assess-naic-ais-program-readiness' hint at where this fits in a chain, but the agent must infer that this is the test to run for SB 21-169 BIFSG bias checks rather than any of the dozens of other tests.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_hedge_effectivenessHedge Effectiveness TestB
Read-onlyIdempotent
Inspect

Hedge Effectiveness Test: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-263-score-cash-forecast-accuracy. Open at: https://ainumbers.co/chaingraph/art-261-test-hedge-effectiveness.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: ASC 815-20-35 retrospective hedge effectiveness test. Outputs: anchor_surface, asc815_80_125_band, cumulative_hedged_change, cumulative_hedging_change, dollar_offset_effective, dollar_offset_ratio, effectiveness_reason, effectiveness_standard, hedge_ratio, ifrs9_hedge_ratio_passes, is_effective, method_applied, not_legal_advice, observation_count, ols_alpha, ols_beta, pii_note, r_squared, regression_effective, regulatory_basis, table_source, table_version. Output schema: call describe_tool("test_hedge_effectiveness").

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: effectiveness_standard, hedge_ratio, hedged_item_changes, hedging_instrument_changes, method. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, and the description adds real behavioral context beyond that: compute-mode dispatch (server vs browser delegation), transient processing with no storage/logging, and an AP2 artifact with execution_hash for chain provenance. Much of this is platform-wide boilerplate repeated across tools, but it materially informs what the agent will get back and how inputs are handled.

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?

The text opens with repeated platform boilerplate ('OpenChainGraph compute node' stated twice), buries the actual ASC 815-20-35 purpose at the end, and then dumps a 24-item output field list in one run-on enumeration. It is dense and poorly front-loaded; a reader must scan most of the paragraph to learn what the tool computes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the output fields is genuinely useful, and the description covers compute modes, transient data handling and provenance. However, it provides no meaning for the listed output fields (e.g. asc815_80_125_band, anchor_surface), no detail on the policy_parameters semantics, and no explanation of refusal/error behavior, leaving the agent to infer too much for a compliance computation.

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 compute modes, parent_hashes/parent_tool_ids and the required policy_parameters keys. The description reinforces the compute:'auto'/'browser' behavior but adds no interpretation of the policy_parameters fields (method, hedge_ratio, hedged_item_changes) or their expected formats beyond what the schema provides.

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 description eventually states a specific test: 'Summary: ASC 815-20-35 retrospective hedge effectiveness test', and lists domain-specific outputs such as dollar_offset_ratio, ols_beta, r_squared and ifrs9_hedge_ratio_passes. That is clear enough to distinguish it from most siblings, but the actual purpose is buried near the end behind platform metadata instead of being front-loaded.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a data-handling constraint ('Use synthetic or anonymised inputs only') and a downstream consumer ('Output feeds: art-263-score-cash-forecast-accuracy'), but it never states when to use this tool versus alternatives, nor any preconditions or exclusions. Usage is only inferable from the name and the summary line.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_hoepa_high_costHOEPA High-Cost Mortgage Trigger TestA
Read-onlyIdempotent
Inspect

HOEPA High-Cost Mortgage Trigger Test: OpenChainGraph compute node (compliance_mandate). 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-220-reg-z-threshold-lookup. Open at: https://ainumbers.co/chaingraph/art-234-test-hoepa-high-cost.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: Tests all three HOEPA high-cost mortgage triggers per Reg Z §1026.32(a)(1): (i) APR trigger (APOR+6.5pp first-lien, APOR+8.5pp subordinate or dwelling below $50k); (ii) points-and-fees trigger (5% of loan or $1,380 floor, 2026, FR 2025-22773); (iii) prepayment penalty trigger (>36 months or >2% o... Outputs: apor_pct, apr_pct, apr_spread_pct, apr_threshold_basis, apr_threshold_pct, apr_trigger_met, consumes, fr_citation, has_prepayment_penalty, is_high_cost, is_small_dwelling, lien_type, loan_amount, note, points_and_fees, points_fees_floor, points_fees_limit, points_fees_limit_pct, points_fees_trigger_met, pp_pct_limit, pp_period_limit_months, prepayment_penalty_pct, prepayment_penalty_period_months, prepayment_penalty_trigger_met, regulatory_basis, table_version, triggers_fired, year. Output schema: call describe_tool("test_hoepa_high_cost").

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: has_prepayment_penalty, is_small_dwelling, lien_type. Unknown keys are refused.

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish it as a read-only, idempotent, non-destructive computation, and the description adds real context beyond them: transient input processing with no storage/logging/retention, a 'use synthetic or anonymised inputs only' constraint, server-vs-browser compute semantics, and an exported AP2 artifact with execution_hash for provenance. These are exactly the behavioural facts an agent would not otherwise know.

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?

The actual purpose is buried behind duplicated boilerplate ('Deterministic OpenChainGraph compute node' appears twice), a raw FV-status hash URL, and a long undelimited dump of ~30 output names. The third trigger is cut off mid-sentence ('>2% o...'), so the structure actively loses information a reader needs.

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?

With no output schema, the description compensates by listing output fields and stating the AP2 artifact/execution_hash output and upstream chaining inputs. The one substantive gap is the truncated prepayment-penalty trigger explanation, which leaves a piece of the decision logic incomplete.

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; the description earns above that by explaining the regulatory meaning of the inputs — APOR+6.5pp for first liens, APOR+8.5pp for subordinate liens or dwellings below $50k, a 5% / $1,380 floor points-and-fees rule, and the >36-month or >2% prepayment penalty test. That grounds parameters like apr_pct, apor_pct, lien_type and is_small_dwelling in the decision logic, though the sentence is truncated mid-trigger.

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 description names a specific decision function — testing all three HOEPA high-cost mortgage triggers under Reg Z §1026.32(a)(1) — and enumerates them (APR/APOR spread, points-and-fees, prepayment penalty), which is far more than a restatement of the name. It doesn't explicitly distinguish itself from related siblings like classify_qm_apr_apor_spread or check_qm_points_and_fees, so sibling differentiation is only implicit in the 'all three triggers' framing.

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?

It notes an upstream dependency ('Consumes upstream artifacts from: art-220-reg-z-threshold-lookup'), which hints at where it sits in a chain. But there is no explicit statement of when to use this tool versus the single-trigger siblings, and no exclusions or prerequisites beyond the required policy_parameters keys.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_hpml_escrowHPML Definition and Escrow Requirement TestC
Read-onlyIdempotent
Inspect

HPML Definition and Escrow Requirement Test: OpenChainGraph compute node (compliance_mandate). 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-220-reg-z-threshold-lookup. Open at: https://ainumbers.co/chaingraph/art-235-test-hpml-escrow.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior3/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), and the description goes beyond them by disclosing transient input handling, a synthetic-input requirement, and AP2 artifact export with execution_hash. However, it never says what the result looks like (pass/fail, computed thresholds, escrow determination), so behavioral disclosure is partial rather than rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The compute-mode and privacy/artifact sentences earn their place, but 'OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.' is duplicated boilerplate, and the receipt-hash URL tail adds bulk without helping the agent invoke the tool. It is front-loaded with infrastructure rather than with the test's semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four parameters (one an unspecified open object), no required fields, and no output schema, the description carries the burden of explaining what is computed and returned — and it does not. The FV-status and artifact boilerplate is present, but an agent still cannot tell what inputs the HPML/escrow decision needs or what the outcome means.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is nominally 100%, but the central parameter, policy_parameters, is an open object whose schema literally says 'See the tool's manifest for field names' — the description does not fill that gap either, so an agent cannot construct a meaningful call from the definition alone. Only the compute-mode enum and parent-hash chaining are genuinely illuminated, and those come from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title names a specific compliance test ('HPML Definition and Escrow Requirement Test'), but the body spends almost no words on what the test actually evaluates (rate-spread vs APOR threshold, Reg Z 1026.35 escrow triggers). It also never distinguishes the tool from nearby siblings such as test_hoepa_high_cost, compute_escrow_analysis, or lookup_reg_z_thresholds, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage signal is a declared upstream dependency ('Consumes upstream artifacts from: art-220-reg-z-threshold-lookup'), which hints at call ordering but is not framed as guidance. There is no statement of when to choose this test versus the other threshold/escrow tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_nav_error_materialityTest NAV-Error MaterialityA
Read-onlyIdempotent
Inspect

Test NAV-Error Materiality: OpenChainGraph compute node (attestation_mandate). 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-373-recompute-fund-nav. Open at: https://ainumbers.co/chaingraph/art-374-test-nav-error-materiality.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: Compares an erroneous NAV-per-share against a corrected NAV-per-share against a DECLARED materiality policy (the industry half-cent absolute and 1% relative conventions, plus the fund's own policy taken as an input) using fixed-point BigInt money math throughout. Outputs: affected_period, declared_policy, error, estimated_impact, fence, fund_id, industry_convention, materiality_verdict, not_proven, regulatory_framework, reprocessing_need_indicated, shares_outstanding, structural_error, valuation_date. Output schema: call describe_tool("test_nav_error_materiality").

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: affected_period, corrected_nav_per_share, erroneous_nav_per_share, materiality_policy, shares_outstanding. Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only and idempotent annotations, the description discloses server-side versus browser compute behavior, transient input handling with no storage or logging, synthetic-input constraints, AP2 artifact export with execution_hash, and upstream artifact consumption. These are substantive behavioral traits that help an agent understand execution and data-handling implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and key computation are front-loaded, but the description is long and dense, mixing essential invocation details with FV-status snapshot text and a lengthy output list. The structure is usable, but several parts could be trimmed without losing selection or invocation value.

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?

There is no output schema, but the description compensates by listing the returned fields and explaining the materiality comparison, compute behavior, provenance export, and upstream dependency. For a complex deterministic compute node, this gives an agent enough context to invoke it 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 description coverage is 100%, so the input schema already defines compute, parent_hashes, parent_tool_ids, and policy_parameters in detail. The description adds some context around compute modes and provenance, but it does not meaningfully expand parameter semantics beyond what the schema already states.

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 description states a specific operation: comparing erroneous and corrected NAV-per-share against declared materiality policy using fixed-point math. It is clear what the tool computes and what outputs it produces, but it does not explicitly differentiate itself from closely related siblings such as compile_nav_error_evidence_pack or recompute_fund_nav.

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 description implies usage by saying it consumes upstream artifacts from art-373-recompute-fund-nav and by warning to use synthetic or anonymised inputs only. It also explains compute modes, but it does not explicitly say when to choose this tool over related alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_reg_w_affiliate_transactionsReg W Affiliate Transaction TesterB
Read-onlyIdempotent
Inspect

Reg W Affiliate Transaction Tester: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-536-reg-w-affiliate-transaction-tester.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: Tests each caller-declared covered transaction with an affiliate against the Regulation W (12 CFR 223) quantitative limits: the 10% single-affiliate and 20% aggregate-affiliate capital limits, and a collateral-coverage percentage requirement on covered credit transactions. Outputs: aggregate_test, collateral_tests, decision, execution_state, market_terms_declarations, policy_vintage, reason, single_affiliate_tests. Output schema: call describe_tool("test_reg_w_affiliate_transactions").

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: aggregate_affiliate_limit_pct, capital_base, collateral_coverage_required_pct, policy_vintage, single_affiliate_limit_pct, transactions. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive safety, but the description adds substantial beyond them: server-vs-browser compute delegation, transient non-stored/non-logged processing, and export of an AP2 artifact with execution_hash for provenance. These are real behavioral traits not in the schema or annotations. Slightly verbose with FV-status/receipt boilerplate, keeping it from 5.

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?

Front-loading is poor: it opens with compute-node infrastructure, URL, a long hash, and FV-status receipt text before reaching the actual domain purpose under 'Summary'. Much of the content (URL, offline-receipt disclaimer) does not help an agent select or invoke the tool. It is verbose and the most useful sentence is last.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex nested-parameter tool with no output schema, the description does list output field names and routes the agent to describe_tool for the output schema, and it explains compute modes. However it gives no detail on the shape of the transactions array or capital_base values, leaving structural gaps. Adequate but with clear holes.

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 baseline is 3; the schema already documents compute, parent_hashes/parent_tool_ids, and the nested policy_parameters required keys. The description adds only marginal input meaning ('caller-declared covered transaction' linking to the transactions array) and spends words on outputs instead. Appropriate baseline for a fully-described schema.

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 Summary states a specific verb and resource: tests each caller-declared covered transaction against specific Reg W (12 CFR 223) limits (10% single-affiliate, 20% aggregate-affiliate, collateral-coverage %). This is far more specific than the name. It does not explicitly differentiate itself from the many sibling test_* tools (e.g., test_hoepa_high_cost), so 4 rather than 5. Also the actual purpose is buried at the very end after infra boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus alternatives, no prerequisites, and no exclusions relative to the many sibling test_* tools. The only usage-adjacent statements ('use synthetic or anonymised inputs only', compute modes) constrain how to run it, not when/why to select it. Implied domain (Reg W compliance testing) is inferable but not stated as selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_fatca_crs_ro_remediation_closureFATCA/CRS RO Remediation Closure TrackerB
Read-onlyIdempotent
Inspect

FATCA/CRS RO Remediation Closure Tracker: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-491-ro-remediation-closure.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: Tracks the returned notification set for a FATCA/CRS certification period (ICMM-style error notifications, CRS status messages) against the firm's own remediation records: per-notification open/closed/overdue status, resubmission linkage naming which corrected DocRefId closes which notification,... Outputs: certification_period, closed_count, closure_coverage_pct, cutoff_at, determinations, evaluated_at, note, notification_count, open_count, overdue_count, readiness_verdict. Output schema: call describe_tool("track_fatca_crs_ro_remediation_closure").

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: certification_period, cutoff_at, evaluated_at, notifications, remediation_records. Unknown keys are refused.

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing deterministic computation, server-side vs browser delegation for compute modes, transient processing with no storage/logging, and the export of an AP2 artifact carrying execution_hash for provenance. Annotations already cover read-only/idempotent safety, so this added execution-model detail is genuine value, though much of the wording is node-framework boilerplate rather than tool-specific.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is not front-loaded: the reader wades through compute-binding and FV-status/hash material before reaching the one useful sentence. The description is also truncated mid-clause ('...which corrected DocRefId closes which notification,...'), so content that should inform the caller is missing rather than merely verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It does enumerate the output fields (closure_coverage_pct, overdue_count, readiness_verdict, etc.) in the absence of an output schema, which is helpful, and it names the five required policy parameters. What it fails to convey is the structure/semantics of notifications and remediation_records and how the closure or overdue determination is actually made — the core of the tool's logic.

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 compute, parent_hashes, parent_tool_ids and policy_parameters, and the description adds no detail on the shapes of the nested notifications or remediation_records arrays that carry the actual decision logic. Baseline 3 applies since the schema does the heavy lifting.

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 'Summary:' clause states a specific verb and resource: tracks a returned FATCA/CRS notification set against the firm's remediation records, with per-notification open/closed/overdue status and resubmission linkage. That is clear enough to select the tool, but it is buried behind generic 'OpenChainGraph compute node (attestation_mandate)' framing and gives no explicit contrast with siblings such as check_fatca_crs_submission_conformance or register_mra_remediation_closure.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Nothing states when to use this versus the related conformance-check or remediation-registration tools. The only usage-like instruction is 'Use synthetic or anonymised inputs only', which is a data-handling constraint, not task guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_globe_transition_deferred_taxGloBE Article 9.1 Transition Deferred Tax TrackerB
Read-onlyIdempotent
Inspect

GloBE Article 9.1 Transition Deferred Tax Tracker: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-636-globe-transition-deferred-tax-tracker.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: Recomputes the OECD GloBE Article 9.1 transition recast of pre-regime deferred tax attributes for one jurisdiction, item by item over a bounded array, and reports the jurisdictional roll-forward total. Outputs: constants_version, minimum_rate, cutoff_date, transition_year_start_date, exclusion_rules, canonical_order, items, item_count, items_excluded, items_capped, items_uplifted, items_in_error, items_manual_review, jurisdictional_roll_forward_total, total_is_complete, error_code, note, rounding_steps. Output schema: call describe_tool("track_globe_transition_deferred_tax").

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: minimum_rate, cutoff_date, exclusion_rules, items. Unknown keys are refused.

TDQS

B3.2/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, closed-world, non-destructive), and the description goes meaningfully beyond them: server-side execution on Cloudflare Workers vs. a browser delegation URL, gpu:true always delegating, transient input processing with no storage or logging, and an AP2 artifact with execution_hash for chain provenance. This is exactly the kind of execution-model context the annotations cannot express.

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?

Badly front-loaded: the operational summary sits after ~120 words of node metadata, privacy notice, and a 64-hex FV-status receipt URL. There is also duplication ("OpenChainGraph compute node" appears twice; the output field list is enumerated and then deferred to describe_tool), which is dead weight in a definition this long.

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?

For a nested-object, deterministic tax computation with no output schema, the description supplies what an agent needs: the computation's scope (one jurisdiction, bounded item array), the required policy inputs, the full output field list including error and completeness flags, and the provenance artifact. Only the routing decision against sibling GloBE tools is left unaddressed.

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 compute mode, parent_hashes/parent_tool_ids chaining, and the required policy_parameters keys with unknown-key rejection. The description restates the compute modes and lists output fields rather than deepening any parameter meaning, so it neither adds nor misleads. Baseline 3 is the correct ceiling here.

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 summary sentence names a specific verb and resource: recompute the OECD GloBE Article 9.1 transition recast of pre-regime deferred tax attributes for one jurisdiction, with a bounded item array and a jurisdictional roll-forward total. That is specific enough to separate it from sibling compute_globe_jurisdictional_etr or compute_globe_topup_tax, though it never names those alternatives explicitly. The problem is placement: roughly half the text is platform boilerplate before the actual purpose appears.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is input hygiene ("Use synthetic or anonymised inputs only") and compute-mode behaviour, neither of which tells an agent when to pick this over the many other GloBE/Pillar Two compute tools in the sibling list. There are no when-not-to-use conditions and no named alternatives for the adjacent cases (ETR, top-up tax, SBIE, de minimis).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_ifrs17_loss_component_rollforwardIFRS 17 Loss Component Roll-Forward TrackerB
Read-onlyIdempotent
Inspect

IFRS 17 Loss Component Roll-Forward Tracker: OpenChainGraph compute node (compliance_mandate). 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-178-ifrs17-csm-rollforward-validator. Open at: https://ainumbers.co/chaingraph/art-448-ifrs17-loss-component-tracker.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: Tracks the IFRS 17 para 50 loss-component roll-forward across periods: opening balance, additional loss recognised on new onerous contracts, reversal from subsequent favourable experience (capped so it never reverses more than the available balance), other adjustments, and release to profit or lo... Outputs: additional_lc, closing_lc, fully_reversed, lc_valid, opening_lc, other_adj, pre_release, release_to_pnl, reversal_lc. Output schema: call describe_tool("track_ifrs17_loss_component_rollforward").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered; the description adds real context beyond that: server-side vs browser delegation via compute modes, transient non-retained processing with a synthetic-input restriction, AP2 artifact emission with execution_hash for chain provenance, and the rule that reversal is capped at the available balance and lc_valid/fully_reversed are reported. Some of this duplicates the compute parameter schema and the convention text.

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?

The genuinely useful content (the roll-forward summary and output list) is preceded by several sentences of platform boilerplate, a URL, and a long FV-status hash path, and the summary itself is truncated mid-sentence. Front-loading is poor: an agent must read past infrastructure text to learn what the tool computes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compute node taking a nested policy_parameters object with no output schema, the description does list all nine outputs and sketches the roll-forward arithmetic, but the parameter-level detail is truncated and the chain-provenance wiring (parent_hashes/parent_tool_ids pairing) is left to the schema. Adequate but with a clear hole where the calculation inputs should be.

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 compute, parent_hashes, parent_tool_ids and policy_parameters; the description adds only the conceptual meaning of the loss_component inputs (opening balance, additional loss, capped reversal) and never names the actual policy_parameters keys. 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?

The Summary sentence names a specific verb and resource: it tracks the IFRS 17 para 50 loss-component roll-forward across periods, enumerating opening balance, additional loss on onerous contracts, capped reversal, other adjustments, and release to P&L. That is far more specific than the name alone, though the statement is buried under ChainGraph boilerplate and is cut off mid-word ('release to profit or lo...'), and no sibling (e.g. validate_ifrs17_csm_rollforward, reconcile_sii_ifrs17) is named for contrast.

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?

There is no explicit when-to-use / when-not-to-use guidance and no contrast with the IFRS 17 siblings. The only usable routing signal is 'Consumes upstream artifacts from: art-178-ifrs17-csm-rollforward-validator', which implies it should follow the CSM roll-forward validation step but leaves the agent to infer that sequencing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_a2a_agent_cardA2A Agent Card Validator & Extension CheckerA
Read-onlyIdempotent
Inspect

Validate an A2A agent-card.json against the v1.0 shape, check signatures, and confirm extension declarations. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("validate_a2a_agent_card").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds genuinely new context: the tool renders a widget, runs client-side, applies inputs via the AIN Bridge, and guarantees zero PII / zero network. That execution and privacy profile is exactly the kind of context annotations cannot convey.

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?

Three sentences, purpose front-loaded, then execution behavior, then a pointer to describe_tool for the output schema. The describe_tool instruction is slightly meta but earns its place by compensating for the missing output schema.

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?

For a one-optional-parameter, no-output-schema tool, the description covers purpose, execution environment, privacy guarantees, and how to obtain the output shape. What remains missing is sibling differentiation, which is the only notable gap.

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 'inputs' parameter is documented as a map of element IDs to values. The description adds only a light note that inputs are applied via AIN Bridge prefill, which does not meaningfully extend the schema's own wording. Baseline 3 is appropriate.

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 description names a specific verb and resource (validate an A2A agent-card.json) and enumerates three concrete checks: v1.0 shape, signatures, and extension declarations. It is clear what the tool does, but it never distinguishes itself from close siblings like verify_a2a_agent_card or validate_signature_agent_card.

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 by the purpose statement; there is no explicit when-to-use or when-not guidance and no mention of the near-duplicate siblings (verify_a2a_agent_card, validate_signature_agent_card, validate_a2a_trust_chain). An agent cannot tell from this description which of those to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_a2a_trust_chainA2A Agent-Card Trust-Chain ValidatorB
Read-onlyIdempotent
Inspect

A2A Agent-Card Trust-Chain Validator: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2026-08 (A2A at Linux Foundation (150+ orgs); EU AI Act dates re-set by the Digital Omnibus on AI, Regulation (EU) 2026/1744 (in force 27 Jul 2026): Chapter III high-risk regime (Sections 1-3) applies 2 Dec 2027 for Art. 6(2)/Annex III systems and 2 Aug 2028 for Art. 6(1)/Annex I systems; Art. 50(2) synthetic-content marking for systems placed on the market before 2 Aug 2026 applies by 2 Dec 2026 (amended Art. 111(4)); new Art. 5(1) points (ba)/(bb) prohibitions likewise apply from 2 Dec 2026. These push agent KYA toward requirement.). 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-04-agent-identity-attestation-checker. Output feeds: art-04-agent-identity-attestation-checker, art-02-agent-spend-policy-simulator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-32-a2a-agent-card-trust-chain-validator.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: The horizontal agent-to-agent trust complement. Outputs: card_schema_ok, checks, fail_count, no_expired_links, no_scope_escalation, pass_count, signature_block_present, trust_determination, warn_count. Output schema: call describe_tool("validate_a2a_trust_chain").

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: agent_card, delegation_chain, spend_policy. Unknown keys are refused.

TDQS

B3.2/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), so the description adds real value beyond them: it discloses compute binding behavior (auto/server/browser, gpu:true always delegates), that inputs are processed transiently and not stored or logged, and that an AP2 artifact with execution_hash is exported. What is missing is any statement of failure semantics (what happens on an invalid chain) or the meaning of trust_determination.

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?

The description opens with a long block of regulatory deadline dates (Digital Omnibus, Article 5(1)(ba)/(bb), amended Art. 111(4)) that are irrelevant to selecting or invoking the tool, buried before any operational information. The provenance and FV-status URLs are also verbose. The genuinely useful parts (compute modes, privacy, outputs) appear late and mixed with filler.

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?

For a 4-parameter tool with a nested policy_parameters object and no output schema, the description supplies a lot: compute-mode semantics, privacy handling, artifact/chain provenance, and an enumerated list of output fields (card_schema_ok, no_scope_escalation, trust_determination, etc.) with a pointer to describe_tool for the full schema. The remaining gap is that it never explains what a passing versus failing trust chain means.

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 the description largely restates the compute parameter already documented in the schema. It does add some meaning by naming the upstream artifact type that parent_hashes are drawn from, but policy_parameters (agent_card, delegation_chain, spend_policy) is not explained in the description at all. Baseline 3 applies when the schema carries the parameter burden.

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 header and closing line ('The horizontal agent-to-agent trust complement') make clear this validates an A2A agent-card trust chain, a specific verb+resource. However, the crowded sibling set (validate_a2a_agent_card, verify_a2a_agent_card, validate_signature_agent_card) is never addressed, so the agent cannot tell from the description which of these it should pick. The purpose is stated but not distinguished.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this versus validate_a2a_agent_card or verify_a2a_agent_card. The regulatory deadline text ('2026-08', EU AI Act dates) signals urgency but not a selection condition. The 'Consumes upstream artifacts from / Output feeds' lines hint at pipeline position but give no explicit when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_a2a_x402_mandateA2A x402-Extension Mandate ValidatorC
Read-onlyIdempotent
Inspect

A2A x402-Extension Mandate Validator: OpenChainGraph compute node (settlement_mandate). 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-03-x402-settlement-modeler. Output feeds: art-30-agent-commerce-conformance-validator, cry-05-agent-action-audit-trail-aggregator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-31-a2a-x402-extension-mandate-validator.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: Validates the A2A x402 extension (Coinbase/MetaMask/Ethereum Foundation) that carries crypto-payment authority inside an AP2 mandate: extension declaration in the A2A agent card, payment-authority scope, settlement-rail binding, exact-scheme x402 PaymentPayload lint, and mandate-to-payment-leg co... Outputs: checks, extension_declared, fail_count, pass_count, payment_authority_scope_present, settlement_rail_bound, verdict, warn_count. Output schema: call describe_tool("validate_a2a_x402_mandate").

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: agent_card, mandate_cap, payment_payload. Unknown keys are refused.

TDQS

C2.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/idempotent-safe, but the description adds real behavior the agent could not infer: inputs are processed transiently and not stored or logged, compute is deterministic, an AP2 artifact with execution_hash is exported as a side effect, and parent_hashes chaining is applied to the export. That side-effect disclosure (a read-only validator that still emits provenance artifacts) is exactly the kind of thing annotations cannot convey.

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?

The definition is badly front-loaded: roughly 200 words of reusable compute-node boilerplate precede the one paragraph that actually says what the tool does, and that paragraph is truncated mid-word. The output-field list and a bare URL/fv-status hash further dilute the signal an agent needs at selection time.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Return fields are enumerated (checks, verdict, pass_count/fail_count, extension_declared, settlement_rail_bound, payment_authority_scope_present) and a describe_tool pointer is given, which offsets the missing output schema. However, for a validator taking three nested, undocumented object payloads, the description supplies no shape or provenance expectations for those inputs, and no failure-mode guidance, leaving the calling contract under-specified.

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 compute enum is fully self-documented, so the baseline is 3. The description adds marginal value by tying execution_hash/parent chaining to the export, but it never explains the three nested policy_parameters payloads (agent_card, mandate_cap, payment_payload), which are undocumented objects in the schema and the genuine source of ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The actual purpose — validating the A2A x402 extension inside an AP2 mandate (agent-card declaration, payment-authority scope, settlement-rail binding, PaymentPayload lint) — is specific and concrete, but it appears only in a 'Summary:' clause after several paragraphs of compute-node boilerplate, and it is cut off mid-sentence ('mandate-to-payment-leg co...'). Nothing distinguishes it from near siblings such as validate_a2a_agent_card, validate_ap2_mandate_chain, or verify_kya_x402_scope, so the agent must infer the split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to reach for this validator versus the many adjacent x402/AP2/A2A validators, nor what inputs must be prepared first beyond the upstream artifact id. The only usage-adjacent instruction is 'Use synthetic or anonymised inputs only', which is a data-handling caveat rather than selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_acp_checkoutACP Checkout Conformance ValidatorA
Read-onlyIdempotent
Inspect

ACP Checkout Conformance Validator: OpenChainGraph compute node (payment_mandate). 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-564-ucp-checkout-payload-lint. Output feeds: art-01-ap2-mandate-chain-validator, art-03-x402-settlement-modeler, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-12-acp-checkout-conformance-validator.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: OpenAI/Stripe Agentic Commerce Protocol (ACP): CheckoutRequest/Response field conformance (10 required fields each), Shared Payment Token structure, ISO 4217 currency, TTL, signature prefix validation. Outputs: checks, currency, fail_count, merchant_id, overall_status, pass_count, warn_count. Output schema: call describe_tool("validate_acp_checkout").

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: payload. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, but the description adds real behavioural context beyond them: transient processing with no storage/logging/retention, the synthetic-input restriction, and an exported AP2 artifact carrying execution_hash for provenance. The compute-mode and browser-delegation explanation largely restates the schema's compute parameter rather than adding new information.

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?

The description opens with duplicated boilerplate ('OpenChainGraph compute node' stated twice in consecutive sentences), a marketing URL, and an inline FV-status hash receipt before ever saying what the tool validates. The purpose-bearing Summary is the last paragraph, so the text is badly back-loaded and padded for an agent's selection decision.

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?

With no output schema, the description compensates by naming the return fields (checks, currency, fail_count, merchant_id, overall_status, pass_count, warn_count) and by placing the tool in its provenance chain via upstream and downstream artifact IDs. It also defers deeper schema inspection to describe_tool, which is reasonable. Remaining gap is the absence of any routing guidance against similar validators.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters (including 'Required: payload' and 'Unknown keys are refused'). The description adds essentially nothing about parameter meaning beyond restating compute modes, so the baseline of 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?

The Summary names a specific verb and resource: ACP CheckoutRequest/Response field conformance, Shared Payment Token structure, ISO 4217 currency, TTL, and signature prefix validation. An agent can tell what is checked, but the description never distinguishes it from near-neighbours like lint_ucp_checkout_payload, audit_acp_ucp_product_feed, or validate_agent_commerce_conformance. The actual purpose is also buried after three sentences of compute-node boilerplate.

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 the 'Consumes upstream artifacts from' and 'Output feeds' lists, which hint at chain position but never state when to pick this tool over the sibling linters. There are no explicit when-to-use or when-not-to-use statements. 'Use synthetic or anonymised inputs only' is the one concrete usage constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_adverse_action_noticeValidate Adverse Action NoticeA
Read-onlyIdempotent
Inspect

Validate Adverse Action Notice: OpenChainGraph compute node (compliance_mandate). 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-228-build-adverse-action-notice. Open at: https://ainumbers.co/chaingraph/art-227-validate-adverse-action-notice.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: Validates an adverse action notice against Reg B §1002.9 completeness requirements: reason count (max 4), prohibited vague reason codes (CFPB Circulars 2022-03/2023-03), required content fields (creditor name, date, statement of rights), and FCRA §615(a) rights disclosure when a credit score was... Outputs: action_taken, compliance_score, compliant, credit_score_used, fcra_required, fcra_violations, pii_note, reason_count, reason_count_valid, regulatory_basis, table_source, table_version, violation_count, violations, warning_count, warnings. Output schema: call describe_tool("validate_adverse_action_notice").

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: action_taken, credit_score_used, notice_includes_action_taken, notice_includes_credit_bureau_info, notice_includes_creditor_name, notice_includes_date, notice_includes_dispute_right, notice_includes_fcra_rights, notice_includes_right_to_copy, reason_code_source, reasons. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and non-destructive, but the description adds substantial context beyond them: server-vs-browser compute routing for gpu:false vs gpu:true nodes, transient processing with no storage or logging, an exported AP2 artifact carrying execution_hash for chain provenance, consumption of upstream artifact art-228, and an offline-verifiable FV-status receipt. This is exactly the kind of operational context annotations cannot carry.

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?

Roughly three quarters of the text is reusable compute-node boilerplate; the one genuinely differentiating sentence about Reg B validation is placed last and cut off mid-clause ('when a credit score was...'). The output field list is a raw enumeration, and the trailing 'call describe_tool(...)' line is dead weight when the outputs are already listed.

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?

With no output schema, the description usefully enumerates outputs (compliance_score, violations, fcra_violations, reason_count_valid, pii_note, regulatory_basis, table_version) and covers data handling, provenance and compute routing. What remains missing is interpretation of results (how compliant/violations should be read) and the truncated end of the validation summary.

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 top-level compute, parent_hashes, parent_tool_ids and policy_parameters fields are already documented. The description does add conceptual meaning to some policy_parameters (reason count capped at 4, prohibited vague codes, required creditor name/date/rights fields), but the nested properties themselves have empty schemas, and the description never systematically maps its listed checks to the eleven keys. Baseline 3 is warranted.

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 summary states a specific verb and resource with concrete scope: validating an adverse action notice against Reg B §1002.9 completeness requirements, naming the exact checks (reason count max 4, vague reason codes, required content fields, FCRA §615(a)). It is clearly separable from build_adverse_action_notice, which it names only obliquely via 'Consumes upstream artifacts from'. The purpose sentence is buried after generic compute-node framing rather than front-loaded.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternative named. The closest thing to guidance is 'Use synthetic or anonymised inputs only', which is an input-handling constraint, not usage selection. An agent must infer from the checks listed that this is a pre-send validation step, and must independently figure out that build_adverse_action_notice is the construction counterpart.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_agent_audit_trailAgent Audit Trail Conformance Validator (IETF AAT)B
Read-onlyIdempotent
Inspect

Agent Audit Trail Conformance Validator (IETF AAT): OpenChainGraph compute node (compliance_mandate). 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-236-build-ai-decision-log-record. Open at: https://ainumbers.co/chaingraph/art-237-validate-agent-audit-trail.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: Validates agent audit trail records against IETF draft-sharif-agent-audit-trail-00 (AAT, expires Sept 2026). Outputs: aat_completeness_score, aat_required_fields_present, action_class, action_detail, agent_identity, alignment_note, chain_position, conformance_result, ecdsa_present, outcome, record_id, regulatory_basis, sha256_chain_format_valid, sha256_prev_record, table_version, trust_level, validation_errors, validation_warnings. Output schema: call describe_tool("validate_agent_audit_trail").

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: action_class, action_detail, agent_identity, ecdsa_present, outcome, record_id, sha256_prev_record, trust_level. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly/idempotent/non-destructive), and the description adds substantive behaviour beyond them: transient no-retention processing, deterministic server-side compute with a browser-delegation fallback, AP2 artifact export with execution_hash for chain provenance, and the snapshot semantics of the FV-status receipt. This is genuine added context, though the compute-mode detail largely duplicates the schema.

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?

The purpose is not front-loaded; 'OpenChainGraph compute node' is repeated verbatim, compute-mode behaviour is explained twice (description and schema), a URL and offline-verification receipt narrative are included, and 19 output field names are dumped as a list. Several sentences do not earn their place given structured coverage elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-parameter compute node with no output schema, the description does enumerate the outputs and cover privacy, provenance and pipeline position. It still leaves the agent guessing about the actual decision logic, what conformance_result values mean, and how it differs from the sibling completeness validator.

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 compute, parent_hashes, parent_tool_ids and the nested policy_parameters (including its required keys). The description adds nothing parameter-specific beyond repeating the compute modes, 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?

The description does state a specific verb+resource+standard: 'Validates agent audit trail records against IETF draft-sharif-agent-audit-trail-00 (AAT, expires Sept 2026)'. However that sentence is buried under compute-infrastructure boilerplate, and it never distinguishes itself from the near-identical sibling validate_audit_trail_completeness.

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?

It gives real usage constraints ('Use synthetic or anonymised inputs only') and positions the tool in a pipeline ('Consumes upstream artifacts from: art-236-build-ai-decision-log-record'), so the context is implied. But there is no explicit when-to-use versus validate_audit_trail_completeness or the other validate_* audit tools, which an agent will need here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_agent_commerce_conformanceAgent Commerce Cross-Protocol Conformance ValidatorC
Read-onlyIdempotent
Inspect

Agent Commerce Cross-Protocol Conformance Validator: OpenChainGraph compute node (payment_mandate). 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-03-x402-settlement-modeler, art-12-acp-checkout-conformance-validator, art-62-ap2-payment-receipt-verifier. Output feeds: cry-05-agent-action-audit-trail-aggregator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-30-agent-commerce-conformance-validator.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: The synergy flagship. Outputs: checks, fail_count, overall_status, pass_count, protocols_validated, warn_count. Output schema: call describe_tool("validate_agent_commerce_conformance").

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: acp_payload, ap2_mandate_trio, mpp_session, tap_headers, x402_payload. Unknown keys are refused.

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so safety behavior is covered. The description adds useful operational context: server-side versus browser compute modes, transient processing with no storage or logging, and artifact export with execution_hash for provenance. It still omits core validation behavior, such as what happens on failures or what the checks represent.

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?

The description is cluttered with infrastructure boilerplate, an external URL, FV-status JSON hash details, and the unhelpful 'The synergy flagship' summary. The core validation purpose is not front-loaded, and several sentences do not help an agent decide or call the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex validator with nested policy payloads and no output schema, yet the description only lists output field names without explaining their meaning, pass/fail criteria, or failure handling. It also tells the agent to call describe_tool for the output schema, which leaves the definition incomplete for invocation planning.

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 explains compute, parent_hashes, parent_tool_ids, and the nested policy_parameters. The description largely restates the compute-mode semantics and adds provenance context, but does not clarify the required policy payloads or how parent hashes should be supplied. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name and title establish that this is a cross-protocol conformance validator for agent commerce, and the description adds that it is a payment_mandate compute node. However, it never states in prose what exactly is validated, which protocols are checked, or how this differs from sibling validators such as validate_acp_checkout or validate_ap2_mandate_chain. The bullet list of outputs helps only indirectly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists upstream artifacts consumed and downstream tools fed, which gives some ecosystem context, but it provides no explicit guidance on when to use this validator versus alternatives in the large validate_* family. There are no exclusions, prerequisites, or decision rules for selecting this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_agent_obo_mandateAgent On-Behalf-Of (OBO) Mandate ValidatorA
Read-onlyIdempotent
Inspect

Agent On-Behalf-Of (OBO) Mandate Validator: OpenChainGraph compute node (compliance_mandate). 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-150-mcp-tool-scope-revocation-auditor. Output feeds: art-152-mcp-task-lifecycle-validator. Open at: https://ainumbers.co/chaingraph/art-151-agent-obo-mandate-validator.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: Validate an agent on-behalf-of (OBO) mandate: subject (the user being represented), bounded scope array, intent string, and a non-expired validity window (caller-supplied now_unix, no clock reads). Outputs: gaps, has_intent, has_scope, has_subject, not_expired, verdict. Output schema: call describe_tool("validate_agent_obo_mandate").

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". Unknown keys are refused.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavior: server-side versus browser execution, gpu:true delegation, transient non-stored inputs, AP2 artifact export with execution_hash, upstream artifact consumption, and caller-supplied now_unix with no clock reads. It does not contradict the read-only, idempotent, non-destructive annotations.

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?

The description is bloated with OpenChainGraph boilerplate, URLs, a long FV-status hash, and provenance details before the core summary appears. The key validation purpose is buried, so the text is not front-loaded and much of it does not help an agent quickly select or invoke the tool.

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?

For a tool with no output schema and a nested policy object, the description is fairly complete: it lists output fields, explains compute modes, and summarizes mandate inputs. It could go further on verdict values and gap semantics, but it provides enough context to call the tool 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 structured schema already documents the top-level parameters. The description adds meaningful semantics for the nested policy mandate by naming subject, bounded scope array, intent string, and now_unix, though it does not elaborate on parent_hashes or parent_tool_ids beyond the schema.

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?

The description clearly states the specific operation: validating an agent on-behalf-of (OBO) mandate, including the subject, bounded scope array, intent, and non-expired validity window. This is a specific verb+resource and is distinguishable from generic mandate or AP2 validation siblings.

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 description gives execution-mode guidance for compute auto/server/browser and says to use synthetic or anonymised inputs, which is useful. However, it does not state when to use this tool versus alternatives such as validate_ap2_mandate_credential, validate_ap2_mandate_chain, or authorize_payment_against_mandate, so routing guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_ai_impact_assessmentAI Risk Impact Assessment ValidatorA
Read-onlyIdempotent
Inspect

AI Risk Impact Assessment Validator: OpenChainGraph compute node (compliance_mandate). 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-171-iso42001-aims-clause-conformance. Output feeds: art-173-ai-system-governance-classifier. Open at: https://ainumbers.co/chaingraph/art-172-ai-risk-impact-assessment-validator.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: Validate ISO 42005-style AI impact-assessment completeness across seven required elements: intended use, affected stakeholders (>=1), risk treatment definition, monitoring plan, formal approval, risk category identification (>=1), and data source documentation. Outputs: complete, completeness_score, fields_checked, fields_passed, gaps. Output schema: call describe_tool("validate_ai_impact_assessment").

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". Unknown keys are refused.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive, but the description adds real traits beyond them: compute modes with browser delegation for gpu:true nodes, transient non-retained processing, the synthetic-input requirement, and an AP2 export with execution_hash. Only the FV-status receipt sentence is opaque boilerplate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core validation scope and the seven elements are clear and reasonably front-loaded, but the description is padded with node-metadata boilerplate, an FV-status hash path, and a raw URL that do not help an agent decide or invoke. The compute-mode paragraph largely repeats the enum documentation.

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?

With no output schema, the description appropriately names the return fields (complete, completeness_score, fields_checked, fields_passed, gaps), defines the input content via the seven elements, and covers provenance and data handling. An agent has enough to call it correctly; only the guidance on non-qualifying inputs 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?

Schema coverage is 100%, so the baseline is 3, but the description compensates for the opaque nested 'assessment' object by enumerating the seven elements it must contain (intended use, >=1 stakeholder, risk treatment, monitoring plan, approval, >=1 risk category, data source docs). That is genuine meaning the schema does not supply.

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 ('Validate ISO 42005-style AI impact-assessment completeness') and enumerates the seven required elements, so an agent can distinguish it from generic siblings like assess_iso42001_aims_conformance or assess_ai_act_conformity without opening 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?

Positions the tool in a pipeline, naming the upstream artifact it consumes (art-171-iso42001-aims-clause-conformance) and the downstream consumer (art-173-ai-system-governance-classifier), which tells the agent where it belongs. It never states when NOT to use it or names a sibling alternative for broader conformance checks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_ap2_mandate_chainAP2 Mandate-Chain ValidatorB
Read-onlyIdempotent
Inspect

AP2 Mandate-Chain Validator: OpenChainGraph compute node (payment_mandate). 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-02-agent-spend-policy-simulator, art-12-acp-checkout-conformance-validator, art-36-tempo-mpp-agent-mandate. Output feeds: art-02-agent-spend-policy-simulator, art-03-x402-settlement-modeler, art-04-agent-identity-attestation-checker, art-12-acp-checkout-conformance-validator, art-385-agent-token-scope-checker, art-62-ap2-payment-receipt-verifier, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-01-ap2-mandate-chain-validator.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: Validates AP2 v0.2 Intent→Cart→Payment mandate trio: signature-chain integrity, scope/limit consistency, TTL/expiry, over-spend detection, Human-Not-Present autonomous-agent flows. Outputs: validation_verdict, checks_run, failing_checks, warning_checks, mandate_ids, has_cart, human_not_present. Output schema: call describe_tool("validate_ap2_mandate_chain").

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: validate_at. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive, closed-world, so the description isn't required to restate safety. It genuinely adds behavior beyond that: server-vs-browser compute delegation, gpu:true always delegating, transient non-retained input processing, an exported AP2 artifact with execution_hash, and the upstream/downstream chaining contract. That is substantial disclosure the annotations do not carry.

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?

The definition is dominated by repeated boilerplate (OpenChainGraph node framing, FV-status URL, long artifact lists) and the actual purpose appears last under 'Summary.' For an agent choosing a tool, the decision-relevant content is not front-loaded and much of the text does not earn 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?

Given no output schema, the description still enumerates return fields (validation_verdict, checks_run, failing_checks, warning_checks, mandate_ids, has_cart, human_not_present) and explains chaining, compute mode, and privacy. An agent has enough to call it correctly; only the sibling routing 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 coverage is 100%, so compute, parent_hashes, parent_tool_ids and policy_parameters are already documented. The description reinforces chaining via 'Consumes upstream artifacts from…' and restates compute modes, but adds little syntax or format detail beyond the schema. Baseline 3 is appropriate.

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 Summary states a specific verb and resource: validates the AP2 v0.2 Intent→Cart→Payment mandate trio, naming the exact checks (signature-chain integrity, scope/limit consistency, TTL/expiry, over-spend, HNP flows). That is clear, but it is buried at the end and does not explicitly distinguish itself from close siblings such as validate_ap2_mandate_credential or verify_ap2_payment_receipt.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only real guidance is the input constraint 'Use synthetic or anonymised inputs only.' There is no when-to-use / when-not-to-use guidance and no routing to alternatives like validate_ap2_mandate_credential, build_ap2_cartmandate_hashchain, or authorize_payment_against_mandate, despite many near-neighbours in the catalog.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_ap2_mandate_credentialAP2/MCP Policy ValidatorC
Read-onlyIdempotent
Inspect

AP2/MCP Policy Validator: OpenChainGraph compute node (scheme_rule). 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-16-google-ap2-mandate-builder, art-27-agentic-readiness-diagnostic. Output feeds: art-18-mcp-developer-readiness-scorecard. Open at: https://ainumbers.co/chaingraph/art-17-ap2-mcp-policy-validator.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses genuinely useful behavior: deterministic execution, the auto/server/browser compute modes and GPU delegation rule, transient processing with no storage or logging, the synthetic-input constraint, and the execution_hash export for provenance. The offline-verifiable FV-status receipt also clarifies result trust. This is substantial context beyond readOnly/idempotent hints, though some of it (compute binding) duplicates the schema.

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?

The opening is front-loaded with the title restatement, but the body is padded with generic compute-node boilerplate, a raw URL, and a long hex FV-status path and hash. Much of the text is not specific to this tool and dilutes the few sentences that carry real information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description never explains what the validation result actually returns beyond 'exports an AP2 artifact with execution_hash'. For a validation/compute tool an agent needs to know what a pass/fail or policy decision looks like and what policy_parameters expect; that 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%, so the schema already documents all four parameters including the compute enum and parent_hashes/parent_tool_ids. The description's upstream-artifact mention loosely maps to the parent_* params but adds no format, ordering, or field-level detail beyond the schema. A baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description largely restates the title ("AP2/MCP Policy Validator: OpenChainGraph compute node") and then spends most of its length on compute-node infrastructure (Cloudflare Workers, GPU delegation). It never states in a verb+resource sentence what the tool actually validates or decides about a mandate credential, and it does nothing to distinguish itself from close siblings like validate_ap2_mandate_chain or validate_ap2_mcp_policy. The only real purpose signal is "Exports an AP2 artifact with execution_hash for chain provenance."

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names upstream producers (art-16 mandate-builder, art-27 diagnostic) and a downstream consumer (art-18 scorecard), which hints at chain position, but there is no explicit when-to-use, when-not-to-use, or which sibling to pick instead. An agent facing validate_ap2_mandate_chain vs validate_ap2_mcp_policy vs this tool gets no guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_ap2_mcp_policyAP2 MCP Policy Validator & BridgeA
Read-onlyIdempotent
Inspect

Validate AP2 Policy Mandate JSON payloads against the Unified Build Contract v1.0 schema. Auto-generates MCP tool definitions from the mandate and simulates agent ingestion of agent_instructions. Use when authoring or testing AP2 agentic payment policies. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("validate_ap2_mcp_policy").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A3.7/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 behavior, so the bar is lower. The description still adds real value beyond them: it renders as a widget, inputs are applied via the AIN Bridge prefill, and it runs entirely client-side with zero PII and zero network — material for an agent deciding whether calling is safe.

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?

Front-loads the core validate purpose, then layers usage, runtime behavior, and an output-schema pointer in a compact sequence with little waste. The widget/AIN Bridge sentence is dense but each clause contributes operational information.

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?

No output schema exists, but the description explicitly points to describe_tool("validate_ap2_mcp_policy") for the return shape, and annotations cover the safety profile. With zero required params and full schema coverage, the remaining gap is only the missing sibling disambiguation.

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?

There is a single optional `inputs` parameter at 100% schema description coverage, so the schema already documents the map semantics. The description adds only that inputs are applied via AIN Bridge prefill and points to the manifest input_schema, which is marginal beyond the structured data — 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 and resource: validate AP2 Policy Mandate JSON payloads against the Unified Build Contract v1.0 schema, plus it generates MCP tool definitions and simulates agent ingestion. The purpose is clear, but the description never distinguishes this tool from the many AP2 siblings (validate_ap2_mandate_chain, validate_ap2_mandate_credential, ap2_aml_mandate_builder), so an agent must infer the difference.

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?

'Use when authoring or testing AP2 agentic payment policies' gives an implied usage context. However, it offers no when-not guidance and does not route to or away from the several sibling AP2 validation tools, leaving disambiguation to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_audit_trail_completenessAudit-Trail Completeness AttestationB
Read-onlyIdempotent
Inspect

Audit-Trail Completeness Attestation: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-517-audit-trail-completeness.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: Attests that an audit log covering transactions and user activity is complete and gap-free over a caller-declared window, against a caller-declared continuity mechanism: sequence numbers, hash-chain links, or periodic control totals. Outputs: continuity_mechanism, continuity_verdict, event_counts_by_type, gap_count, gaps, known_gap_candidates_reconciled, privileged_action_coverage, regulatory_basis, retention_conformance, table_version, undecidable, window_end, window_start. Output schema: call describe_tool("validate_audit_trail_completeness").

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: chain_links, continuity_mechanism, declared_retention_period_days, gap_candidates, observed_event_counts_by_type, observed_sequence_numbers, periods, required_retention_period_days, sequence_end, sequence_start, window_end, window_start. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds real context on top: transient processing with no storage/logging/retention, browser delegation semantics, and an AP2 artifact carrying execution_hash for chain provenance. The offline-snapshot nature of the FV-status receipt is a useful disclosure. Minor tension: it 'exports an AP2 artifact' while annotations claim readOnly, though that reads as artifact emission rather than data mutation.

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?

The core purpose sits mid-document behind node-type boilerplate, a full URL, a hash-addressed FV-status path, and a compute-binding paragraph duplicated almost verbatim in the schema. The 15-item output enumeration and the describe_tool pointer pad the tail. Front-loading the 'attests that...' sentence would cut it in half.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compute node with no output schema, it does list the returned fields and redirects to describe_tool for the full contract, and it covers privacy and execution modes. However, a tool with 12 required nested policy_parameters and zero required top-level parameters leaves an agent guessing at the shape of the core decision inputs.

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 schema itself explains compute, parent_hashes, parent_tool_ids and the policy_parameters contract, so baseline 3 applies. The description adds some meaning by implying what the 12 required policy keys drive (window bounds, continuity mechanism, gap candidates, retention), but it does not explain any individual nested key, and its compute-mode paragraph largely restates the schema.

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 summary sentence names a specific verb and resource: attest that an audit log is complete and gap-free over a caller-declared window against a declared continuity mechanism (sequence numbers, hash-chain links, control totals). That is precise enough to act on, but it is buried after compute-binding boilerplate and never contrasts with adjacent tools like validate_agent_audit_trail or reconcile_aml_lookback_completeness.

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?

It gives input-handling guidance ('Use synthetic or anonymised inputs only') and conditional execution guidance for compute modes (auto/server/browser, gpu:true always delegating). What it never states is when to pick this attestation over the many neighbouring completeness/audit-trail validators, so the when-to-use decision is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_c2pa_manifestC2PA Content Credential Manifest ValidatorC
Read-onlyIdempotent
Inspect

C2PA Content Credential Manifest Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-124-content-credential-signature-verifier. Open at: https://ainumbers.co/chaingraph/art-123-c2pa-manifest-validator.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which already declare readOnly/idempotent/non-destructive), the description adds real operational context: compute:"auto" runs server-side on Workers for gpu:false kernels, compute:"browser" returns a delegation URL, gpu:true always delegates, inputs are transient and not retained, synthetic/anonymised inputs only, and an AP2 artifact with execution_hash is exported. That is meaningful behaviour an agent cannot infer 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dominated by boilerplate: 'Deterministic OpenChainGraph compute node' appears twice, followed by a long literal FV-status URL. The genuinely useful content (compute routing, no-retention, artifact export) is buried, and the actual purpose is never front-loaded at all.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists and the description never indicates what a validation result looks like — pass/fail, findings list, error codes — nor what manifest format/encoding is accepted. For a validator whose entire value is the verdict, that is a significant gap; privacy and provenance details are covered but the core contract is not.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters are all documented in the schema; the description's compute-mode sentences largely duplicate the schema wording. For the most consequential parameter, policy_parameters, it defers entirely ('See the tool's manifest for field names') rather than supplying any semantics, so it adds nothing over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the title ('C2PA Content Credential Manifest Validator') and then pivots entirely to platform metadata ('OpenChainGraph compute node (compliance_mandate)'). It never states what validating a C2PA manifest actually entails — what is checked, what input is expected, or how it differs from the many nearby credential/provenance siblings (verify_content_credential_signature, decode_c2pa_aiml_assertions, validate_content_binding_assertion, check_camera_provenance).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the sibling validators or decoders. The single routing hint ('Output feeds: art-124-content-credential-signature-verifier') describes an ordering in a chain, not a selection condition. An agent would have to guess among a dozen C2PA/content-credential-adjacent tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_canton_dvp_atomicityCanton DvP Atomicity ValidatorA
Read-onlyIdempotent
Inspect

Canton DvP Atomicity Validator: OpenChainGraph compute node (settlement_mandate). 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. Output feeds: 505-tokenized-collateral-eligibility-checker. Open at: https://ainumbers.co/tools/507-canton-dvp-atomicity-validator.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: Validate atomic DvP settlement on Canton — PFMI P12, finality model, unwind semantics. Outputs: verdict, atomicity_flag, finality_flag, herstatt_flag, compliance_flags, pacs008, execution_hash. Output schema: call describe_tool("validate_canton_dvp_atomicity").

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: trade_id, notional, atomicity, finality, platform. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behaviour, so the bar is lower, and the description still adds real context: server vs. browser compute delegation for gpu:true nodes, transient non-retention of inputs, and that an AP2 artifact with execution_hash is exported for chain provenance. The compute paragraph largely restates the schema's own `compute` description, but the privacy and artifact-export disclosures are genuine additions.

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?

The definition is bloated and badly ordered: 'OpenChainGraph compute node' appears twice in consecutive sentences, the purpose does not arrive until the 'Summary' line, and a full 64-character FV-status hash plus a marketing URL consume substantial space with no selection value. The compute-mode paragraph duplicates the schema. Real information is present but not front-loaded or trimmed.

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?

Because there is no output schema, the explicit output list (verdict, atomicity_flag, finality_flag, herstatt_flag, compliance_flags, pacs008, execution_hash) is genuinely necessary and provided. Privacy posture, compute routing, and chain provenance are all covered. What is missing is failure/error behaviour and the meaning of the flag values — the acronym 'herstatt_flag' is never explained.

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 `compute`, `parent_hashes`, `parent_tool_ids`, and the nested `policy_parameters` object with its required keys. The description repeats the compute-mode semantics almost verbatim and says nothing about how parent_hashes/parent_tool_ids pair up or what the policy_parameters values mean for the verdict, so it adds little beyond the schema. 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?

The Summary sentence gives a specific verb and resource tied to a domain standard: 'Validate atomic DvP settlement on Canton — PFMI P12, finality model, unwind semantics.' That distinguishes it from generic settlement checks. It does not, however, position itself against close siblings like validate_pvp_settlement, check_cash_leg_finality, or classify_settlement_finality, and the purpose sentence is buried mid-description rather than stated up front.

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 by the purpose and by the 'Output feeds: 505-tokenized-collateral-eligibility-checker' chain hint, which is a downstream pointer rather than a 'use this when' rule. The one real constraint given — 'Use synthetic or anonymised inputs only' — is a data-handling rule, not a selection rule. No exclusions or alternatives against the several other settlement-finality tools are offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_canton_party_allowlistCanton Party Allowlist ValidatorB
Read-onlyIdempotent
Inspect

Canton Party Allowlist Validator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/tools/509-canton-party-allowlist-validator.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: Screen parties against FATF Travel Rule requirements and AML/KYA checks for Canton Network onboarding. Outputs: party_results, portfolio_verdict, compliance_flags, iso20022_party_identification. Output schema: call describe_tool("validate_canton_party_allowlist").

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: parties. Unknown keys are refused.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavior: transient processing with no storage or logging, browser delegation under compute:"browser", and an exported AP2 artifact with execution_hash for provenance. That is real added value, though the FV-status hash and URL are more ceremony than decision-relevant context.

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?

The purpose is not front-loaded: the first two sentences are infrastructure boilerplate before the tool's actual function appears at the end. A full URL and a 64-character FV-status path consume significant space without helping the agent decide or invoke, though the output list and privacy note do earn their 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?

With 100% schema coverage and no output schema, the description does its share: it names the four output fields, discloses the compute/delegation model and data-handling posture, and explains the provenance artifact. It falls short only on how a party result or portfolio verdict should be interpreted and on the required 'parties' input, which is left to the schema.

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 compute, parent_hashes, parent_tool_ids and policy_parameters are all documented in the schema itself. The description largely restates the compute-mode semantics already spelled out in the enum description and adds no syntax or validation detail beyond it. 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?

The summary sentence ('Screen parties against FATF Travel Rule requirements and AML/KYA checks for Canton Network onboarding') states a specific verb and resource, and the outputs are enumerated. However, it is buried behind two sentences of compute-node boilerplate and does not distinguish it from close siblings like validate_tfr_travel_rule_batch, screen_sanctions_private, or ap2_aml_mandate_builder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus the many adjacent screening/validation tools (validate_tfr_travel_rule_batch, score_sanctions_screening_quality, check_screening_list_coverage). The only conditional guidance concerns compute modes, not tool selection, leaving the agent to guess from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_canton_selective_disclosureCanton Selective-Disclosure DvP Reconciliation AttestationA
Read-onlyIdempotent
Inspect

Canton Selective-Disclosure DvP Reconciliation Attestation: OpenChainGraph compute node (attestation_mandate). 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: 507-canton-dvp-atomicity-validator. Output feeds: cry-01-zk-compliance-proof-generator. Open at: https://ainumbers.co/chaingraph/art-108-canton-selective-disclosure.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: Attest that a Canton DvP privacy partition is sound: each counterparty sees only its leg, no cross-leg data leaks, and both views reconcile to one shared commitment. Outputs: bank_view_ok, cross_leak_fields, no_cross_leg_leak, partition_attestation, reconciles_to_commitment, registrar_view_ok, verdict. Output schema: call describe_tool("validate_canton_selective_disclosure").

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: dvp_structure. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description goes further: inputs are processed transiently and not stored, logged or retained; synthetic/anonymised inputs only; a browser delegation URL is returned instead of a result for compute:'browser' and for all gpu:true nodes; an AP2 artifact with execution_hash is exported. That delegation-side-effect disclosure is genuinely useful behavior an agent cannot infer from annotations. Minor deduction for the boilerplate FV-status receipt hash, which adds little operational value.

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?

The text is a flat concatenation of compute-runtime boilerplate, a raw FV-status URL with a 64-hex digest, a documentation link, and chain plumbing, with the actual purpose and outputs deferred to the end. The compute-mode paragraph duplicates the schema's own compute description verbatim in substance. Front-loading and information hierarchy are poor despite some high-value content.

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?

For a read-only attestation node with no output schema, the description enumerates the seven return fields and states the decision criteria, provenance/export behavior, data-retention posture, and chain neighbors. The remaining gap is the opaque policy_parameters.dvp_structure input shape, which an agent must resolve via the referenced tool call.

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 compute, parent_hashes and parent_tool_ids; the description largely restates the compute enum semantics. It adds no detail on the required nested field policy_parameters.dvp_structure, whose shape ('dvp_structure': {}) is left opaque in both places — the one parameter area where the description could have compensated.

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 'Summary' sentence gives a precise verb and resource ('Attest that a Canton DvP privacy partition is sound') plus the exact checks performed (each counterparty sees only its leg, no cross-leg leaks, views reconcile to one commitment). It also distinguishes itself from the sibling validate_canton_dvp_atomicity via the explicit upstream/downstream chain links. The only weakness is that this purpose statement arrives at the very end of a long block, after compute-node boilerplate.

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 implied through chain position ('Consumes upstream artifacts from: 507-canton-dvp-atomicity-validator. Output feeds: cry-01-zk-compliance-proof-generator'), which tells the agent where this sits in a pipeline but never states a when-to-use/when-not rule or names an alternative to prefer. Compute-mode guidance is present but is invocation mechanics, not selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_cat_bond_trigger_termsCat Bond Trigger Terms ValidatorB
Read-onlyIdempotent
Inspect

Cat Bond Trigger Terms Validator: OpenChainGraph compute node (compliance_mandate). 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-251-compute-parametric-trigger-payout. Open at: https://ainumbers.co/chaingraph/art-252-validate-cat-bond-trigger-terms.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: Validates catastrophe bond trigger term structure and computes layer arithmetic: attachment/exhaustion point ordering, pro-rata layer penetration factor, payout amount, and layer position (BELOW_ATTACHMENT / WITHIN_LAYER / ABOVE_EXHAUSTION). Outputs: attachment_breached, cascade_attachment_check, coverage_amount_used, excess_above_attachment, exhaustion_reached, implied_coverage, issues, layer_position, layer_width, not_legal_advice, payout_amount, pii_note, pro_rata_factor, regulatory_basis, table_source, table_version, terms_valid. Output schema: call describe_tool("validate_cat_bond_trigger_terms").

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: attachment_point, coverage_amount, exhaustion_point, pro_rata_enabled, reported_loss, second_loss_amount. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: compute:auto vs browser delegation semantics, gpu:true always delegating, transient non-stored processing, deterministic computation, and AP2 artifact export with execution_hash. It does not describe pagination or response format, but those are secondary here.

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?

The useful purpose statement is preceded by a long title restatement, compute-mode exposition, privacy boilerplate, and a very long FV-status URL with a hash that is irrelevant to invocation. The 'snapshot, not a subscription; this receipt verifies offline' sentence does not help an agent select or invoke the tool. Structure is bloated and front-loading is poor.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a complex nested-parameter financial computation with no output schema, the definition lists output field names and explains the layer-position states, which helps. However, it omits clear selection guidance against sibling tools and does not explain the policy_parameters' attachment/exhaustion ordering rules beyond naming them. It is adequate but incomplete for the tool's complexity.

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 compute, parent_hashes, parent_tool_ids, and the nested policy_parameters required keys. The description adds some meaning by naming the computed outputs and upstream artifact chaining, but it does not clarify the individual policy_parameters semantics beyond what the schema provides. Baseline 3 is appropriate.

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 summary states a specific verb and resource: validates catastrophe bond trigger term structure and computes layer arithmetic with enumerated fields (attachment/exhaustion ordering, pro-rata factor, payout, layer position). It also references the upstream artifact art-251-compute-parametric-trigger-payout, which implicitly distinguishes it from that sibling, but the purpose is buried under infrastructure boilerplate rather than front-loaded.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no when-not-to-use conditions, and no named alternative to choose this over (e.g. compute_parametric_trigger_payout). The only usage-like statement is the input constraint 'Use synthetic or anonymised inputs only', which is a safety restriction, not routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_cctp_v2_transferArc CCTP v2 Transfer ValidatorA
Read-onlyIdempotent
Inspect

Arc CCTP v2 Transfer Validator: OpenChainGraph compute node (settlement_mandate). Regulatory deadline: 2026-10-31 (CCTP V1 (Legacy) deprecation begins 31 Oct 2026 and completes 1 Dec 2026 (Circle migration guide, read 1 Oct 2026). All V1 integrations must migrate to CCTP v2. The v1_sunset check output still cites the earlier 31 Jul 2026 date.). 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-42-arc-fit-diagnostic. Open at: https://ainumbers.co/chaingraph/art-47-arc-cctp-transfer.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: Validates a CCTP v2 cross-chain USDC transfer for domain pair eligibility, Fast Transfer 30-second finality risk (LP availability), Hook payload safety, CCTP V1 (Legacy) deprecation status (begins 31 Oct 2026, completes 1 Dec 2026), and large-notional LP-depth risk. Outputs: verdict, grade, fail_count, warn_count, source_domain, dest_domain, transfer_mode, notional_usd, compliance_flags. Output schema: call describe_tool("validate_cctp_v2_transfer").

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". Unknown keys are refused.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds substantial behavioral context beyond that: deterministic compute, server-side vs browser delegation, GPU delegation behavior, transient non-retention of inputs, AP2 artifact export with execution_hash, and upstream artifact consumption. It is consistent with 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual purpose is buried in a long 'Summary' after regulatory deadline prose, an FV-status hash, a URL, compute-mode boilerplate, and AP2 artifact details. Some context is relevant, but the description is not front-loaded and contains substantial material that does not help an agent select or invoke the tool.

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?

For a complex validation tool with no output schema, the description lists the output fields (verdict, grade, fail_count, source_domain, dest_domain, transfer_mode, notional_usd, compliance_flags) and explains compute and provenance behavior. It is mostly complete, with the main gap being detailed semantics for nested policy_parameters.

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%, so the schema already documents the top-level parameters. The description adds useful meaning by describing upstream artifact chaining and mapping policy checks to domain pair, transfer mode, hook payload, V1 status, and notional size, but it does not define value formats or semantics for the nested policy_parameters keys, so this remains baseline-plus rather than strong parameter guidance.

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?

The description states a precise verb and resource: it validates a CCTP v2 cross-chain USDC transfer, and enumerates the specific checks (domain-pair eligibility, Fast Transfer finality risk, Hook payload safety, V1 deprecation, LP-depth risk). This clearly differentiates it from generic validation siblings.

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?

It gives operational guidance such as using synthetic or anonymised inputs and explains compute modes, but it does not say when to use this validator versus sibling validation tools, nor when not to use it. Usage is implied by the validation scope rather than explicitly routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_collateral_swap_eligibilityCollateral Swap Eligibility ValidatorB
Read-onlyIdempotent
Inspect

Collateral Swap Eligibility Validator: OpenChainGraph compute node (collateral_mandate). 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: 505-tokenized-collateral-eligibility-checker, 507-canton-dvp-atomicity-validator. Open at: https://ainumbers.co/tools/515-collateral-swap-eligibility-validator.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: Validate a collateral swap (upgrade/downgrade trade) under GMSLA, GMRA, and SFTR Art 15 collateral reuse rules. Outputs: eligibility, hqla_impact, hqla_tier_a, hqla_tier_b, net_economic_value, pacs008, value_a, value_b. Output schema: call describe_tool("validate_collateral_swap_eligibility").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description still adds real value beyond them: transient processing with no storage or logging, a synthetic-inputs-only constraint, server-vs-browser delegation semantics, refusal of unknown keys, and an exported AP2 artifact carrying execution_hash. The main weakness is that the delegation/boilerplate paragraphs crowd out the actual decision behaviour (what makes a swap ineligible).

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?

The actual purpose appears roughly two-thirds of the way in, after compute-mode mechanics that merely restate the compute parameter's schema description, plus an FV-status JSON path and a paragraph explaining that the receipt verifies offline. The FV-status URL and hash blob are unlikely to be actionable for an agent and would be better as trailing metadata or omitted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Outputs are enumerated by name (eligibility, hqla_impact, hqla_tier_a/b, net_economic_value, pacs008, value_a, value_b) and the agent is pointed to describe_tool for the schema, which partly compensates for the missing output schema. However, the semantics of the eligibility verdict, the HQLA impact calculation, and the policy_parameters contract are never explained, which is a meaningful gap for a domain-specific prudential check.

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?

Top-level schema coverage is 100%, so baseline 3 applies; the description adds only that inputs are "computed server-side" for gpu:false kernels. Critically, the 12 nested policy_parameters keys (asset_a, haircut_a, reuse_flag, sftr_consent, declared_direction, governing_agreement, ...) have empty schemas with no types or descriptions, and the description does nothing to explain them, leaving the tool's real input surface opaque.

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 Summary clause gives a specific verb+resource: "Validate a collateral swap (upgrade/downgrade trade) under GMSLA, GMRA, and SFTR Art 15 collateral reuse rules," which is unambiguous. It never distinguishes itself from adjacent siblings such as check_tokenized_collateral_eligibility or validate_fund_collateral, so an agent cannot route between them from the text alone.

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 implied rather than stated: the summary scopes it to GMSLA/GMRA/SFTR Art 15 swaps, and "Consumes upstream artifacts from: 505-tokenized-collateral-eligibility-checker, 507-canton-dvp-atomicity-validator" gives useful chaining context. There is no when-to-use/when-not guidance and no named alternative for a plain collateral eligibility check versus a swap-eligibility check.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_commission_hierarchyCommission Hierarchy ValidatorC
Read-onlyIdempotent
Inspect

Commission Hierarchy Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-266-reconcile-commission-statement. Open at: https://ainumbers.co/chaingraph/art-264-validate-commission-hierarchy.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: BFS structural validation of multi-level sales commission hierarchies. Outputs: agent_count, by_level, is_valid, not_legal_advice, orphan_count, override_stacking_detected, pii_note, regulatory_basis, table_source, table_version, total_levels, violations. Output schema: call describe_tool("validate_commission_hierarchy").

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". Unknown keys are refused.

TDQS

C2.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 the description adds meaningful context beyond them: transient processing with no storage or logging, AP2 artifact emission with execution_hash, and server-vs-browser delegation behavior. This is genuinely useful operational disclosure, though much of it is generic platform boilerplate repeated across nodes.

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?

The purpose is buried near the end of a paragraph dominated by platform boilerplate and a long URL/hash receipt line. Redundancy appears immediately ("OpenChainGraph compute node… Deterministic OpenChainGraph compute node"), and the signal-to-noise ratio is poor.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It lists the output fields and defers the rest to describe_tool, which partially compensates for the absent output schema. But for a validator whose core input is a hierarchy structure, no description of that structure's shape or expected values is given, leaving a real gap.

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 baseline is 3; the description mostly restates compute modes already documented in the schema. Critically, the nested policy_parameters keys (hierarchy, max_levels) have no descriptions in either the schema or the description, so the key input shape for a validation tool remains unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The actual function is stated in a single sentence mid-description: "BFS structural validation of multi-level sales commission hierarchies." However, it's buried after several sentences of platform boilerplate and doesn't distinguish it from near-siblings like reconcile_commission_statement or amortize_asc606_commissions, leaving the agent to infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this validator versus the reconciliation sibling, no prerequisites, and no when-not-to-use conditions. The "Output feeds" line points to a downstream tool, not an alternative, and the compute-mode text is execution plumbing rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_content_binding_assertionContent Binding Assertion ValidatorC
Read-onlyIdempotent
Inspect

Content Binding Assertion Validator: OpenChainGraph compute node (compliance_mandate). 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-127-dual-layer-disclosure-verifier. Open at: https://ainumbers.co/chaingraph/art-128-content-binding-assertion-validator.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.

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". See the tool's manifest for field names.

TDQS

C2.7/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 genuinely non-obvious behavior: deterministic server-side evaluation on Cloudflare Workers, browser delegation semantics for gpu:true/forced modes, transient processing with no storage/logging/retention, and 'use synthetic or anonymised inputs only.' That data-handling and execution-locality disclosure is real value beyond the annotations and is consistent with readOnlyHint (no persisted mutation).

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?

The block is padded with boilerplate (repeated 'OpenChainGraph compute node', a raw /fv-status 64-hex URL, and an offline-verification aside) that does not help an agent select or invoke the tool. Purpose is nominally front-loaded but is immediately buried under infrastructure text, and no sentence states the actual decision being computed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Execution model, chaining inputs, and artifact export are covered well enough for a compute node, and with no output schema the description at least names the produced AP2 artifact and browser delegation URL. However, for a tool whose sole required business input is an undocumented nested `policy_parameters` object, deferring field names to an external manifest leaves the agent unable to construct a valid call from this definition alone.

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 baseline is 3; the description's compute-mode paragraph duplicates the `compute` field description rather than adding syntax or defaults. The critical `policy_parameters` object is handled only by pointing to 'the tool's manifest for field names,' which is not part of this definition, so no additional meaning is conveyed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence is the title restated ('Content Binding Assertion Validator: OpenChainGraph compute node (compliance_mandate)'), and everything after it describes execution infrastructure rather than what is actually validated. An agent learns that the tool produces an AP2 artifact and consumes art-127 output, but never what a 'content binding assertion' is or what check the decision function performs. Among dozens of sibling `validate_*` tools, this offers no distinguishing statement of the check itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to choose this validator over the many alternatives (validate_ap2_mandate_chain, verify_dual_layer_disclosure, verify_execution_hash, etc.), and no prerequisites beyond the upstream artifact reference. The only conditional guidance offered ('compute:auto vs browser') is operational routing that the schema already documents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_cross_network_settlementCross-Network Atomic Settlement ValidatorB
Read-onlyIdempotent
Inspect

Cross-Network Atomic Settlement Validator: OpenChainGraph compute node (settlement_mandate). Regulatory deadline: 2026-Q3 (ECB Pontes TARGET-link pilot end-Q3 2026; DTCC Collateral AppChain full production Oct 2026. Verify cross-network coordination patterns against current primary sources.). 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-56-tokenized-settlement-fit-diagnostic, art-59-settlement-asset-finality-classifier. Output feeds: 507-canton-dvp-atomicity-validator, 511-multi-currency-pvp-validator, cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-58-cross-network-settlement-validator.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: Validates atomic settlement across two or more networks: cash leg final on the money ledger, asset leg delivered on the asset ledger, FX leg PvP where present. Outputs: atomicity_verdict, coordination_recommendation, leg_findings, note, pvp_check, residual_exposure, settlement_risk_window_sec. Output schema: call describe_tool("validate_cross_network_settlement").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/destructive-free annotations, the description discloses real behavioral traits: deterministic execution, server-vs-browser compute delegation rules (gpu:true always delegates), transient processing with no storage, logging or retention, and export of an AP2 artifact carrying execution_hash. The 'use synthetic or anonymised inputs only' instruction is a genuine safety constraint the annotations do not capture.

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?

The text is padded with non-operational content: a 'Regulatory deadline: 2026-Q3' paragraph citing ECB/DTCC dates, a documentation URL, and a long FV-status hash path. The genuinely useful sentence is the 'Summary' near the very end, so the description is back-loaded rather than front-loaded, and several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does compensate by enumerating the returned fields (atomicity_verdict, leg_findings, pvp_check, residual_exposure, settlement_risk_window_sec) and pointing to describe_tool for the full schema, and it names upstream/downstream artifacts. It still leaves the decision-function inputs in policy_parameters wholly unexplained, which is the one thing an agent most needs 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?

Top-level schema coverage is 100%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters; the description largely restates the compute-mode semantics. It adds nothing about the shape or meaning of the nested policy_parameters keys (legs, networks, coordination_mechanism, timeout_window_sec), which are typed as empty objects in the schema, so the real ambiguity is left unresolved.

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 'Summary' sentence gives a concrete verb and resource: validates atomic settlement across two or more networks, broken down by cash leg finality, asset leg delivery and FX PvP. That is specific enough to distinguish it from generic siblings. However, the actual purpose is buried near the end behind boilerplate, and it never explicitly contrasts itself with near neighbours like validate_pvp_settlement, validate_canton_dvp_atomicity, or check_cash_leg_finality.

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?

There is no explicit when-to-use / when-not-to-use statement. Usage is only implied through pipeline positioning ('Consumes upstream artifacts from art-56... and art-59...', 'Output feeds: 507-canton-dvp-atomicity-validator, 511-multi-currency-pvp-validator'), which tells an agent where it sits in a chain but not when to prefer it over the many sibling settlement validators.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_cyclonedx_sbomCycloneDX SBOM Validator (EU CRA Annex I)B
Read-onlyIdempotent
Inspect

CycloneDX SBOM Validator (EU CRA Annex I): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-136-slsa-provenance-verifier. Open at: https://ainumbers.co/chaingraph/art-135-cyclonedx-sbom-validator.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: Validates a CycloneDX SBOM against the EU CRA Annex I machine-readable SBOM requirement: bomFormat=CycloneDX, specVersion in [1.4,1.5,1.6], all components carry purl+name+version, top-level dependencies array present. Outputs: component_count, components_missing_purl, format, has_dependencies, sbom_valid, spec_version. Output schema: call describe_tool("validate_cyclonedx_sbom").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, yet the description adds genuinely new behavior: server-vs-browser delegation via compute, gpu:true always delegating, transient processing with no storage/logging/retention, and an AP2 artifact export carrying execution_hash for chain provenance. It still omits failure behavior (what happens on invalid SBOM — error vs sbom_valid=false).

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?

The functional summary — the most important content — is buried at the very end behind chain-of-custody boilerplate, an FV-status URL with a 64-char hash, and repeated compute/transient-processing text. Roughly half the text is infrastructure metadata that does not help an agent decide or invoke.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Outputs are enumerated, which compensates for the missing output schema, and validation rules are spelled out. However, it never says how to pass the SBOM into the untyped policy_parameters.sbom object (parsed JSON vs string), nor how an invalid SBOM surfaces, leaving a real calling gap.

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 all four parameters are already documented and the description largely restates the compute 'auto' default. It adds no syntax guidance for the untyped policy_parameters.sbom field, which is the one parameter where the schema is silent about shape.

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 a concrete verb+resource: validates a CycloneDX SBOM against EU CRA Annex I, with explicit predicate rules (bomFormat=CycloneDX, specVersion in [1.4,1.5,1.6], purl+name+version on all components, dependencies array present). It is distinguishable from validate_spdx_sbom by format, though it never names that sibling or check_cra_annex1_completeness explicitly.

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 annex reference and validation criteria imply when to call it (CRA Annex I SBOM conformance), but there is no explicit when-to-use/when-not or routing to alternatives such as validate_spdx_sbom for SPDX inputs. Usage must be inferred from the format name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_deposit_token_complianceDeposit-Token Compliance ValidatorA
Read-onlyIdempotent
Inspect

Deposit-Token Compliance Validator: OpenChainGraph compute node (compliance_mandate). 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-56-tokenized-settlement-fit-diagnostic. Output feeds: 510-digital-asset-regulatory-classifier, cry-04-merkle-batch-verifier, art-59-settlement-asset-finality-classifier. Open at: https://ainumbers.co/chaingraph/art-57-deposit-token-compliance-validator.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: 3-test validator distinguishing a bank-liability deposit token (JPMD/RLN model: at-par-on-demand, on-balance-sheet, allowlisted-wholesale) from a reserve-backed stablecoin or e-money token. Outputs: applicable_regime, capital_accounting_note, classification, classification_grade, note, remediation_checklist, status_asof, test_results, token_class. Output schema: call describe_tool("validate_deposit_token_compliance").

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". Unknown keys are refused.

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/closed-world, and the description still adds real value: transient processing with no storage or logging, a requirement to use synthetic or anonymised inputs, deterministic execution, and that the tool exports an AP2 artifact carrying execution_hash for provenance. The compute-mode delegation behavior is disclosed too, though it largely duplicates the schema field.

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?

The text is badly back-loaded: the actual purpose and output list sit at the very end after compute-mode boilerplate, a raw URL, and an opaque FV-status hash path that consumes space without helping an agent call the tool. Several sentences restate the `compute` enum that the schema already documents verbatim.

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?

With no output schema, the description does the right thing by enumerating return fields (applicable_regime, capital_accounting_note, classification, classification_grade, test_results, token_class, etc.) and by naming upstream and downstream artifacts for chaining. The main missing piece is any guidance on the policy_parameters object, which is the actual decision input.

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% at the top level, so baseline is 3. The description usefully implies what belongs in parent_hashes/parent_tool_ids by naming the upstream artifact, and its test summary loosely maps to redemption_basis, liability_treatment, and holder_eligibility. But the nine nested policy_parameters keys have no descriptions in either the schema or the text, so the most consequential input surface remains unexplained.

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 core purpose is stated precisely in the Summary: a 3-test validator distinguishing a bank-liability deposit token (at-par-on-demand, on-balance-sheet, allowlisted-wholesale) from a reserve-backed stablecoin or e-money token. That differentiates it from siblings like validate_tempo_token_compliance or classify_digital_asset_regulatory. However, the first half of the text is generic 'OpenChainGraph compute node' boilerplate, so an agent must read deep to learn what the tool actually decides.

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 implied through the chain position ('consumes upstream artifacts from art-56-tokenized-settlement-fit-diagnostic' and 'output feeds: 510-digital-asset-regulatory-classifier, cry-04-merkle-batch-verifier, art-59-settlement-asset-finality-classifier'), which tells an agent where this fits in a pipeline. There is no explicit when-to-use vs. when-to-use-an-alternative rule, and no mention of what inputs qualify beyond 'synthetic or anonymised'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_dpp_data_carrierEU ESPR Digital Product Passport Data Carrier ValidatorB
Read-onlyIdempotent
Inspect

EU ESPR Digital Product Passport Data Carrier Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-116-product-lineage-builder. Open at: https://ainumbers.co/chaingraph/art-115-dpp-data-carrier-validator.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: Validate DPP required data elements against the CIRPASS-2 Core Ontology (durability, reparability, recyclability, carbon footprint, substances of concern) and check GS1 Digital Link data-carrier type. Outputs: carrier_valid, missing_elements, ontology_conformant, ontology_version, product_id. Output schema: call describe_tool("validate_dpp_data_carrier").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds genuinely non-structured behavior: deterministic kernel execution, server-vs-browser compute modes, transient no-storage processing, and an AP2 artifact export with execution_hash. It does not contradict the annotations, though the compute-binding text is boilerplate repeated across sibling nodes rather than tool-specific.

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?

The useful content is a single summary sentence placed last, behind ~120 words of OpenChainGraph runtime boilerplate, an FV-status receipt URL, and a hashed path. Nothing is front-loaded; an agent scanning the first sentence learns 'compute node (compliance_mandate)' rather than what is validated.

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?

With no output schema, the description usefully enumerates the return fields (carrier_valid, missing_elements, ontology_conformant, ontology_version, product_id), plus privacy and provenance behavior. The remaining gap is input content — what a 'DPP data element' looks like when passed in — but overall an agent has enough to invoke it 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 description coverage is 100%, so the baseline is 3. The description restates compute:'auto' behavior already documented in the schema, and it never explains what policy_parameters.elements should contain (the nested properties are untyped and undocumented) or how parent_hashes/parent_tool_ids relate — the one place it could have added value beyond the schema.

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?

Buried at the end but specific: 'Validate DPP required data elements against the CIRPASS-2 Core Ontology ... and check GS1 Digital Link data-carrier type' names verb, resource and two distinct checks, which separates it from siblings like build_product_lineage or verify_product_authenticity. It still opens with six sentences of infrastructure boilerplate, so an agent must read the whole field to learn what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only 'Output feeds: art-116-product-lineage-builder' hints at placement in a pipeline; there is no statement of when to call this versus alternatives (build_product_lineage, verify_product_authenticity, assemble_ocg_evidence_bundle) or any precondition such as 'requires a product_id and DPP element set'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_dtcc_ca_iso20022_messageDTC Corporate Actions ISO 20022 Message ValidatorB
Read-onlyIdempotent
Inspect

DTC Corporate Actions ISO 20022 Message Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-547-corporate-action-entitlement-recompute. Open at: https://ainumbers.co/chaingraph/art-546-dtcc-ca-iso20022-validator.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: Validates the structural message-shape of a single DTC corporate-action event message (notification / election / allocation) against the ISO 20022 field set migrated under DTCC Important Notice 23890-26 (legacy corporate-actions message format decommission -- a DTCC operator mandate, not a regula... Outputs: disambiguation, dtcc_operator_mandate_basis, error_count, event_type, message_function, not_legal_advice, pii_note, readiness_pct, reference_id, structure_valid, table_source, table_version, violations. Output schema: call describe_tool("validate_dtcc_ca_iso20022_message").

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: allocated_quantity, allocation_date, cusip, dtc_participant_number, election_deadline, election_option, event_type, message_function, payable_date, record_date, reference_id. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely non-obvious behavior: deterministic kernel computation on Cloudflare Workers, compute:"auto" versus "browser" delegation semantics, transient non-retained processing, refusal of unknown keys, and export of an AP2 artifact with execution_hash. The artifact export does not meaningfully contradict readOnlyHint since no prior resource is mutated.

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?

The payload is dominated by ChainGraph platform boilerplate (compute-mode mechanics, privacy notice, FV-status hash, URL) before the actual purpose appears, and the key sentence is truncated. The one useful piece of routing information is not front-loaded, so the agent has to read past noise to find it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does list the return fields (structure_valid, violations, readiness_pct, etc.) and points to describe_tool for the schema, and it discloses compute and provenance behavior, which is adequate for a read-only validator. However, the truncated mandate sentence and the absence of any explanation of the nested policy parameters leave real gaps.

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 effectively 100% at the top level, so the baseline is 3. The description adds a little meaning by enumerating the event types (notification/election/allocation), which informs the event_type/message_function fields, but it says nothing about cusip, the date fields, allocated_quantity, or dtc_participant_number, whose nested schema entries carry no descriptions of their own.

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 summary sentence names a specific verb and resource: validates the structural message-shape of a single DTC corporate-action event message (notification/election/allocation) against the ISO 20022 field set from DTCC Notice 23890-26. That is narrow enough to separate it from siblings like lint_securities_settlement_message or validate_dtc_tokenized_treasury, but it is buried after platform boilerplate and the sentence is visibly truncated mid-word.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a downstream hint ("Output feeds: art-547-corporate-action-entitlement-recompute") and an input constraint ("Use synthetic or anonymised inputs only"), but no statement of when this validator should be chosen over sibling validators, no prerequisites, and no exclusions. The agent must infer the routing from the title.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_dtc_tokenized_treasuryDTC-Custodied Tokenized U.S. Treasury Issuance & DvPB
Read-onlyIdempotent
Inspect

DTC-Custodied Tokenized U.S. Treasury Issuance & DvP: OpenChainGraph compute node (compliance_mandate). 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: 510-digital-asset-regulatory-classifier. Output feeds: 507-canton-dvp-atomicity-validator. Open at: https://ainumbers.co/chaingraph/art-109-dtc-tokenized-treasury.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: Validate a DTCC/ComposerX tokenized U.S. Outputs: collateral_reuse_ok, custody_link_ok, daml_lifecycle_gaps, daml_template_ok, dvp_ready, fed_eligible, verdict. Output schema: call describe_tool("validate_dtc_tokenized_treasury").

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: tokenized_ust_config. Unknown keys are refused.

TDQS

B3.1/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, and the description still adds genuinely non-obvious behavior: compute:'auto' runs server-side on Workers kernels, compute:'browser' returns a delegation URL instead, inputs are transient and not retained, and the tool exports an AP2 artifact carrying execution_hash for provenance. That is real operational context an agent could not infer from the schema.

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?

The description restates the title verbatim, then spends most of its length on generic OpenChainGraph compute-node boilerplate, privacy notices, FV-status receipt URLs, and a documentation link before reaching the actual purpose. The core sentence is not front-loaded and is truncated, so the size is not earned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output field list (collateral_reuse_ok, custody_link_ok, daml_lifecycle_gaps, dvp_ready, fed_eligible, verdict) plus the upstream/downstream tool IDs give the agent decent orientation for a no-output-schema tool. However, nothing explains what inputs the decision function actually needs in tokenized_ust_config or what makes dvp_ready true, so the definition is not complete enough to invoke confidently.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description's compute-mode sentence restates the schema's own 'compute' description almost verbatim and adds nothing about the required tokenized_ust_config payload shape, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line names a concrete verb and resource (validating DTC-custodied tokenized U.S. Treasury issuance/DvP), which is more than a restatement of the name. But the actual statement of purpose is buried after two sentences of compute-node boilerplate, and the summarizing sentence is truncated mid-phrase ('Validate a DTCC/ComposerX tokenized U.S. Outputs: ...'), so the agent never gets a clean statement of what is validated.

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?

There is no explicit 'use this when' guidance versus siblings like validate_canton_dvp_atomicity or check_tokenized_collateral_eligibility, which is a real gap given the crowded namespace. The chaining metadata ('Consumes upstream artifacts from 510-digital-asset-regulatory-classifier', 'Output feeds: 507-canton-dvp-atomicity-validator') does imply positioning in a pipeline, but only implicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_ebam_acmt_floweBAM Account Message Flow ValidationB
Read-onlyIdempotent
Inspect

eBAM Account Message Flow Validation: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-260-allocate-ihb-interest. Open at: https://ainumbers.co/chaingraph/art-262-validate-ebam-acmt-flow.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: Validates the CGI-MP eBAM 2023 account message state machine across acmt.007 (opening request), acmt.010 (opening confirmation), acmt.011 (closing request), acmt.017 (modification request), and acmt.019 (modification confirmation) message types. Outputs: ack_count, acmt_state, error_count, is_valid, message_sequence, not_legal_advice, orphan_count, orphan_requests, pii_note, regulatory_basis, report_count, request_count, table_source, table_version, total_messages, validation_errors, validation_warnings, warning_count. Output schema: call describe_tool("validate_ebam_acmt_flow").

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: acmt_messages, strict_order. Unknown keys are refused.

TDQS

B3.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), and the description adds genuinely new behavior: server vs browser compute delegation, gpu:true always delegating, transient non-retention of inputs, and an AP2 artifact with execution_hash plus a downstream consumer (art-260). Some of the compute-mode detail duplicates the schema's compute enum description, which slightly dilutes the added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is bloated with generic ChainGraph framing and a long FV-status URL and hash that are unlikely to help an agent decide or call. The useful content (message types, outputs, downstream feed) is present but pushed behind boilerplate, so the structure is not front-loaded.

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?

With no output schema, the description compensates by enumerating the returned fields (ack_count, acmt_state, is_valid, orphan_requests, validation_errors, etc.), and it names the downstream artifact and a describe_tool fallback. Combined with the privacy and compute-mode notes, an agent has enough to call it correctly, minor boilerplate aside.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description only reinforces that acmt_messages and strict_order are required inside policy_parameters; it adds no syntax or format guidance beyond what the schema 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?

The description gives a specific verb and resource ('Validates the CGI-MP eBAM 2023 account message state machine') and enumerates the exact message types (acmt.007/010/011/017/019), which is enough to distinguish it from the many other validate_* siblings. However, the actual purpose statement appears only after several sentences of OpenChainGraph boilerplate, so the signal is not front-loaded.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit statement of when to use this tool versus alternatives such as validate_emir_lifecycle_event or other acmt/ISO 20022 validators. It states prerequisites in the schema ('Required: acmt_messages, strict_order') but never gives use-case context or exclusion conditions, leaving routing entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_einvoice_batchEN 16931 / Factur-X E-Invoicing Batch ValidatorC
Read-onlyIdempotent
Inspect

EN 16931 / Factur-X E-Invoicing Batch Validator: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2026-09 (France large/medium mandatory September 2026; EU ViDA). 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. Output feeds: rca-03-iso20022-address-migration-verifier, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-08-en16931-einvoice-batch-validator.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.

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". See the tool's manifest for field names.

TDQS

C2.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely useful behavioral facts beyond them: server-vs-browser compute delegation with a delegation URL, transient processing with no retention or logging, and emission of an AP2 artifact carrying execution_hash for chain provenance. What is still missing is any disclosure of failure behavior or what constitutes a valid vs invalid batch.

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?

The purpose is front-loaded in the first clause, which is good, but the remainder is inflated with OpenChainGraph compute-binding prose, downstream tool IDs, a hash, and an offline-receipt explanation that do not help an agent select or correctly invoke the tool. Several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of explaining what validation returns — and it does not: no pass/fail semantics, no error enumeration, no batch size or format expectations. Combined with the 'see the manifest' hand-wave for policy_parameters, an agent lacks enough information to construct a correct call.

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%, so compute, parent_hashes, and parent_tool_ids are already documented in the schema, and the description largely restates the compute-mode semantics. Critically, the opaque policy_parameters object — the actual payload of the decision function — is pushed off to 'see the tool's manifest', so the description adds no meaning for the one parameter an agent most needs to understand.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause names a specific resource and action (EN 16931 / Factur-X e-invoice batch validation), which is more than a tautology. However, the rest of the text is generic compute-node boilerplate, and nothing distinguishes it from close siblings such as validate_einvoice_format, validate_vida_einvoice_conformance, or verify_einvoice_vat_calc. An agent cannot tell which validator to pick from this description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only routing hint is a downstream-dependency list ('Output feeds: rca-03..., ptg-01...') and the admonition to use synthetic or anonymised inputs. There is no statement of when to use this batch validator versus the several other e-invoice validation siblings, no prerequisites, and no exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_einvoice_formatE-Invoice Format ValidatorA
Read-onlyIdempotent
Inspect

E-Invoice Format Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-294-einvoice-vat-calc-verifier. Open at: https://ainumbers.co/chaingraph/art-293-einvoice-format-validator.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: Conformance-validate a structured e-invoice extract against version-pinned Factur-X, XRechnung, PINT-AE, MyInvois, Peppol BIS 3.0/EN 16931 core (Belgium), or KSeF FA(3) (Poland) format rules: mandatory-field presence, currency/VAT-category codelist membership, line-item cardinality. Outputs: findings, format, line_item_count, missing_fields, parse_error, rule_set_version, structural_completeness. Output schema: call describe_tool("validate_einvoice_format").

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: document. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds meaningful context beyond them: deterministic execution, server-vs-browser delegation behavior, transient processing with no storage or logging, and an AP2 artifact with execution_hash for provenance. The FV-status paragraph is somewhat promotional but does disclose that the receipt verifies offline as a snapshot.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The statement of purpose and format list arrive only at the very end, after repeated boilerplate ('OpenChainGraph compute node' is stated twice in consecutive sentences) and an FV-status URL/receipt aside. The summary: prefix helps, but the description is not front-loaded and carries redundancy.

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?

Given four parameters, a nested document object, and no output schema, the description is largely complete: it names the seven format rule sets, the three rule categories checked, and enumerates the returned fields (findings, format, line_item_count, missing_fields, parse_error, rule_set_version, structural_completeness). The only gap is that the shape of the input 'document' extract is never hinted at.

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 all four parameters including the compute enum and parent_hashes chaining are already documented. The description's compute paragraph largely restates the schema's compute definition and adds no format or example for the nested 'document' payload beyond calling it a structured e-invoice extract; 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?

The final sentence gives a specific verb and resource: 'Conformance-validate a structured e-invoice extract against version-pinned Factur-X, XRechnung, PINT-AE, MyInvois, Peppol BIS 3.0/EN 16931 core..., or KSeF FA(3) format rules' with the checks enumerated. However, this core statement is buried behind OpenChainGraph compute-node boilerplate, and the description never distinguishes it from close siblings such as validate_einvoice_batch, validate_vida_einvoice_conformance, or verify_einvoice_vat_calc.

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?

There is a real usage constraint ('Use synthetic or anonymised inputs only') and detailed compute-mode guidance, plus a downstream pointer ('Output feeds: art-294-einvoice-vat-calc-verifier'). But no sentence says when to pick this validator over the batch or Vida e-invoice siblings, so routing must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_emir_lifecycle_eventEMIR Lifecycle Event ValidatorC
Read-onlyIdempotent
Inspect

EMIR Lifecycle Event Validator: OpenChainGraph compute node (compliance_mandate). 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-156-emir-counterparty-pairing-reconciler. Output feeds: art-158-emir-reporting-readiness-diagnostic. Open at: https://ainumbers.co/chaingraph/art-157-emir-lifecycle-event-validator.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.

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". See the tool's manifest for field names.

TDQS

C2.7/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 behavior, and the description adds useful details beyond them: compute modes (auto/server/browser), transient processing with no storage or logging, synthetic-input guidance, and AP2 artifact export with execution_hash for provenance. It does not cover error modes or permissions, but the added compute and data-handling context is substantial.

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?

The description is bloated with infrastructure boilerplate, an external URL, and a long verification-hash receipt that do not help an agent select or invoke the tool. The actual purpose is buried after the title restatement and compute-execution details. Every sentence does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a validation tool with no output schema, the description explains compute execution, privacy, chaining, and artifact export, which is useful. However, it never explains what the validation produces (pass/fail, diagnostics, artifact contents) or what policy_parameters should contain beyond 'see the manifest.' Functional completeness is only moderate.

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 all four parameters thoroughly. The description reinforces the compute parameter's behavior but does not add new meaning for parent_hashes, parent_tool_ids, or policy_parameters beyond pointing to the tool manifest. Baseline 3 is appropriate when the schema carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence restates the title and labels the tool as an 'OpenChainGraph compute node (compliance_mandate)' but does not specify what 'validating an EMIR lifecycle event' actually checks or returns. The remaining sentences describe execution infrastructure, not the tool's functional purpose. An agent learns almost nothing about the validation logic beyond the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions upstream and downstream artifacts (consumes art-156, feeds art-158), giving some pipeline placement, but it never states when to use this tool versus siblings like validate_emir_trade_report, validate_emir_upi, or reconcile_emir_pairing. There are no explicit conditions, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_emir_trade_reportEMIR Trade Report Field ValidatorC
Read-onlyIdempotent
Inspect

EMIR Trade Report Field Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-154-emir-uti-completeness-checker. Open at: https://ainumbers.co/chaingraph/art-153-emir-trade-report-field-validator.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.

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". See the tool's manifest for field names.

TDQS

C2.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, so the bar is lower, yet the description adds real context: deterministic computation, server-side vs browser delegation semantics, transient processing with no storage or logging, and a synthetic-inputs-only constraint. It also discloses that an AP2 artifact with execution_hash is exported, which is behavior an agent would not infer from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with infrastructure boilerplate before any task-relevant content, and the trailing FV-status sentence ('a snapshot, not a subscription; this receipt verifies offline...') is dense and of marginal use to an invoker. The privacy and compute paragraphs do earn their place, but the block as a whole is longer than its informational payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a validation tool whose actual decision inputs live in a free-form policy_parameters object with no field documentation, the description leaves an agent unable to construct a correct call. There is no output schema, yet the response shape (validation findings vs. the AP2 artifact) is never characterized; only chaining and provenance mechanics are covered.

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 baseline is 3; the description's account of compute modes largely mirrors the schema's own 'compute' description. It adds nothing about parent_hashes/parent_tool_ids pairing beyond the schema, and defers policy_parameters entirely ('See the tool's manifest for field names'), leaving the most important argument opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence restates the title ('EMIR Trade Report Field Validator') and then pivots immediately to compute-node infrastructure, never explaining what a field validation actually checks or what it returns. The name carries most of the semantic load; the only differentiation from siblings like check_emir_uti_completeness or validate_emir_upi comes indirectly via 'Output feeds: art-154-emir-uti-completeness-checker'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use / when-not-to-use guidance relative to the many EMIR siblings (check_emir_uti_completeness, validate_emir_upi, reconcile_emir_pairing, validate_emir_lifecycle_event). The only routing hint is the downstream tool it feeds, which is not framed as an alternative selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_emir_upiEMIR UPI ValidatorC
Read-onlyIdempotent
Inspect

EMIR UPI Validator: OpenChainGraph compute node (compliance_mandate). 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-154-emir-uti-completeness-checker. Open at: https://ainumbers.co/chaingraph/art-155-emir-upi-validator.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, and the description adds meaningful execution context beyond that: compute modes and delegation, transient non-retention of inputs, AP2 artifact export with execution_hash, and upstream artifact consumption. It still omits what the validation outcome looks like, but the compute/provenance disclosure is substantive.

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?

The useful content is buried under repeated boilerplate ('OpenChainGraph compute node' twice) and an external URL plus a long FV-status hash path that do not help an agent decide or invoke. Front-loading the title helps, but the body is padded with chain-infrastructure text rather than tool-specific substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a domain validator with an opaque policy_parameters object, no output schema, and hidden decision fields, the description never explains what inputs the validation needs or what it returns. The agent is told to 'see the tool's manifest' for field names, which is not available at call time, leaving the core invocation contract incomplete.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates compute-mode behavior and points at upstream artifacts but adds no field-level detail for policy_parameters, which it defers to an external manifest the agent cannot see.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description repeats the title ('EMIR UPI Validator') and describes generic ChainGraph compute-node mechanics, but never states what UPI validation actually checks, what a valid or invalid result means, or how it differs from siblings like validate_emir_trade_report or check_emir_uti_completeness. An agent must infer the purpose entirely from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use/when-not-to-use guidance versus the many EMIR siblings. The only operational guidance is the input constraint 'Use synthetic or anonymised inputs only' and an implicit dependency mention ('Consumes upstream artifacts from: art-154-emir-uti-completeness-checker'), which is a hint at sequencing but not an explicit selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_eudr_due_diligence_statementEUDR DDS Field ValidatorA
Read-onlyIdempotent
Inspect

EUDR DDS Field Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-166-eudr-geolocation-plot-validator. Open at: https://ainumbers.co/chaingraph/art-165-eudr-dds-field-validator.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: Validate the required-field subset of an EUDR Due Diligence Statement (DDS) before TRACES NT filing: operator name, address, EORI, HS code, trade name, quantity, country of production, and geolocation indicator (or micro-operator postal-address exemption). Outputs: conformant, country_of_production, fields_checked, fields_passed, micro_operator_exemption, missing_fields, quantity. Output schema: call describe_tool("validate_eudr_due_diligence_statement").

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". Unknown keys are refused.

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 safety bar is low; the description still adds substantive context: deterministic compute, server-vs-browser delegation semantics for compute:'auto'/'browser' and gpu:true nodes, transient non-retained input processing, and an AP2 artifact with execution_hash for chain provenance. Points deducted because much of this is templated boilerplate shared across the suite rather than tool-specific behavior, and nothing is said about what a non-conformant result implies.

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?

The genuinely useful content is deferred to a single 'Summary:' sentence at the end, behind duplicated boilerplate ('OpenChainGraph compute node… Deterministic OpenChainGraph compute node'), a documentation URL, and a 64-character FV-status hash. Several sentences (compute-mode routing, FV receipt) are generic across the suite and not needed to invoke this tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does list the returned attributes (conformant, missing_fields, fields_passed, etc.), which is necessary and helpful. But it never explains how the DDS payload is actually supplied (all four parameters are optional, and the required input shape is only implied), and it omits type/shape detail for the returned values.

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%, which sets a baseline of 3, but the schema leaves policy_parameters.dds as an untyped empty object with no description, so the description's enumeration of the expected DDS field set (operator name, address, EORI, HS code, trade name, quantity, country of production, geolocation indicator / micro-operator exemption) is the only guidance on what to put there. It does not tie those fields explicitly to the dds key path, keeping it below 5.

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 'Summary:' sentence names a specific verb and resource (validate the required-field subset of an EUDR DDS before TRACES NT filing) and enumerates the exact fields checked, which is genuinely informative. It also names an adjacent artifact ('art-166-eudr-geolocation-plot-validator') that this feeds, but never explicitly contrasts itself with siblings such as validate_eudr_geolocation or run_eudr_readiness_fit.

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 phrase 'before TRACES NT filing' implies the pre-submission checkpoint context, and 'Use synthetic or anonymised inputs only' is a real constraint. However, there is no explicit statement of when NOT to use it, no prerequisites, and no routing to the EUDR siblings (geolocation plot validation, readiness fit, country risk scoring) that an agent would need to choose correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_eudr_geolocationEUDR Geolocation Plot ValidatorA
Read-onlyIdempotent
Inspect

EUDR Geolocation Plot Validator: OpenChainGraph compute node (compliance_mandate). 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-165-eudr-dds-field-validator. Output feeds: art-167-eudr-commodity-scope-classifier. Open at: https://ainumbers.co/chaingraph/art-166-eudr-geolocation-plot-validator.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: Validate GeoJSON plot geolocation for EUDR compliance: geometry type (Point or Polygon), coordinate range validity, EUDR size rule (plots >=4 ha require Polygon, Art. Outputs: area_ha, coordinates_valid, geo_type, issues, micro_operator_exemption, polygon_closed, size_rule_met, valid. Output schema: call describe_tool("validate_eudr_geolocation").

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". Unknown keys are refused.

TDQS

A3.6/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 the safety profile is covered. The description adds real context beyond them: deterministic compute, transient server-side processing with no storage/logging/retention, and that an AP2 artifact with execution_hash is exported for chain provenance. It does not contradict any annotation.

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?

The actual purpose is placed last under 'Summary:', after long stretches of generic OpenChainGraph boilerplate about Cloudflare Workers, compute binding, and a 64-character FV-status receipt hash with a URL. Much of that text is identical across sibling tools and does not help an agent select or invoke this one; the structure is back-loaded rather than front-loaded.

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?

For a 4-parameter node with no output schema, the description covers what matters: compute mode behavior, chaining inputs/outputs, artifact export, data-retention policy, and an enumerated list of return fields (area_ha, coordinates_valid, geo_type, issues, micro_operator_exemption, size_rule_met, valid) with a pointer to describe_tool for the full schema. Only the internal shape of the geo input remains unexplained.

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. The description exceeds that by indicating what belongs in the undocumented policy_parameters.geo object, namely a GeoJSON plot (Point or Polygon) subject to the >=4 ha size rule, which the schema leaves as an empty untyped object. It does not, however, specify the expected key names inside geo.

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 a specific verb and resource (validate GeoJSON plot geolocation for EUDR compliance) and enumerates the checks performed (geometry type, coordinate range, >=4 ha Polygon rule). It also names its chain position against named artifact siblings (art-165 upstream, art-167 downstream), so it is distinguishable from validate_eudr_due_diligence_statement and classify_eudr_commodity_scope. The purpose is buried under generic compute-node prose rather than stated first, which keeps it from a 5.

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 mostly implied through chain position (consumes art-165 field validator output, feeds art-167 commodity scope classifier) plus the compute-mode rules (auto default, browser forces delegation, gpu:true always delegates). There is no explicit statement of when to prefer this over sibling EUDR validators, and no when-not guidance; the 'synthetic or anonymised inputs only' line is a hard constraint rather than a usage rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_eugb_factsheetEU Green Bond Factsheet & Allocation ValidatorA
Read-onlyIdempotent
Inspect

EU Green Bond Factsheet & Allocation Validator: OpenChainGraph compute node (compliance_mandate). 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-68-carbon-compliance-fit-diagnostic, art-73-taxonomy-alignment-scorer. Output feeds: cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-75-eugb-factsheet-validator.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: Validates an EuGB factsheet (Annex I) + allocation report (Annex II) for completeness and the 100% Taxonomy-aligned proceeds threshold, cross-checking against ART-73 alignment of the funded activities. Outputs: aligned_proceeds, annex_i_complete, annex_i_gaps, annex_ii_status, conformance_grade, conformance_score, external_reviewer_status, label_ready, note, proceeds_aligned_pct, proceeds_threshold_met, proceeds_threshold_pct, reference, total_proceeds. Output schema: call describe_tool("validate_eugb_factsheet").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description earns credit for going further: deterministic execution, explicit compute-mode routing (server kernel vs browser delegation, gpu:true always delegating), transient non-retention of inputs, and AP2 artifact export with execution_hash for chain provenance. It stops short of describing cost, latency, or failure modes for a rejected factsheet.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is back-loaded into a 'Summary:' clause after generic infrastructure text, and 'Deterministic OpenChainGraph compute node' is stated twice near the top. The embedded FV-status receipt hash and URL are operational metadata that push the actionable content down. The output field list and upstream/downstream references do earn their 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?

For a 4-parameter tool with a nested policy object and no output schema, the definition covers purpose, chaining inputs/outputs, compute routing, data-handling posture, and an explicit enumeration of returned fields, with a describe_tool pointer for the full schema. What is missing is guidance on which sibling validator to use and what a failing conformance grade means for next steps.

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 compute, parent_hashes, parent_tool_ids and policy_parameters. The description restates the compute-mode semantics and implies the chaining intent via 'consumes upstream artifacts', but adds nothing about the nested policy_parameters keys (factsheet, use_of_proceeds, allocation_report, external_reviewer) that the schema leaves untyped.

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 Summary sentence names a specific verb and resource: validating an EuGB factsheet (Annex I) plus allocation report (Annex II) against the 100% Taxonomy-aligned proceeds threshold, cross-checked against ART-73. That is distinguishable from siblings such as score_taxonomy_alignment. The drawback is that the purpose only lands after several paragraphs of compute/provenance boilerplate, so an agent skimming the opening sees 'compute node' rather than 'validator'.

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 description says which upstream artifacts feed in (art-68, art-73) and which downstream artifact consumes the output, plus a 'synthetic or anonymised inputs only' constraint, which implies the appropriate context. But it never states when to choose this over close siblings like score_taxonomy_alignment, run_carbon_compliance_fit, or aggregate_taxonomy_kpi_gar, and gives no prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_fdic370_output_fileFDIC Part 370 Output-File ValidatorC
Read-onlyIdempotent
Inspect

FDIC Part 370 Output-File Validator: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-535-fdic370-output-file-validator.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: Validates the shape of the institution's own 12 CFR part 370 deposit-insurance-coverage output file (the section 370.10 coverage summary report structure) against its published record layout -- required field presence, malformed count/amount values, and a repeated ownership right and capacity cod... Outputs: art507_result, art507_supplied, as_of_date, boundary, conforming_row_count, decision, file_structure_errors, file_totals, institution_ref, mismatches, note, ownership_code_handling, rationale, small_buyer_caveat, supplied_row_count, totals_mismatch. Output schema: call describe_tool("validate_fdic370_output_file").

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: art507_result, as_of_date, file_records, institution_ref. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real value beyond them: deterministic execution, transient processing with no storage/logging/retention, and an exported AP2 artifact carrying execution_hash for chain provenance. However, the summary truncation leaves the actual check semantics (what a 'mismatch' or 'file_structure_errors' means, how decision is reached) undefined, which matters for a validator.

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?

The unique content for this tool is roughly two sentences, buried after generic OpenChainGraph boilerplate, a compute-mode primer, a FV-status receipt hash and a URL. The purpose sentence is also truncated mid-clause, and the 15-item output dump pads the tail. Front-loading is poor: an agent must read past plumbing to learn what the tool validates.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the field list (decision, mismatches, file_structure_errors, totals_mismatch, conforming_row_count, etc.) usefully signals what comes back, and the description points to describe_tool for detail. But the truncated summary leaves the validation rule set — notably the ownership right/capacity code check and the small_buyer_caveat output — unexplained, so an agent cannot fully predict verdict semantics from this text.

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 baseline is 3. The description restates the compute-mode behavior already documented in the schema but says nothing about the policy_parameters contents (art507_result, as_of_date, file_records, institution_ref) or about parent_hashes/parent_tool_ids chaining beyond what the schema states. It adds no semantic meaning the agent could not already read in the schema.

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 Summary sentence gives a specific verb+resource: validates the shape of the institution's own 12 CFR part 370 coverage output file against its published record layout, checking required field presence, malformed count/amount values, and ownership right/capacity codes. That is far more specific than the title alone. It stops short of naming how it differs from close siblings such as determine_deposit_insurance_coverage or validate_qfc_recordkeeping_file, and the sentence is truncated mid-word ('capacity cod...'), which costs it the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives, nor any prerequisites about what an art507_result or file_records must look like before calling. The only directive present ('Use synthetic or anonymised inputs only') is a data-handling constraint, not usage guidance. The compute-mode explanation describes invocation mechanics rather than when-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_form5500_schedulesERISA Form 5500 Schedule ValidatorB
Read-onlyIdempotent
Inspect

ERISA Form 5500 Schedule Validator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-401-validate-form5500-schedules.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: Validates a Form 5500 schedule-applicability matrix (plan type and size determine required schedules H/I/A/C/G/MB/SB/R), a Schedule H cross-schedule arithmetic tie (ending assets equal beginning assets plus net income minus distributions), and the filing-deadline calculation (plan-year end plus s... Outputs: applicable_deadline, arithmetic_tie, compliant, disambiguation, error_count, extended_filing_deadline, filing_deadline, is_large_plan, issues, regulatory_basis, required_schedules, shelf_note, table_source, table_version, warning_count. Output schema: call describe_tool("validate_form5500_schedules").

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: extension_filed, has_insurance_contracts, has_party_in_interest_transactions, is_multiemployer, participant_count, plan_type, plan_year_end, schedule_h_beginning_assets, schedule_h_distributions, schedule_h_ending_assets, schedule_h_net_income, service_provider_comp_over_5000. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds meaningful context beyond annotations: server-side vs browser compute delegation, transient input handling, no storage/logging, synthetic-input requirement, and AP2 artifact export with execution_hash.

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?

The description opens with generic compute-node boilerplate and an FV-status hash before reaching the actual purpose. The useful summary is not front-loaded, so the structure wastes the reader's attention on details that could be deferred.

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?

For a complex validator, the description covers the three validation checks, compute modes, and lists output fields, which is largely sufficient given the rich input schema. Some output fields (e.g., disambiguation, shelf_note) remain unexplained, but the core information an agent needs is present.

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 documents all four top-level parameters and nested policy fields. The description repeats the compute modes but adds no new parameter-level semantics beyond what the schema already provides.

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 description states a specific verb ('validates') and resource (Form 5500 schedule-applicability matrix, Schedule H arithmetic tie, filing-deadline calculation), which clearly distinguishes it from generic validators. However, the purpose is buried after several sentences of compute-node boilerplate, slightly reducing immediate clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance, prerequisites, or alternatives are provided. The validation domain implies its usage, but there is no statement of when another tool might be preferable or what conditions must hold before calling it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_fsma204_cteFSMA 204 Critical Tracking Event (CTE) ValidatorA
Read-onlyIdempotent
Inspect

FSMA 204 Critical Tracking Event (CTE) Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-119-traceability-lot-code-linker. Open at: https://ainumbers.co/chaingraph/art-118-fsma204-cte-validator.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: Validate required Key Data Elements present for each FDA FSMA 204 Critical Tracking Event (harvesting/cooling/initial packing/shipping/receiving/transformation) per the Food Traceability List. Outputs: cte_type, cte_valid, ftl_food, missing_kdes. Output schema: call describe_tool("validate_fsma204_cte").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses server-side versus browser execution, transient processing with no storage/logging/retention, and export of an AP2 artifact with execution_hash. These are useful behavioral details not covered by the read-only/idempotent annotations, though auth and rate-limit behavior are not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and somewhat repetitive, starting with repeated OpenChainGraph compute-node boilerplate before reaching the actual validation summary later. It contains useful details, but the front-loading is weaker than ideal.

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?

For a complex compliance validation tool with no output schema, the description identifies the validated CTE types, Food Traceability List context, and output fields cte_type, cte_valid, ftl_food, and missing_kdes. It is nearly complete, though the nested policy parameters could be made more explicit.

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 the four parameters, including compute modes and chaining fields. The description adds little parameter-specific meaning beyond the summary's mention of KDEs and CTE types, so the baseline of 3 is appropriate.

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 description states a specific verb and resource: validate required Key Data Elements for each FDA FSMA 204 Critical Tracking Event per the Food Traceability List. It is clear what the tool does, but it does not explicitly distinguish this validator from sibling validation tools.

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 description gives some implied usage context, such as the output feeding art-119-traceability-lot-code-linker, but it does not state when to use this tool versus alternatives or when not to use it. The compute mode guidance is operational rather than usage-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_fund_collateralTokenized Fund Collateral ValidatorA
Read-onlyIdempotent
Inspect

Tokenized Fund Collateral Validator: OpenChainGraph compute node (collateral_mandate). 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: 505-tokenized-collateral-eligibility-checker. Open at: https://ainumbers.co/tools/514-tokenized-fund-collateral-validator.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: Validate tokenized MMF / CNAV / LVNAV / VNAV fund shares as collateral. Outputs: adjusted_collateral_value, eligibility, haircut_applied, hqla_tier. Output schema: call describe_tool("validate_fund_collateral").

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". Unknown keys are refused.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description provides highly detailed behavioral traits not in annotations, such as the deterministic nature of the OpenChainGraph compute node, the transient processing of inputs (no logging/storage), and the output of a specific AP2 artifact with an execution_hash.

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?

The description is overly dense, highly technical, and packed with low-level implementation details (e.g., 'OpenChainGraph compute node', 'Cloudflare Workers', 'gpu:false') that do not aid a typical AI agent's decision-making process in a concise manner. It sacrifices readability for exhaustive technical detail.

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?

Given the inherent complexity of the tool (multiple input types, dependency on upstream artifacts, specific compute modes), the description is remarkably complete regarding its operational constraints, data handling, and expected outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the focus shifts to adding conceptual meaning. The description clarifies that `parent_hashes` are execution hashes from upstream artifacts and that `policy_parameters` are the inputs for the decision function, adding semantic weight beyond the schema definitions.

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?

The summary explicitly states the core function: 'Validate tokenized MMF / CNAV / LVNAV / VNAV fund shares as collateral.' The title and name clearly align with this purpose and its technical domain.

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?

It provides clear contextual clues about when to use the tool (when dealing with tokenized fund collateral) and critical constraints (inputs must be synthetic or anonymized). It also references specific upstream artifacts, guiding the agent on prerequisite data flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_ifrs17_csm_rollforwardIFRS 17 CSM Roll-Forward ValidatorB
Read-onlyIdempotent
Inspect

IFRS 17 CSM Roll-Forward Validator: OpenChainGraph compute node (compliance_mandate). 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-177-ifrs17-measurement-model-classifier. Output feeds: art-179-ifrs17-risk-adjustment-checker. Open at: https://ainumbers.co/chaingraph/art-178-ifrs17-csm-rollforward-validator.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: Validate IFRS 17 Contractual Service Margin (CSM) roll-forward mechanics: opening CSM + new business + interest accretion + experience adjustments - coverage-unit release + FX adjustments = closing CSM. Outputs: closing_csm, csm_valid, experience_adjustments, fx_adjustments, interest_accretion, loss_component, new_business_csm, onerous, opening_csm, release_to_profit. Output schema: call describe_tool("validate_ifrs17_csm_rollforward").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only/idempotent/non-destructive, and the description adds genuinely new behavior: compute mode dispatch (auto/server/browser delegation, gpu:true always delegates), transient non-retained input processing, refusal of unknown keys, and AP2 export with execution_hash for chaining. This is substantive context beyond the structured fields, though the FV-status receipt paragraph is largely provenance noise for an invoking agent.

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?

The genuinely useful content (the roll-forward formula and the output field list) arrives at the very end, after long stretches of compute-binding, privacy, and FV-status receipt text. The title merely restates the tool name, and multiple sentences (hash receipt URL, offline verification note) do not earn their place for a caller.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output fields are enumerated in prose (compensating for the absent output schema), and the upstream/downstream artifact chaining is spelled out. However, for a tool whose only real input is policy_parameters, leaving that object's expected contents undefined is a material gap an agent must resolve by trial or by calling describe_tool.

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 compute, parent_hashes, and parent_tool_ids, making 3 the baseline. The description does not clarify the opaque policy_parameters.csm object (which has an empty schema) beyond implying the roll-forward components—an agent still cannot tell what keys to supply.

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 Summary sentence states a specific verb and resource ('Validate IFRS 17 Contractual Service Margin (CSM) roll-forward mechanics') and spells out the exact roll-forward identity, so an agent knows precisely what is computed. It does not explicitly name its nearest siblings (track_ifrs17_loss_component_rollforward, reconcile_sii_ifrs17), and the purpose statement is buried after several sentences of compute-node boilerplate.

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: the chain context ('Consumes upstream artifacts from art-177... Output feeds art-179...') tells an agent where this sits in a pipeline, but there is no explicit when-to-use, when-not-to-use, or alternative named against the many other IFRS 17 tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_input_attestationsValidate ChainGraph input attestationsA
Read-onlyIdempotent
Inspect

Verify an artifact's input_attestations[] (ChainGraph Standard §23): per RFC 6901 pointer, checks the attested value resolves inside policy_parameters and its digest binding matches, then verifies each type along its own path -- vc-2.0 via the shipped §16/§13.11 Data Integrity proof, rfc3161-snapshot via the same §20 rfc3161-tst verifier (no second RFC 3161 implementation), c2pa-manifest structurally (hard-binding digest match), zktls structurally-only (reported verifiable:"external" -- OCG never treats it as confirmed). Returns one { pointer, type, structural, verifiable } record per entry. Pure client-safe compute, zero network.

NameRequiredDescriptionDefault
artifactNoA full ChainGraph artifact envelope carrying input_attestations[] and policy_parameters.
policy_parametersNoArtifact policy_parameters (if not passing a full artifact).
input_attestationsNoThe input_attestations[] array (if not passing a full artifact).

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond the annotations by stating 'Pure client-safe compute, zero network' (consistent with openWorldHint=false / readOnlyHint=true) and by disclosing the important semantic that zktls is reported verifiable:"external" and is never treated as confirmed. It also names the return shape, one { pointer, type, structural, verifiable } record per entry, which annotations cannot convey. It does not say how a failed pointer/digest surfaces (error vs. structural:false), so it falls short of 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?

One dense, front-loaded sentence that opens with the verb and scope, then walks the per-type paths and closes with the return shape and the zero-network property. Every clause carries information, though the §-number and RFC jargon density make it harder to skim than it needs to be.

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 nested-object tool with no output schema, the description supplies the missing pieces: the return record shape, the trust semantics per attestation type, and the execution profile (pure compute, no network). Given the schema already covers all three parameters at 100% coverage, nothing an agent needs to call this correctly is materially absent.

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 all three parameters (artifact, policy_parameters, input_attestations) are already documented in the schema. The description adds some meaning by explaining that attestations resolve inside policy_parameters, but it never explains the either/or relationship between passing a full artifact and passing the split fields — the one semantic an agent actually needs given 0 required parameters.

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?

Specific verb (verify/validate) plus a precise resource: an artifact's input_attestations[] under ChainGraph Standard §23, with per-pointer resolution and digest-binding checks. It enumerates the per-type verification paths (vc-2.0, rfc3161-snapshot, c2pa-manifest, zktls), so the scope is unambiguous. It never distinguishes itself from the sibling verify_input_attestations, which is the one clear gap for a top score.

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 — an agent can infer this is the check to run before consuming an artifact carrying input_attestations[]. There is no explicit when-to-use/when-not, no statement about prerequisites (must the artifact already carry policy_parameters?), and no routing to the near-identical verify_input_attestations sibling or to validate_c2pa_manifest.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_mcp_authorization_metadataMCP Authorization Metadata Validator (RFC 9728)A
Read-onlyIdempotent
Inspect

MCP Authorization Metadata Validator (RFC 9728): OpenChainGraph compute node (compliance_mandate). 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-147-mcp-server-identity-attestation-validator. Output feeds: art-149-mcp-registry-entry-conformance. Open at: https://ainumbers.co/chaingraph/art-148-mcp-authorization-metadata-validator.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: Validate OAuth 2.0 Protected Resource Metadata per RFC 9728: resource URI (https-scheme), non-empty authorization_servers, scopes_supported, and bearer_methods_supported restricted to header/body/query. Outputs: auth_server_count, bearer_ok, metadata_valid, missing, resource_ok, scope_count. Output schema: call describe_tool("validate_mcp_authorization_metadata").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the description adds genuinely new context: deterministic compute, server vs browser execution modes, that inputs are processed transiently and not stored or logged, and that an AP2 artifact with execution_hash is exported. That is real behavioral disclosure beyond the annotation set.

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?

The name/title is restated, then 'OpenChainGraph compute node' and 'Deterministic OpenChainGraph compute node' appear as near-duplicate sentences before any statement of what the tool validates. Purpose-critical content sits at the end behind compute-mode, data-retention, and FV-status boilerplate, so the text is poorly front-loaded despite some genuinely necessary detail.

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?

With no output schema, the description usefully enumerates the return keys (auth_server_count, bearer_ok, metadata_valid, missing, resource_ok, scope_count) and points to describe_tool for the full schema. Combined with the validation rule list and chaining context, an agent has enough to call it correctly, though the compute/artifact boilerplate dilutes rather than completes the picture.

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 schema already documents every parameter, including the full compute-mode enum and the parent_hashes/parent_tool_ids pairing rule. The description restates compute mode behavior but adds nothing about parent_hashes, parent_tool_ids, or policy_parameters beyond what the schema says, so 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?

The 'Summary' clause gives a specific verb and resource — validate OAuth 2.0 Protected Resource Metadata per RFC 9728 — and enumerates the actual checks (https resource URI, non-empty authorization_servers, scopes_supported, bearer_methods_supported restricted to header/body/query). However, this is buried after a large boilerplate block, and the distinction from siblings like validate_mcp_server_identity or lint_mcp_server_conformance is only implied via artifact chain references rather than stated.

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?

No explicit 'use this when…' statement or exclusion of alternatives. Usage is only implied through the provenance chain ('Consumes upstream artifacts from: art-147-mcp-server-identity-attestation-validator. Output feeds: art-149-mcp-registry-entry-conformance'), which suggests ordering but not the conditions selecting this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_mcp_server_identityMCP Server Identity Attestation ValidatorA
Read-onlyIdempotent
Inspect

MCP Server Identity Attestation Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-148-mcp-authorization-metadata-validator. Open at: https://ainumbers.co/chaingraph/art-147-mcp-server-identity-attestation-validator.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: Validate a new-spec MCP server identity document: required claims (subject, issuer, serverInfo), well-known path correctness (/.well-known/mcp-server-identity), and attestation reference present. Outputs: attested, has_issuer, has_server_info, has_subject, identity_valid, missing. Output schema: call describe_tool("validate_mcp_server_identity").

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". Unknown keys are refused.

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/non-open-world, so the safety bar is met. The description adds substantial context beyond that: compute modes ('auto' server-side on Cloudflare Workers vs 'browser' delegation URL), gpu:true always delegating, transient processing with no storage or logging, and an exported AP2 artifact carrying execution_hash. These are real operational behaviors not visible in 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The most decision-relevant sentence is placed last, after a long block of platform boilerplate, a full documentation URL, and a 64-character FV-status hash path. Multiple sentences ('OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.') are redundant restatements. The structure actively works against quick selection.

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?

With no output schema, the description compensates by listing the return fields (attested, has_issuer, has_server_info, has_subject, identity_valid, missing) and pointing to describe_tool for the full schema. Combined with full annotations and 100% schema coverage, an agent has enough to call it correctly; only the sibling-disambiguation gap remains.

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 all four parameters, including the compute enum and the parent_hashes/parent_tool_ids ordering contract. The description restates the compute behavior but never explains policy_parameters or the chaining parameters, so it adds little beyond the schema. 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?

The 'Summary:' sentence names a specific verb and resource (validate a new-spec MCP server identity document) and enumerates the concrete checks: required claims (subject, issuer, serverInfo), /.well-known/mcp-server-identity path correctness, and attestation reference presence. That is far more specific than a tautology. It loses a point because the purpose is buried at the very end behind boilerplate, and it never contrasts itself with near siblings such as validate_mcp_server_json or lint_mcp_server_conformance.

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 phrase 'new-spec MCP server identity document' implicitly scopes usage and 'Output feeds: art-148-mcp-authorization-metadata-validator' gives downstream chaining context. However, there is no explicit when-to-use/when-not statement and no named alternative for older-spec or generic server JSON validation, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_mcp_server_jsonMCP server.json Validator & Registry-Ready Skeleton GeneratorA
Read-onlyIdempotent
Inspect

Validate an MCP server.json against the 2025-12-11 schema and the official registry publishing rules; returns findings, a registry-readiness score, and an optional compliant skeleton. Use when a developer wants to check a server.json before publishing to the MCP Registry. Renders the interactive AINumbers tool as a widget; inputs are applied via the AIN Bridge and the tool runs client-side (zero PII, zero network). Output schema: call describe_tool("validate_mcp_server_json").

NameRequiredDescriptionDefault
inputsNoMap of tool input element IDs to values (see manifest input_schema). Applied via AIN Bridge prefill.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, closed-world), and the description adds genuinely new behavior: it returns findings plus a readiness score and an optional skeleton, and it runs client-side with zero network/zero PII. What's missing is any statement about limits of the validation (which rules are enforced, how failures are reported).

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?

Purpose and outputs are front-loaded in the first sentence, with usage context and runtime characteristics following. The final pointer to describe_tool is a slightly awkward substitute for real output documentation but costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Explaining the return payload compensates for the absent output schema, and the client-side/no-network note covers behavior. However, an agent still cannot tell what to put inside the free-form 'inputs' map, which is the one thing it must get right to invoke this tool 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?

There is a single opaque 'inputs' object at 100% schema description coverage, so the baseline is 3. The description only restates the transport detail ('inputs are applied via the AIN Bridge'), adding nothing about which element IDs or keys a caller should pass.

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 and resource (validate an MCP server.json) plus the exact standard (2025-12-11 schema) and the output artifacts (findings, registry-readiness score, optional skeleton). That separates it from siblings like lint_mcp_server_conformance or check_mcp_registry_entry by implication, but it never names an alternative, so the boundary with score_mcp_server_readiness (which also produces a readiness score) stays fuzzy.

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?

The sentence 'Use when a developer wants to check a server.json before publishing to the MCP Registry' gives a clear triggering context. No when-not conditions or named alternatives are offered, and with many overlapping MCP-* siblings, a routing hint would have helped.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_mcp_task_lifecycleMCP Task Lifecycle State Machine ValidatorB
Read-onlyIdempotent
Inspect

MCP Task Lifecycle State Machine Validator: OpenChainGraph compute node (compliance_mandate). 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-151-agent-obo-mandate-validator. Open at: https://ainumbers.co/chaingraph/art-152-mcp-task-lifecycle-validator.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: Validate that a long-running MCP task state transitions are legal per the new MCP specification state machine: working to input_required or terminal states (completed, failed, cancelled); input_required back to working or terminal. Outputs: illegal_transitions, lifecycle_valid, transition_count. Output schema: call describe_tool("validate_mcp_task_lifecycle").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely non-obvious traits: server-vs-browser compute delegation, GPU nodes always delegating, transient non-retained processing, and an exported AP2 artifact carrying execution_hash plus consumption of an upstream artifact (art-151). It stops short of describing pagination/error behavior, but for a compute node the disclosure is above the annotation baseline.

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?

The text is dominated by non-load-bearing boilerplate — a marketing URL, an FV-status hash path, and repeated 'OpenChainGraph compute node' phrasing — while the single sentence that actually defines the tool sits at the very end. Front-loading is inverted and several sentences are near-duplicates.

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?

For a zero-required-parameter compute node with no output schema, the description names the three return keys (illegal_transitions, lifecycle_valid, transition_count) and covers compute mode and provenance chaining. The remaining hole is the undefined structure of policy_parameters.transitions, which an agent would need in order to call it 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%, so the baseline is 3; the description's compute-mode paragraph largely restates the 'compute' enum description already in the schema. Crucially it says nothing about the shape of policy_parameters.transitions, whose schema is an empty object, leaving the most important input undocumented in both places.

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 final 'Summary' sentence states a specific verb+resource and enumerates the legal transitions (working → input_required/terminal, input_required → working/terminal) plus named outputs, so an agent can tell what it computes. However, this is buried under generic OpenChainGraph boilerplate, and it never distinguishes itself from nearby validators such as validate_emir_lifecycle_event or lint_mcp_tool_definition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use section, no exclusions, and no named alternative. The only usage constraint is 'Use synthetic or anonymised inputs only', which is a data-handling rule rather than selection guidance. An agent must infer from the name whether this or a sibling MCP validator applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_mletr_recordMLETR / eBL Conformance & Enforceability ValidatorB
Read-onlyIdempotent
Inspect

MLETR / eBL Conformance & Enforceability Validator: OpenChainGraph compute node (compliance_mandate). 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-52-digital-trade-fit-diagnostic. Output feeds: 510-digital-asset-regulatory-classifier, cry-04-merkle-batch-verifier, ml-02-credit-default-risk-scorer. Open at: https://ainumbers.co/chaingraph/art-53-mletr-ebl-conformance-validator.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: Validates an electronic transferable record (eBL or other ETR) against MLETR functional-equivalence tests (Arts. Outputs: conformance_grade, conformance_score, corridor_matrix, enforceability_tier, governing_law_recommendation, note, remediation_checklist, status_table_asof, test_results. Output schema: call describe_tool("validate_mletr_record").

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". Unknown keys are refused.

TDQS

B3.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), so the description's added value is in the compute-mode behavior, transient/no-retention data handling, 'synthetic or anonymised inputs only' constraint, and the exported AP2 artifact with execution_hash. That is genuine behavioral context beyond the annotations, though it is delivered as dense boilerplate rather than targeted guidance.

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?

Front-loading fails badly: the opening is compute-binding boilerplate and a raw FV-status hash URL, while the actual purpose appears truncated at the tail. Substantial text (compute modes, artifact chaining, provenance hash) is generic platform scaffolding rather than tool-specific guidance, so much of it does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema present, the description does list the return fields (conformance_grade, conformance_score, corridor_matrix, enforceability_tier, remediation_checklist, test_results), which is helpful. But the truncated purpose sentence leaves the actual MLETR article tests unnamed, and the policy_parameters contract remains opaque, so an agent still lacks the specifics needed to invoke it 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 description coverage is 100%, including full prose on compute, parent_hashes and parent_tool_ids, so the schema carries the load and the baseline is 3. The description adds nothing about the nine nested policy_parameters keys (platform, record_type, governing_law, control_method, etc.), which have empty schemas and would benefit most from explanation.

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 final 'Summary' sentence gives a specific verb and resource: validates an electronic transferable record (eBL/ETR) against MLETR functional-equivalence tests. It is buried at the end and the sentence is truncated mid-citation ('Arts.'), and it never distinguishes itself from nearby siblings like check_etr_control_evidence or lookup_mletr_jurisdiction_adoption.

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 context is only implied through the upstream/downstream chain lists (consumes art-52-digital-trade-fit-diagnostic, feeds three named tools), which hints at where in a workflow it belongs. There is no explicit statement of when to choose this over the MLETR-adjacent siblings, and no prerequisites beyond the synthetic-input note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_mt700_lc_fieldsMT700 LC Field ValidatorA
Read-onlyIdempotent
Inspect

MT700 LC Field Validator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-474-validate-mt700-lc-fields.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: Validates SWIFT MT700 Documentary Credit field-format and date-logic conformance against UCP 600 / MT700 mandatory-field rules: DC number, form of credit, issue/expiry/shipment dates, currency and amount, availability terms, shipment terms, goods description, documents required, presentation peri... Outputs: compliant, error_count, errors, field_results, score, verdict, warning_count, warnings. Output schema: call describe_tool("validate_mt700_lc_fields").

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: as_of_date, fields. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses server-side vs browser compute behavior, transient processing and no retention/logging, AP2 artifact export with execution_hash, and FV-status receipt semantics. This adds substantive operational context without contradicting the readOnly, idempotent, non-destructive annotations.

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?

The description is bloated with repeated OpenChainGraph boilerplate, a full URL, FV-status receipt text, and a truncated summary. The actual validator purpose appears late and the text contains redundancy such as 'OpenChainGraph compute node' followed immediately by 'Deterministic OpenChainGraph compute node.'

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?

With no output schema, the description helpfully lists output fields including compliant, error_count, errors, field_results, score, verdict, warning_count, and warnings. It also covers compute and privacy behavior, though the truncated summary and heavy boilerplate keep it from being fully complete.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters. The description repeats compute behavior but does not add field-level meaning beyond the schema, making the baseline 3 appropriate.

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?

The description identifies a specific verb and resource: validating SWIFT MT700 Documentary Credit field-format and date-logic conformance against UCP 600 / MT700 mandatory-field rules. It enumerates the covered fields, making it distinguishable from generic LC or MT message tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not say when to use this validator versus alternatives such as examine_lc_document_presentation, check_mt101_coexistence_readiness, or analyze_dc_vs_lc_cost_benefit. It explains compute modes but provides no usage exclusions or decision guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_nft_metadata_art209NFT Metadata ValidatorA
Read-onlyIdempotent
Inspect

NFT Metadata Validator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-209-nft-metadata-validator.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: Validates NFT metadata against ERC-721 and ERC-1155 required fields plus OpenSea metadata schema recommendations. Outputs: all_pass, checks, disclaimer, fail_count, field_count, required_pass, valid, warn_count. Output schema: call describe_tool("validate_nft_metadata_art209").

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: metadata. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, but the description adds genuinely useful behavior beyond them: inputs are processed transiently and not stored or logged, only synthetic/anonymised inputs are permitted, an AP2 artifact with execution_hash is exported, and gpu:true nodes always delegate to the browser. That is substantive context a caller could not get from the annotations, though it does not describe error or failure semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is buried at the end of the text behind 'OpenChainGraph compute node' boilerplate, and the phrase is repeated twice back-to-back. The FV-status URL and hash snapshot sentence is long and only marginally relevant to invoking the tool, though the total remains navigable.

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?

With no output schema, the definition compensates by enumerating the returned fields (all_pass, checks, valid, fail_count, required_pass, warn_count, etc.) and pointing to describe_tool for full output schema. Combined with data-handling disclosures, an agent has enough to call it correctly, though artifact/provenance semantics of the AP2 export remain thin.

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 compute, parent_hashes, parent_tool_ids and the required metadata key inside policy_parameters. The description's compute-mode paragraph largely restates the schema's own enum documentation and adds no new parameter-level detail, 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?

The final summary sentence names the specific verb and resource — validating NFT metadata against ERC-721, ERC-1155 and OpenSea schema rules — which is precise enough to distinguish it from most siblings. However, the opening line leads with 'OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node' rather than the purpose, and no sibling such as validate_c2pa_manifest or prove_metadata_sanitization is explicitly differentiated.

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: the agent can infer it should call this when validating NFT metadata, and the compute-mode paragraph implies when to pick server vs browser. There is no explicit when-to-use/when-not statement and no routing to alternatives among the many validate_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_openids_homeowners_recordopenIDS Homeowners Record ValidatorB
Read-onlyIdempotent
Inspect

openIDS Homeowners Record Validator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-256-validate-openids-homeowners-record.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: Validates homeowners insurance data records against the openIDS Homeowners Data Standard v1.0 (AAIS / Linux Foundation, November 2025) -- the first free open (Apache-2.0) insurance data standard. Outputs: error_count, errors, not_legal_advice, pii_fields_found, pii_note, record_valid, regulatory_basis, section_results, sections_present, sections_required, standard_version, table_source, warning_count, warnings. Output schema: call describe_tool("validate_openids_homeowners_record").

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: record. Unknown keys are refused.

TDQS

B3.2/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), and the description adds real behavioral context beyond them: compute modes and where execution happens, that gpu:true always delegates to the browser, that inputs are processed transiently and not stored, logged, or retained, and that an AP2 artifact with execution_hash is exported for chain provenance. Some of this is padded with non-behavioral material (the FV-status URL and hash), which keeps it from 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is not front-loaded: it opens with four sentences of platform/boilerplate (OpenChainGraph compute node, Cloudflare Workers, transient processing, FV-status snapshot URL plus a 64-character hash) before reaching the actual purpose in the 'Summary:' clause. The output field enumeration at the end is useful but adds to the sprawl.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the returned fields (record_valid, errors, section_results, regulatory_basis, etc.) is a genuine contribution. However, the nested `record` object is typed as an empty object with no description anywhere, and the description never says what a conformant record must contain or reference the standard's required sections, leaving the primary input underspecified.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters; the description's compute-mode explanation is largely redundant with the schema's own enum description. It adds nothing about the required `record` payload inside policy_parameters, which is the one parameter whose shape the schema leaves undefined.

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 'Summary:' sentence gives a specific verb+resource+scope: validating homeowners insurance data records against the openIDS Homeowners Data Standard v1.0 (AAIS / Linux Foundation). That is enough to distinguish it from generic validators like lint_mismo_ulld_ulad or validate_fsma204_cte, though the actual purpose is buried after several sentences of platform boilerplate rather than stated up front.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance and no named alternative among the many sibling validators. The only usage-adjacent statement is the constraint 'Use synthetic or anonymised inputs only', which restricts inputs but does not help an agent decide when this tool rather than another validator applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_openvex_statementOpenVEX Statement ValidatorB
Read-onlyIdempotent
Inspect

OpenVEX Statement Validator: OpenChainGraph compute node (compliance_mandate). 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-136-slsa-provenance-verifier. Open at: https://ainumbers.co/chaingraph/art-137-openvex-statement-validator.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: Validates an OpenVEX document: @context includes openvex.dev, every statement carries vulnerability, products[], status in [not_affected,affected,fixed,under_investigation], and not_affected statements must include justification. Outputs: context_ok, invalid_statements, statement_count, vex_valid. Output schema: call describe_tool("validate_openvex_statement").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, but the description adds substantive context beyond them: deterministic execution, server-vs-browser compute modes, transient processing with no storage/logging, and an AP2 artifact export with execution_hash. The phrase 'Exports an AP2 artifact' sits slightly awkwardly against readOnlyHint=true, but in context it reads as an output-return mechanism rather than a persistent side effect, so no contradiction is flagged.

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?

The description is long and front-loaded with infrastructure boilerplate (OpenChainGraph compute node, Cloudflare Workers kernels, FV-status JSON path, AP2 provenance) before the actual validation purpose appears in the final Summary sentence. Much of the text does not help an agent select or invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description compensates by listing the return fields (context_ok, invalid_statements, statement_count, vex_valid) and the validation rules. However, it does not explain how the OpenVEX document is supplied (presumably under policy_parameters.vex) or the expected input shape, leaving a gap for invocation.

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 baseline is 3. The description restates the compute modes and mentions that outputs are produced, but does not add meaning beyond the schema for policy_parameters or the nested 'vex' input, which is where the actual document to validate is passed.

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 Summary sentence states a specific verb and resource: validates an OpenVEX document, and enumerates the exact rules checked (@context includes openvex.dev, statement fields, status enum, justification requirement). It does not explicitly differentiate from sibling validators such as validate_cyclonedx_sbom, but the OpenVEX specificity makes the target clear.

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 implied: use this to validate OpenVEX vulnerability-exploitability documents. The mention of consuming upstream artifacts from art-136-slsa-provenance-verifier gives some workflow context, but there is no explicit when-to-use/when-not-to-use guidance or named alternative validator.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_pacs008_party_completenesspacs.008 Party Completeness ValidatorA
Read-onlyIdempotent
Inspect

pacs.008 Party Completeness Validator: OpenChainGraph compute node (compliance_mandate). 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-241-cbpr-structured-address-linter. Output feeds: art-246-lei-payment-binding-linter. Open at: https://ainumbers.co/chaingraph/art-242-pacs008-party-completeness-validator.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: Validates BIS CPMI d218 harmonised data requirements for a pacs.008 payment instruction: UETR UUIDv4 format, debtor and creditor names, BIC format, LEI format (presence and format; full mod-97 check-digit validation is in lint_lei_payment_binding art-246), and purpose code format. Outputs: compliant, cpmi_d218_score, disambiguation, error_count, field_status, issues, pii_note, regulatory_basis, table_source, table_version, warning_count. Output schema: call describe_tool("validate_pacs008_party_completeness").

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: creditor_agent_bic, creditor_lei, creditor_name, debtor_agent_bic, debtor_lei, debtor_name, purpose_code, uetr. Unknown keys are refused.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish a safe read-only, idempotent, non-destructive profile, and the description adds substantial operational context: deterministic execution, server-side versus browser delegation behavior, transient processing with no storage or logging, synthetic-input requirements, and an exported AP2 artifact carrying execution_hash for provenance. These details go well beyond what annotations and schema provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The key purpose is buried in a late 'Summary' after extensive platform, compute-mode, artifact, and FV-status details, and some content such as the compute-mode explanation duplicates the schema. It remains organized and mostly relevant, but it is bloated for a single validator and not front-loaded.

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 validation tool with nested policy parameters and no output schema, the description supplies the validation scope, upstream/downstream workflow, data-handling constraints, and output field names. It also directs the agent to describe_tool for the full output schema. This is enough for an agent to invoke the tool correctly and understand what it returns.

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 schema already documents names and required policy_parameters keys. The description adds useful semantic meaning by specifying the validation expectations for those keys: UETR must be UUIDv4, names must be present, BIC and LEI formats are checked, and purpose code format is validated, while full LEI check digits are delegated to a sibling. It does not explain every top-level parameter in detail, but the important domain parameters are clarified.

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?

The description states a specific verb and resource: validates BIS CPMI d218 harmonised data requirements for a pacs.008 payment instruction, enumerating UETR, debtor/creditor names, BIC, LEI, and purpose code checks. It also distinguishes the tool from lint_lei_payment_binding, which handles full mod-97 check-digit validation. The core purpose is therefore unambiguous despite being placed after platform metadata.

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?

The description gives clear workflow context: it consumes artifacts from art-241-cbpr-structured-address-linter and feeds art-246-lei-payment-binding-linter, and it notes that full LEI check-digit validation belongs in lint_lei_payment_binding. It also requires synthetic or anonymised inputs. It stops short of a full when-not-to-use statement, so it is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_private_inputsValidate ChainGraph private-input commitmentsA
Read-onlyIdempotent
Inspect

Verify an artifact's private_inputs[] (ChainGraph Standard §25 ocg-private-input@1) WITHOUT ever seeing the plaintext witness: per RFC 6901 pointer, checks the pointed value inside policy_parameters IS the declared sha256-salted@1 commitment (never the plaintext, §25.2), that the commitment scheme is known, and -- when a §18 compute_proof is present -- that its journal commits the same commitment and binds output_payload. Optionally accepts an out-of-band {pointer, salt, input_value} disclosure package (authorized-verifier path) and recomputes sha256(salt || cgCanon(input_value)) to confirm it equals the commitment. Returns one {pointer, verifiable} record per entry: "proof-only" | "disclosed-verified" | "commitment-only" (no proof yet -- structural + plaintext-exclusion only) | "failed". Pure client-safe compute, zero network, never requires the plaintext.

NameRequiredDescriptionDefault
artifactNoA full ChainGraph artifact envelope carrying private_inputs[], policy_parameters, and optionally output_payload + audit_signature.compute_proof.
disclosuresNoOPTIONAL authorized-verifier disclosure packages, keyed by pointer, for the disclosed-verified path.
compute_proofNoaudit_signature.compute_proof (if not passing a full artifact).
output_payloadNoArtifact output_payload (if not passing a full artifact).
private_inputsNoThe private_inputs[] array (if not passing a full artifact).
policy_parametersNoArtifact policy_parameters (if not passing a full artifact).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent/non-destructive annotations by disclosing the trust model: pure client-safe compute, zero network, plaintext never required, and the exact failure semantics of each result class (proof-only, disclosed-verified, commitment-only, failed). The commitment-only caveat ('structural + plaintext-exclusion only') is a genuinely important behavioral warning.

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?

Purpose is front-loaded in the first clause, and nearly every clause carries operational information (pointer semantics, scheme check, proof cross-binding, disclosure path, result taxonomy). It is a dense single block with spec reference noise, which costs a point, but nothing is truly redundant.

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?

No output schema exists, yet the description enumerates the per-entry {pointer, verifiable} result states, which is the essential return contract. It stops short of stating that the tool needs either a full artifact or the component fields (0 required params), a minor selection gap for a 6-parameter tool.

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% and already notes artifact-vs-components alternatives, but the description adds real meaning: the disclosure object is a {pointer, salt, input_value} authorized-verifier package and the recomputation formula is sha256(salt || cgCanon(input_value)). That explains what the otherwise-undocumented disclosure fields are for and what a 'verified' result means.

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) plus resource (private_inputs[] commitments) and the exact spec clause (§25 ocg-private-input@1). The differentiating constraint -- verification without plaintext witness -- is stated up front, so an agent can distinguish this from sibling validators like verify_input_attestations or validate_private_inputs-style checks.

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?

Tells the agent when each mode applies: proof present vs. absent, and when the optional disclosure package is used (authorized-verifier path). It does not name a sibling tool as the alternative for the proof-only case, which keeps it below 5, but the conditions are explicit enough to select correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_pvp_settlementMulti-Currency PvP ValidatorB
Read-onlyIdempotent
Inspect

Multi-Currency PvP Validator: OpenChainGraph compute node (settlement_mandate). 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: 507-canton-dvp-atomicity-validator, 505-tokenized-collateral-eligibility-checker. Open at: https://ainumbers.co/tools/511-multi-currency-pvp-validator.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: Validate atomic Payment-vs-Payment (PvP) settlement across currency pairs. Outputs: has_canton_leg. Output schema: call describe_tool("validate_pvp_settlement").

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: atomicity_type, canton_leg, finality_type, has_unwind_procedure, legs. Unknown keys are refused.

TDQS

B3.4/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 the description adds real value beyond them: transient processing with no storage, logging or retention, deterministic execution, the compute:auto/browser/server delegation semantics, and an exported AP2 artifact carrying execution_hash for provenance. The only weakness is that the description's 'decision function' behavior — i.e. what criteria decide validity — is never characterized.

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?

The single most useful sentence — what the tool actually does — is placed last, behind compute-binding boilerplate, a marketing URL, and a full FV-status hash path that does nothing to help an agent select or invoke the tool. Front-loading is inverted and a large fraction of the text does not earn its place for tool-selection purposes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Safety and data-handling behavior is well covered (aided by annotations plus explicit non-retention language), and with no output schema the description helpfully names has_canton_leg and points to describe_tool for the full shape. What is missing is the substance of the decision function and its relationships to the many sibling settlement-finality validators, so an agent still cannot gauge when this validator rather than a cousin is the right call.

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 each of the four parameters (compute, parent_hashes, parent_tool_ids, policy_parameters) is already documented in-schema, so the schema carries the load. The description does add one useful semantic: parent_hashes are execution_hash values from upstream ChainGraph AP2 artifacts, tying them to the two named producer tools; but the required keys it lists for policy_parameters merely repeat the schema.

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 a specific verb+resource: 'Validate atomic Payment-vs-Payment (PvP) settlement across currency pairs', and names the output (has_canton_leg). However, the actual purpose is buried after a wall of infrastructure boilerplate about compute modes and FV receipts, and it never distinguishes itself from nearby siblings such as validate_canton_dvp_atomicity, check_cash_leg_finality, or classify_settlement_finality.

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?

There is no explicit when-to-use/when-not guidance or named alternative. The only usage signal is indirect: it 'consumes upstream artifacts from' the Canton DvP atomicity validator and tokenized collateral eligibility checker, which implies this is a downstream step in a chain rather than a standalone check.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_qfc_recordkeeping_fileQFC Part 371 Recordkeeping File ValidatorB
Read-onlyIdempotent
Inspect

QFC Part 371 Recordkeeping File Validator: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-537-qfc-recordkeeping-file-validator.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: Validates the shape of the institution's own 12 CFR part 371 qualified-financial-contract recordkeeping file -- the position, counterparty, and collateral record set the appendix to part 371 requires -- against its published record layout, and ties the file's declared totals to a supplied control... Outputs: as_of_date, boundary, conforming_row_count, control_totals, control_totals_supplied, decision, file_structure_errors, file_totals, identifier_salting, institution_ref, mismatches, note, qfc_code_handling, rationale, supplied_row_count, totals_mismatch. Output schema: call describe_tool("validate_qfc_recordkeeping_file").

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: as_of_date, control_totals, file_records, institution_ref. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the bar is lower. The description still adds non-obvious behavior: deterministic compute, server-side vs browser delegation, gpu:true nodes always delegating, transient processing with no storage or logging, and export of an AP2 artifact with execution_hash. That is meaningful context beyond the annotations, even if some of it is repeated in the compute parameter schema.

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?

The actual purpose appears after a large block of OpenChainGraph boilerplate about Cloudflare Workers, compute modes, privacy, and an fv-status URL, and the summary sentence is even cut off with an ellipsis. The description is not front-loaded and contains several sentences that do not help an agent select or invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives the core purpose, compute behavior, privacy constraints, and a list of output fields, and it points to describe_tool for the output schema. It still leaves the validation decision logic, mismatch semantics, and required policy_parameters contents largely unexplained, so it is adequate but incomplete for a nested-input compliance validator.

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 compute, parent_hashes, parent_tool_ids, and the nested policy_parameters fields. The description adds only a general reference to tying declared totals to a supplied control and does not explain the required policy_parameters keys or how file_records should be shaped. Baseline 3 is appropriate when the schema does the heavy lifting.

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 summary sentence states a specific verb and resource: it validates the institution's own 12 CFR part 371 QFC recordkeeping file against its published record layout and ties declared totals to a supplied control. That is clearly more than a tautology and is domain-specific enough to separate it from most siblings, though it never explicitly names or contrasts an alternative validator.

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 implied by the compliance purpose and constrained by 'Use synthetic or anonymised inputs only' and by the compute-mode guidance. However, the description never says when to choose this over sibling tools such as validate_fdic370_output_file or compute_recordkeeping_completeness_mapper, and it gives no exclusions or prerequisites beyond the input-safety note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_regf_call_frequencyReg F Call-Frequency Presumption ValidatorB
Read-onlyIdempotent
Inspect

Reg F Call-Frequency Presumption Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-403-check-debt-validation-notice. Open at: https://ainumbers.co/chaingraph/art-402-validate-regf-call-frequency.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: Checks a declared debt-collection call log against the two 12 CFR 1006.14(b) Regulation F rebuttable presumptions: more than seven telephone calls to a person on a single debt within any seven consecutive days, and a call placed within seven days after a telephone conversation with that person on... Outputs: debts, debts_checked, debts_with_quiet_period_presumption, debts_with_seven_in_seven_presumption, disambiguation, invalid_call_indices, regulatory_basis, timezone_offset_minutes_applied, window_days. Output schema: call describe_tool("validate_regf_call_frequency").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds useful behavioral context beyond annotations: server-side vs browser compute delegation, transient non-retention of inputs, AP2 artifact export with execution_hash, and an offline-verifiable FV-status snapshot.

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?

The description is bloated with infrastructure boilerplate, an FV-status URL, and a truncated Summary that cuts off mid-sentence. The useful purpose statement is not front-loaded, and several sentences do not earn their place for tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives a high-level regulatory summary and enumerates output fields, which helps because no output schema is present. However, the summary is truncated, the nested policy_parameters inputs are not explained, and an agent would still need to inspect the schema and external documentation 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 description coverage is 100%, so the schema already documents compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates compute modes and privacy behavior but adds little parameter-level meaning beyond the structured schema.

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 description states a specific verb and resource: it checks a debt-collection call log against two Regulation F call-frequency presumptions under 12 CFR 1006.14(b). The purpose is clear once the compute-node boilerplate is stripped away, though it does not explicitly distinguish itself from nearby siblings such as check_debt_validation_notice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not say when to use this tool versus alternatives, nor does it state exclusions or prerequisites. It mentions that output feeds art-403-check-debt-validation-notice, but that is provenance context rather than selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_royalty_splitRoyalty Split ValidatorB
Read-onlyIdempotent
Inspect

Royalty Split Validator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-208-royalty-split-validator.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: Validates on-chain royalty split configurations against ERC-2981 (single-receiver) and 0xSplits (multi-recipient) rules. Outputs: cap_bps, config_hash, disclaimer, mode, recipient_count, rules, sum, valid. Output schema: call describe_tool("validate_royalty_split").

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: cap_bps, config, entries. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context beyond them: server-side Cloudflare Workers execution, browser delegation for gpu:true nodes, transient non-retained input processing, and an AP2 artifact export with execution_hash for provenance. The 'Unknown keys are refused' note in the policy_parameters schema is the only validation-failure behavior mentioned, and no contradiction with annotations exists.

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?

The single most important sentence — what the tool validates — sits at the very end after OpenChainGraph branding, compute-node mechanics, a privacy notice, and a long FV-status URL and hash. Several sentences describe platform infrastructure rather than this tool, and the ordering actively delays the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It enumerates the output fields (cap_bps, config_hash, mode, recipient_count, rules, sum, valid) despite there being no output schema, and covers compute-mode and privacy behavior. What is missing is the meaning of the policy_parameters inputs and any statement of what makes a split invalid, which an agent needs 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 description coverage is 100%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters. The description restates the compute:"auto" default and browser delegation but adds no new meaning for the policy_parameters sub-keys (cap_bps, config, entries) that drive the actual validation.

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 Summary sentence names a specific verb and resource ("Validates on-chain royalty split configurations") and scopes it to ERC-2981 single-receiver and 0xSplits multi-recipient rules, which separates it from sibling calculate_erc2981_royalty. However this purpose statement arrives only after several sentences of infrastructure boilerplate, so the tool's identity is not front-loaded.

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?

It gives a data-handling caution ("Use synthetic or anonymised inputs only") and explains the compute-mode choice, but never says when to pick this validator over calculate_erc2981_royalty or when a split config is out of scope. Usage is implied by the validation framing rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_signature_agent_cardSignature Agent Card ValidatorC
Read-onlyIdempotent
Inspect

Signature Agent Card Validator: OpenChainGraph compute node (compliance_mandate). 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-130-signature-directory-validator. Open at: https://ainumbers.co/chaingraph/art-131-signature-agent-card-validator.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.

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". See the tool's manifest for field names.

TDQS

C2.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, and the description adds genuinely new context: deterministic execution, no storage/logging of inputs, server vs. browser delegation behavior, and an emitted AP2 artifact carrying execution_hash for chain provenance. No contradiction with annotations. It stops short of describing a verdict/failure surface, hence 4 not 5.

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?

Front-loading is wasted on a name restatement and a duplicated 'Deterministic OpenChainGraph compute node' phrase, and the trailing URL plus an 80-character FV-status content hash is noise that does not help an agent call the tool. The genuinely useful sentences (data handling, compute delegation, artifact export) are buried in the middle.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a validator with no output schema, the description should convey what checks are run and what the result/verdict looks like; it conveys neither, only that an AP2 artifact is exported. Nested policy_parameters is deferred entirely to an external manifest, leaving the core semantics of the call undocumented.

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 all four parameters (compute, parent_hashes, parent_tool_ids, policy_parameters) are documented in the schema itself. The description's compute-mode paragraph duplicates the enum's own description rather than adding semantics, and it never explains what policy_parameters fields this specific validator expects despite saying 'See the tool's manifest'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clause simply restates the name/title ("Signature Agent Card Validator: OpenChainGraph compute node") and then pivots to infrastructure boilerplate. It never states what about an agent card is validated, what inputs constitute the card, or what pass/fail means — critical given siblings like validate_a2a_agent_card and verify_a2a_agent_card that are never distinguished.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no routing against near-identical siblings (validate_a2a_agent_card, verify_a2a_agent_card, validate_signature_directory). The only guidance present concerns compute mode and input hygiene ("Use synthetic or anonymised inputs only"), not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_signature_directoryHTTP Signatures Directory ValidatorC
Read-onlyIdempotent
Inspect

HTTP Signatures Directory Validator: OpenChainGraph compute node (compliance_mandate). 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-129-webbotauth-signature-verifier. Output feeds: art-131-signature-agent-card-validator. Open at: https://ainumbers.co/chaingraph/art-130-signature-directory-validator.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.

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". See the tool's manifest for field names.

TDQS

C2.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/openWorld=false, and the description adds genuinely non-structured context: deterministic execution, transient non-retained inputs, a 'use synthetic or anonymised inputs only' constraint, gpu:true always delegating to browser, and an AP2 artifact export carrying execution_hash. What it does not disclose is what a validation result looks like or what failure means.

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?

It opens with a label rather than a purpose statement, then spends most of its length on compute-binding boilerplate, a privacy note, and a fv-status receipt URL with a 64-character hash that does nothing for tool selection. The one sentence that matters (what it validates) is absent, so the text is long without being front-loaded on the decision-relevant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does cover output behavior indirectly (AP2 artifact with execution_hash, chaining from parent_hashes). But with a nested, unconstrained policy_parameters object and no statement of what the validator returns or checks, an agent still lacks the information needed to invoke this confidently rather than guessing at policy_parameters contents.

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 baseline is 3. The description's compute-mode sentence largely restates the enum description already in the schema, and it adds nothing about parent_hashes/parent_tool_ids pairing beyond what the schema says. The opaque policy_parameters object is deferred to 'the tool's manifest', which the description also does not resolve.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title and first sentence identify a specific resource (an HTTP Signatures directory) and the action (validate), and the upstream/downstream artifact references place it in the webbotauth chain. However, the body never states what 'validating a directory' actually checks (structure, signature coverage, freshness, pinning?) or how it differs from close siblings like check_jwks_pinned_directory or verify_webbotauth_signature. Most of the text describes compute plumbing rather than the tool's job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative-tool guidance anywhere. The only choice-oriented content is the compute-mode selection, which is an invocation detail, not tool selection guidance. An agent must infer from the chain position that this runs after verify_webbotauth_signature and before validate_signature_agent_card.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_slate_report_fieldsSLATE Securities-Loan Report Field ValidatorB
Read-onlyIdempotent
Inspect

SLATE Securities-Loan Report Field Validator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-544-slate-report-validator.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: Field-level structural validator for a covered-securities-loan report record against the FINRA Rule 6500-series field spec (loan terms, rate, collateral type, counterparty) that FINRA Rule 6540 -- FINRA's implementation of SEC Rule 10c-1a securities-lending transparency reporting (SLATE) -- requi... Outputs: compliance_date_note, field_spec_version, regulatory_basis, reports_checked, reports_valid, scope_note, violations. Output schema: call describe_tool("validate_slate_report_fields").

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: reports. Unknown keys are refused.

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/destructive=false/idempotent/openWorld=false, which already establish a safe pure read), the description discloses genuinely non-obvious behaviour: inputs are processed transiently and not stored/logged/retained, synthetic-or-anonymised inputs are required, execution may be delegated to the browser for gpu:true nodes, and an AP2 artifact with execution_hash is exported for chain provenance. It does not say what happens when violations are found or how results are ordered, but the data-handling and delegation disclosures are substantial.

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?

Badly front-loaded: the title is restated, "Deterministic OpenChainGraph compute node" is duplicated, and compute-mode boilerplate, a landing-page URL, and a 64-hex FV-status receipt occupy the first half before the actual purpose appears — which then truncates mid-sentence. Multiple sentences are pure noise for tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a validator whose sole real input is policy_parameters.reports (declared as an empty object schema with additionalProperties), the description never explains the expected report-record shape, how many records are accepted, or what a violation entry contains — and the required regulatory clause is truncated. Listing the output field names helps since no output schema exists, but the primary input contract is left undocumented.

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 baseline is 3; the description's compute-mode explanation is essentially a restatement of what the compute parameter already documents. It adds nothing about policy_parameters (the actual decision input) or parent_hashes/parent_tool_ids chaining semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The core statement — "Field-level structural validator for a covered-securities-loan report record against the FINRA Rule 6500-series field spec (loan terms, rate, collateral type, counterparty)" — is a specific verb+resource, but it is buried after six sentences of compute-node boilerplate and cut off mid-word ("...that FINRA Rule 6540 ... -- requi..."). No sibling is named or ruled out (e.g., run_slate_reporting_fit, lint_securities_settlement_message), so the agent must infer differentiation from the name alone.

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 description gives operational usage context: compute mode selection ("auto"/"browser" delegation) and the constraint "Use synthetic or anonymised inputs only." However there is no when-to-use / when-not-to-use statement relative to the many neighbouring validate_* and the obvious SLATE sibling run_slate_reporting_fit, so tool selection remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_spdx_sbomSPDX SBOM Validator (EU CRA Annex I)A
Read-onlyIdempotent
Inspect

SPDX SBOM Validator (EU CRA Annex I): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-139-cra-annex1-completeness-checker. Open at: https://ainumbers.co/chaingraph/art-138-spdx-sbom-validator.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: Validates an SPDX SBOM against the EU CRA Annex I machine-readable SBOM requirement: spdxVersion matches SPDX-2.x or SPDX-3.x, SPDXID present, all packages carry name+versionInfo+downloadLocation (or purl externalRef), relationships array non-empty. Outputs: format, has_relationships, package_count, packages_missing_version, sbom_valid, spdx_version. Output schema: call describe_tool("validate_spdx_sbom").

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". Unknown keys are refused.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, yet the description adds real behavioural context: compute:auto vs server vs browser execution, that gpu:true nodes always delegate, that inputs are processed transiently and not retained, and that an AP2 artifact with execution_hash is exported for chaining. The main missing piece is what a validation failure returns versus a transport error, but overall this is well beyond the annotation baseline.

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?

The actual purpose is buried mid-paragraph behind a long block of infra boilerplate (URL, full FV-status hash path, AP2/chaining mechanics), and the opening two sentences are redundant restatements ('OpenChainGraph compute node... Deterministic OpenChainGraph compute node'). A reader must scan past ~60% scaffolding to reach the validation rules.

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?

With no output schema, the description compensates by listing the return fields (format, has_relationships, package_count, packages_missing_version, sbom_valid, spdx_version) and by explaining the compute and provenance behaviour. An agent has enough to call it and interpret the response; only the failure/error shape is unspecified.

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 compute, parent_hashes, parent_tool_ids and policy_parameters are already documented in the schema, and the description's compute-mode explanation largely restates it. The only added value is pointing at describe_tool for the output schema and hinting that the SBOM goes in policy_parameters; 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?

The summary states a specific verb and resource (validates an SPDX SBOM) and enumerates the exact acceptance rules: spdxVersion must match SPDX-2.x/3.x, SPDXID present, packages carry name+versionInfo+downloadLocation or purl externalRef, non-empty relationships. The SPDX qualifier also distinguishes it from the CycloneDX and CRA-annex completeness siblings in the toolset.

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?

It names a downstream consumer (art-139-cra-annex1-completeness-checker) and imposes an input constraint (synthetic or anonymised inputs only), which implies a context. But it never says when to pick this over validate_cyclonedx_sbom or check_cra_annex1_completeness, nor any preconditions for a failed validation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_tempo_token_complianceTempo Stablecoin Issuance ComplianceA
Read-onlyIdempotent
Inspect

Tempo Stablecoin Issuance Compliance: OpenChainGraph compute node (compliance_mandate). 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-34-tempo-fit-diagnostic. Output feeds: art-06-genius-act-reserve-attestation, art-10-amla-transaction-typology-risk-scorer, art-38-tempo-onchain-aml. Open at: https://ainumbers.co/chaingraph/art-37-tempo-stablecoin-issuance.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: Dual-jurisdiction TIP-20 token compliance validator. Outputs: fail_count, genius, mica, verdict, warn_count. Output schema: call describe_tool("validate_tempo_token_compliance").

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: allowlistEnabled, blocklistEnabled, freezeEnabled, ofacEnabled, roleBurnBlocked, roleIssuer, rolePause, yieldEnabled. Unknown keys are refused.

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, and the description adds genuinely non-obvious behavior: inputs are processed transiently and not stored or logged, synthetic or anonymised inputs should be used, an AP2 artifact with execution_hash is exported, and gpu:true nodes always delegate to the browser. These are real constraints beyond the annotations, though the 'output feeds' chain framing is more metadata than 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?

The definition is back-loaded: the actual purpose appears in the final clause after compute-binding boilerplate, a long fv-status hash path, a URL, and artifact IDs. Several sentences (compute node provenance, fv-status snapshot disclaimer) read as template text that doesn't help an agent decide or invoke correctly.

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?

For a nested-policy validator with no output schema, the description does list the outputs (fail_count, genius, mica, verdict, warn_count) and points to describe_tool for the schema, plus covers chaining via parent_hashes. The remaining gap is that verdict semantics and the dual-jurisdiction (GENIUS/MiCA) split of those counts are not explained.

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 carries the parameters, including the compute enum and the required policy_parameters keys. The description restates compute modes rather than adding meaning, and says nothing about what issuerLei, supplyCap, tokenName, or memoPolicy actually control — the fields most likely to be mis-set.

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 sentence — 'Dual-jurisdiction TIP-20 token compliance validator' — states a specific verb and resource, so an agent can tell what it computes. However, that statement is buried at the very end, behind boilerplate, and it never distinguishes this tool from close siblings like validate_tip20_memo_commitment, validate_tempo_zone_disclosure, score_tempo_validator_readiness, or run_tempo_fit_diagnostic.

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 description identifies upstream ('art-34-tempo-fit-diagnostic') and downstream artifacts, which implies where the tool sits in a workflow. But it never says when to reach for this validator versus the many sibling TIP-20/Tempo tools, and gives no explicit exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_tempo_zone_disclosureTempo Zone Selective-Disclosure AttestationC
Read-onlyIdempotent
Inspect

Tempo Zone Selective-Disclosure Attestation: OpenChainGraph compute node (attestation_mandate). 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-38-tempo-onchain-aml. Output feeds: cry-01-zk-compliance-proof-generator. Open at: https://ainumbers.co/chaingraph/art-39-tempo-zone-disclosure.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: Maps a Tempo Zone's party-visibility model (operator-sees-all / users-see-own / outsiders-see-ZK-proofs) against AML/audit/regulator disclosure obligations. Outputs: checks, operator_name, use_case, verdict. Output schema: call describe_tool("validate_tempo_zone_disclosure").

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: amlAudit, amlOFAC, amlSAR, amlTravel, opSeesAll, outsidersZK, tip403Allow, tip403Block, tip403Freeze, tip403Mainnet, userSeesOwn. Unknown keys are refused.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive, but the description adds genuinely non-obvious behavior: compute:"auto" resolves server-side only for gpu:false nodes with a registered kernel, compute:"browser" returns a delegation URL, gpu:true always delegates, inputs are transient and not retained, and the call exports an AP2 artifact with execution_hash. These are real execution semantics an agent could not infer from 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with template text ('Deterministic OpenChainGraph compute node'), a raw URL, a fv-status hash path, and an offline-receipt caveat — none of which help select or invoke the tool. The one sentence that matters is last. Substantial trimming is needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Reasonable coverage of execution modes, privacy posture, provenance export and named outputs (checks, operator_name, use_case, verdict), and it points to describe_tool for the output schema. But given a nested policy_parameters object with twelve required-ish AML/TIP-403 flags, the description never explains what those inputs mean or how the verdict is reached.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and the full policy_parameters required list. The description adds only marginal semantics — the compute-mode narrative and the chaining implication via upstream artifacts — without explaining the AML obligation flags (amlSAR, amlOFAC, tip403*) that carry the actual decision logic. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The actual purpose only appears in the final 'Summary' sentence: mapping a Tempo Zone party-visibility model against AML/audit/regulator disclosure obligations. The preceding ~120 words are generic OpenChainGraph compute-node boilerplate that says nothing about what this tool validates, so an agent must read to the end to identify the resource. Direction is eventually clear but badly buried.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this versus siblings (e.g. validate_canton_selective_disclosure, validate_tempo_token_compliance, verify_disclosure_inclusion). The only guidance is a data-handling constraint ('Use synthetic or anonymised inputs only') and chain wiring via 'Consumes upstream artifacts from: art-38-tempo-onchain-aml'. That tells an agent about position in a chain, not when to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_tfr_travel_rule_batchTFR Travel-Rule Batch ValidatorA
Read-onlyIdempotent
Inspect

TFR Travel-Rule Batch Validator: OpenChainGraph compute node (compliance_mandate). 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-98-mica-casp-fit-diagnostic. Output feeds: cry-04-merkle-batch-verifier. Open at: https://ainumbers.co/chaingraph/art-104-tfr-travel-rule-batch-validator.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: Validates originator/beneficiary field completeness on synthetic/hashed transfer batches (self-/cross-CASP + unhosted-wallet branches) per TFR recast Reg. Outputs: batch_conformance_pct, batch_size, merkle_root, note, reference_version, tfr_note, transfers_flagged, unhosted_dd_required_count. Output schema: call describe_tool("validate_tfr_travel_rule_batch").

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". Unknown keys are refused.

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, closed-world behavior. The description adds meaningful context beyond that: deterministic compute, server-side vs browser execution modes, transient processing with no storage/logging/retention, a requirement for synthetic/anonymised inputs, and AP2 artifact export with execution_hash for provenance. These are valuable behavioral disclosures not present in annotations.

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?

The description is overly long and poorly front-loaded: it leads with title restatement and generic OpenChainGraph compute-node boilerplate, then privacy and compute-mode details, and only near the end provides the actual tool summary. Several sentences (URL, fv-status hash, generic platform constraints) are not essential for correct invocation, making the description structurally inefficient.

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?

Although no output schema exists, the description lists the output fields (batch_conformance_pct, merkle_root, transfers_flagged, etc.) and provides upstream/downstream chaining context. Given the complex tool, annotations, and 100% schema coverage, the description is largely complete for an agent to call it correctly, though it could better organize the operational essentials.

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 fully documents all four parameters including compute modes and parent hashes. The description does not add any further parameter-specific meaning beyond what is in the schema, so the baseline score of 3 is appropriate.

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 description eventually states a specific verb and resource: 'Validates originator/beneficiary field completeness on synthetic/hashed transfer batches ... per TFR recast Reg.' It also names the relevant branches (self-/cross-CASP + unhosted-wallet), allowing an agent to distinguish it from broader tools like screen_onledger_transfer_batch. However, the purpose is buried after extensive platform boilerplate and a restated title, weakening immediate clarity.

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 description gives implied usage through chaining context ('Consumes upstream artifacts from art-98-mica-casp-fit-diagnostic. Output feeds: cry-04-merkle-batch-verifier'), but does not explicitly say when to use this tool versus alternatives or when not to use it. No exclusions or direct alternative routing are provided, leaving usage guidance at an inferred level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_tip20_memo_commitmentTIP-20 Memo/Commitment ValidatorA
Read-onlyIdempotent
Inspect

TIP-20 Memo/Commitment Validator: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-390-tip20-memo-commitment-validator.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: Validates a TIP-20 TransferWithMemo's 32-byte memo as a hash-or-locator commitment: checks length/hex form, recomputes the SHA-256 commitment over a supplied off-chain payload or a templated invoice-ID locator, and reports whether the memo matches. Outputs: commitment_source_supplied, invoice_locator, invoice_locator_commitment, invoice_locator_match, memo_hex, memo_hex_valid, memo_length_valid, note, overall_valid, payload_commitment, payload_commitment_match. Output schema: call describe_tool("validate_tip20_memo_commitment").

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: invoice_id, invoice_locator_template, memo_hex, payload. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive, but the description adds genuinely new behavioral context: compute mode routing (auto/server/browser, gpu:true always delegates to browser), transient no-store/no-log processing, and emission of an AP2 artifact carrying execution_hash for provenance. The FV-status note explains that the receipt verifies offline as a snapshot, not a subscription. No contradiction with readOnlyHint — artifact export is an output, not a state mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is stated only after several sentences of boilerplate, including a near-duplicate opening ('OpenChainGraph compute node... Deterministic OpenChainGraph compute node') and a 64-character FV-status hash plus URL that consume space without helping an agent call the tool. Counterbalancing that, the explicit list of 13 output fields does earn its place given there is no output schema.

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?

With no output schema, the description compensates by enumerating the returned fields (overall_valid, memo_hex_valid, memo_length_valid, payload_commitment_match, invoice_locator_match, etc.) and by explaining compute routing, privacy handling, and provenance export. An agent has enough to call it correctly and interpret the response; only the refusal behavior for unknown policy_parameter keys is left to the schema.

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%, so the baseline is 3. The description does clarify the semantic pairing of policy_parameters keys (payload feeds the SHA-256 commitment recompute, invoice_id/invoice_locator_template feed the locator path) and repeats the compute modes, but it adds no syntax, format, or length rules beyond what the schema already states.

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 Summary section gives a precise verb+resource+operation: validates a TIP-20 TransferWithMemo's 32-byte memo as a hash-or-locator commitment, with the three sub-checks enumerated (length/hex form, SHA-256 recompute over payload or invoice locator, match report). That is far more specific than the title alone. It does not name which sibling (e.g. screen_tip20_transfer_batch, validate_tempo_token_compliance) to use instead, so it stops short of 5.

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 only explicit directive is the constraint 'Use synthetic or anonymised inputs only', which is a safety rule rather than a when-to-use rule. Nothing says when to pick this over the many neighboring tip20/tempo validation tools, nor what happens if the memo is a plain-text memo rather than a commitment. Usage is implied by the purpose statement only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_tokenized_security_lifecycleTokenized Security Lifecycle ValidatorB
Read-onlyIdempotent
Inspect

Tokenized Security Lifecycle Validator: OpenChainGraph compute node (compliance_mandate). 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: 510-digital-asset-regulatory-classifier. Open at: https://ainumbers.co/tools/512-tokenized-security-lifecycle-validator.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: Validate issuance, corporate actions, and maturity/redemption lifecycle for tokenized securities on Daml/Canton. Outputs: all_gaps, critical_gaps, event_matrix, verdict, verdict_badge. Output schema: call describe_tool("validate_tokenized_security_lifecycle").

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". Unknown keys are refused.

TDQS

B3.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), so the description earns credit for adding execution semantics the schema doesn't: the auto/server/browser compute binding, the browser delegation URL behavior for gpu:true nodes, and the statement that inputs are processed transiently and not stored or logged. It also discloses that an AP2 artifact with execution_hash is exported for chain provenance, which is meaningful side-effect information for a read-only-annotated tool.

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?

The definition is back-loaded: the single sentence that says what the tool does appears after compute-binding prose, retention policy, artifact export, and an FV-status receipt URL with a long hash. Several sentences (the FV-status snapshot disclaimer, the offline-verification note) serve provenance bookkeeping rather than tool selection or invocation and crowd out the useful content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates return keys (all_gaps, critical_gaps, event_matrix, verdict, verdict_badge) and points to describe_tool for the schema. But for a 4-parameter tool with a nested policy_parameters object carrying eight undocumented decision fields, the description leaves the substantive input domain entirely unaddressed.

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%, so the schema already documents compute, parent_hashes, and parent_tool_ids; the description's restatement of compute modes adds no syntax beyond the enum description. The description does not explain the policy_parameters sub-keys (jurisdiction, isin_assigned, security_type, etc.), whose nested schema descriptions are empty, leaving the actual decision inputs unexplained.

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 'Summary:' clause gives a specific verb and resource — 'Validate issuance, corporate actions, and maturity/redemption lifecycle for tokenized securities on Daml/Canton' — which distinguishes it from adjacent siblings like validate_dtc_tokenized_treasury or validate_canton_dvp_atomicity. However, this defining sentence is buried at the end after operational boilerplate, and no sibling is explicitly named as the alternative.

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: 'Consumes upstream artifacts from: 510-digital-asset-regulatory-classifier' suggests it belongs downstream of regulatory classification in a pipeline, which is genuinely useful routing context. But there is no explicit statement of when to prefer this tool over lifecycle-adjacent siblings, nor any exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_vida_einvoice_conformanceViDA EN 16931 E-Invoice Conformance ValidatorC
Read-onlyIdempotent
Inspect

ViDA EN 16931 E-Invoice Conformance Validator: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-160-vida-drr-transaction-reporter. Open at: https://ainumbers.co/chaingraph/art-159-vida-einvoice-en16931-conformance-validator.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.

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". See the tool's manifest for field names.

TDQS

C2.8/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), and the description adds genuinely new behavioral context: determinism, transient processing with no storage/logging/retention, the 'synthetic or anonymised inputs only' constraint, and an AP2 artifact with execution_hash for chain provenance. This is meaningful disclosure beyond the structured fields. It still omits what a validation verdict or failure looks like, but the data-handling and provenance traits are well covered.

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?

The purpose is front-loaded but immediately drowned by template text: the compute-mode explanation duplicates the schema field, and the doc URL plus a long FV-status receipt path with a snapshot disclaimer consume roughly a third of the description. Little of this earns its place for an agent trying to decide whether and how to call the validator.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a high-complexity compliance validator with a nested free-form input object and no output schema, yet the description never states which obligations/rule sets are checked or what the result contains. An agent learns provenance and data-handling traits but cannot determine what to place in policy_parameters or how to interpret a pass/fail response without leaving for external documentation.

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 baseline is 3. The description's compute-mode paragraph merely repeats what the schema's 'compute' property already documents, adding no value, and it says nothing about policy_parameters beyond deferring to 'the tool's manifest' — which is also what the schema says. The critical payload field remains opaque in both places, so the description neither compensates nor degrades.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The only purpose statement is the title restated verbatim ('ViDA EN 16931 E-Invoice Conformance Validator'), which names a specific standard and verb but is never developed in the body. Nothing explains what EN 16931 conformance actually means here or how this differs from close siblings such as validate_einvoice_format, validate_einvoice_batch, or verify_einvoice_vat_calc. The remainder of the text is generic OpenChainGraph node boilerplate that would apply to any node.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or prerequisite guidance for the validation itself is given. The only conditional language ('auto' vs 'browser', gpu:true delegation) concerns the compute parameter, not tool selection. The downstream hint that output feeds art-160-vida-drr-transaction-reporter is contextual but does not tell an agent when to choose this validator over its many conformance-checking siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_w8_series_structuralW-8 Series Structural ValidatorB
Read-onlyIdempotent
Inspect

W-8 Series Structural Validator: OpenChainGraph compute node (compliance_mandate). 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-268-compute-cdd-ownership-25pct. Open at: https://ainumbers.co/chaingraph/art-269-validate-w8-series-structural.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: Validates W-8 series form structural consistency for withholding tax compliance. Outputs: ch3_ch4_consistent, chapter3_status, chapter4_fatca_status, days_until_expiry, form_ch3_compatible, form_type, is_structurally_valid, not_legal_advice, pii_note, regulatory_basis, statutory_withholding_rate_pct, table_source, table_version, treaty_country, treaty_rate_expected, treaty_rate_pct, treaty_rate_valid, validity_expiry_date, validity_window_ok, violation_count, violations. Output schema: call describe_tool("validate_w8_series_structural").

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". Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only, idempotent, non-destructive annotations, the description discloses server-side versus browser execution, transient processing with no storage or logging, the synthetic/anonymised input requirement, and AP2 artifact export with execution_hash. Those are meaningful behavioral details, though it still lacks permission or rate-limit context.

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?

The definition is long and front-loads generic OpenChainGraph compute boilerplate before the actual purpose, which appears only in the Summary section. Some details are useful, but duplicated compute-node phrasing, URLs, and FV-status text reduce conciseness and make the description harder to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists output fields in lieu of an output schema and explains compute modes and provenance, which helps an agent call the tool. However, for a complex W-8 structural validator, it does not explain the nested policy parameter meanings or how the structural tests are determined, leaving clear contextual gaps.

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 the parameters and compute enum. The description reinforces compute behavior and mentions upstream provenance, but it does not add semantic detail for the nested policy_parameters such as form_date, income_type, or treaty_rate_pct.

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 description ultimately states a specific verb and resource: it validates W-8 series form structural consistency for withholding tax compliance. That is clear enough to distinguish it from unrelated siblings, but the purpose is buried after infrastructure boilerplate and the tool does not explicitly differentiate itself from similar validation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and data-handling constraints, but it does not say when this validator should be used, when it should not be used, or which sibling tools are alternatives. The upstream artifact reference gives a sequencing hint, but there is no explicit usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_x402_deferred_handshakex402 Deferred-Scheme Handshake ValidatorA
Read-onlyIdempotent
Inspect

x402 Deferred-Scheme Handshake Validator: OpenChainGraph compute node (compliance_control). 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-393-x402-v2-migration-linter, art-129-webbotauth-signature-verifier. Output feeds: art-61-x402-batch-settlement-reconciler. Open at: https://ainumbers.co/chaingraph/art-394-x402-deferred-handshake-validator.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: Validates a Cloudflare deferred x402 scheme handshake: 402 offer field shape (scheme:"deferred", id, termsUrl), RFC 9421 HTTP Message Signature covered-component coverage (@method, @target-uri, content-digest), and settlement-reference id continuity across a call sequence (uniqueness, no intern... Outputs: errors, findings, passes, required_covered_components, scope_note, score, settlement_reference_id, verdict, warnings. Output schema: call describe_tool("validate_x402_deferred_handshake").

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". Unknown keys are refused.

TDQS

A3.6/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), and the description adds genuine beyond-schema context: deterministic computation, where it executes, that inputs are processed transiently and not stored or logged, that it exports an AP2 artifact with an execution_hash for chain provenance, and that FV-status is a verifiable offline snapshot rather than a subscription. Nothing contradicts the annotations — the 'export' is the artifact returned by a fundamentally read-only validation. Return-format detail is thin, which keeps it from 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The payload is buried: several sentences of OpenChainGraph node boilerplate, a URL, and an FV-status receipt precede the actual purpose, and the description terminates in a cut-off clause ('no intern...'). Key content (what the tool validates) should be first and it is not.

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?

With four optional params, no output schema, and nested policy_parameters, the description supplies a lot of what an agent needs: execution semantics, privacy constraints, upstream/downstream artifact wiring, and an explicit output field list (verdict, score, findings, settlement_reference_id, etc.). The truncated summary and the absence of any detail on how 'score' or 'verdict' are determined leave minor gaps.

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 earns above it by mapping the described checks onto the nested policy_parameters keys (offer shape, covered_components, id_continuity) and by explaining the parent_hashes/parent_tool_ids chaining role via 'Consumes upstream artifacts from'. The compute-mode explanation merely restates the schema's own 'compute' description, so it adds no extra value there.

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 'Summary:' sentence gives a specific verb and object — validating a Cloudflare `deferred` x402 handshake — and enumerates the three concrete checks (402 offer field shape, RFC 9421 covered-component coverage, settlement-reference id continuity). It is specific enough to distinguish from siblings like lint_x402_v2_migration or verify_kya_x402_scope, but the actual purpose only arrives after several sentences of platform boilerplate and is truncated mid-word ('no intern...'), so it isn't fully clean.

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?

It gives operational guidance on compute modes ('auto' server-side vs 'browser' delegation, gpu:true always delegates) and a data-handling constraint ('Use synthetic or anonymised inputs only'), which tells the agent how to invoke it. But it never says when to pick this validator over the many neighbouring x402 tools (model_x402_settlement, recompute_x402_eip712_digest, verify_kya_x402_scope); the 'Consumes upstream artifacts from' / 'Output feeds' lines hint at pipeline position but stop short of routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vc_issueIssue a signed W3C Verifiable Credential 2.0AInspect

Composes and signs a W3C Verifiable Credential 2.0 with an eddsa-jcs-2022 Data Integrity proof over a fresh ephemeral did:key (generated per call, not reused). Returns the signed credential, an OCG Standard §23 vc-2.0 input-attestation block ready to embed in a ChainGraph chain's policy_parameters at the given pointer, and an OCG receipt of the issuance activity. The signature proves the claims were not altered after signing and that the did:key holder produced it -- it is not, by itself, identity assurance.

NameRequiredDescriptionDefault
claimsYesClaim key-value pairs for credentialSubject (required, at least one entry).
pointerNoRFC 6901 JSON pointer where the attestation's claims sit in a consuming chain's policy_parameters. Default: "/subject_claims".
subject_idNoCredential subject id (DID or any identifier string). Default: "did:example:subject".
valid_fromNoISO 8601 validFrom. Default: now.
valid_untilNoISO 8601 validUntil.
credential_typeNoType appended to VerifiableCredential (e.g. "MembershipCredential").

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: it explains why idempotency is false (a fresh ephemeral did:key is generated per call and never reused), enumerates the three artifacts returned, and explicitly bounds the security claim ('proves claims were not altered and the did:key holder produced it -- not identity assurance'). That trust caveat is exactly the kind of thing an agent cannot derive from readOnlyHint/destructiveHint.

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?

Three sentences, front-loaded with the operation and its cryptographic specifics, followed by outputs and then the trust caveat. Every sentence carries distinct information; nothing is repeated from the title or schema.

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?

With no output schema present, the description carries the return-value burden and does so fully: signed credential, OCG §23 input-attestation block, and OCG issuance receipt. Combined with the key-generation and non-idempotency notes, an agent has enough to call it correctly and interpret the result.

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%, so every parameter including claims, pointer, subject_id, valid_from/until and credential_type is already documented in the schema. The description adds only the functional role of the pointer (where the attestation is embedded in a consuming chain) and does not expand on defaults, formats or constraints, 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 (composes and signs) plus the exact resource and profile: a W3C Verifiable Credential 2.0 with an eddsa-jcs-2022 Data Integrity proof. Naming the credential format and proof suite lets an agent separate it from siblings such as sdjwt_issue or verify_content_credential_signature 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage context (issuance whose attestation block is embedded in a ChainGraph chain's policy_parameters at a given pointer) but never states when to choose this over alternatives, nor any when-not conditions or prerequisites. Usage must be inferred from the mention of downstream consumers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_a2a_agent_cardA2A Agent Card Validator & Extension CheckerB
Read-onlyIdempotent
Inspect

A2A Agent Card Validator & Extension Checker: OpenChainGraph compute node (compliance_control). 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-22-agentic-payments-protocol-comparator. Output feeds: art-18-mcp-developer-readiness-scorecard, art-26-x402-payload-decoder-flow-simulator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/art-25-a2a-agent-card-validator.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: Validates an A2A agent-card.json against the v1.0 shape: identity fields, capabilities, extensions (AP2/x402), input/output modes, skills, provider, signed-card JWS block. Outputs: errors, findings, has_ap2_extension, has_signed_card, passes, score, verdict, warnings. Output schema: call describe_tool("verify_a2a_agent_card").

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: agent_card. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful beyond-annotation context: transient processing with no storage/logging, a requirement to use synthetic or anonymised inputs, server-vs-browser compute routing, and AP2 artifact export with execution_hash for chain provenance.

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?

The description is badly front-loaded with OpenChainGraph compute-node boilerplate, Cloudflare Workers details, a long FV-status hash URL, and artifact-chain references before reaching the actual validation summary. It repeats 'deterministic OpenChainGraph compute node' and spends many words on infrastructure that does not help an agent choose or call the tool.

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?

For a validation tool with no formal output schema, the description documents the validation scope and lists the output fields (errors, findings, has_ap2_extension, has_signed_card, passes, score, verdict, warnings). It also covers data handling and compute behavior. It stops short of explaining the agent_card input structure and does not distinguish this tool from its near-identical sibling.

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 explains compute, parent_hashes, parent_tool_ids, and policy_parameters. The description restates compute mode behavior and notes agent_card is required, but adds little about the untyped agent_card object's expected structure beyond what the schema says.

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 description states a specific verb and resource: 'Validates an A2A agent-card.json against the v1.0 shape' and enumerates the checked areas (identity fields, capabilities, extensions, skills, provider, signed-card JWS). However, it gives no differentiation from the similarly named sibling validate_a2a_agent_card, and the actual purpose is buried after a large block of compute/provenance boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives such as validate_a2a_agent_card or validate_a2a_trust_chain. The 'Consumes upstream artifacts' and 'Output feeds' sentences describe pipeline position, not selection criteria or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_acdc_delegation_chainACDC Delegation Chain VerifierB
Read-onlyIdempotent
Inspect

ACDC Delegation Chain Verifier: OpenChainGraph compute node (compliance_mandate). 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-284-did-webvh-log-verifier. Open at: https://ainumbers.co/chaingraph/art-285-acdc-delegation-chain-verifier.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: Verifies a chain of Authentic Chained Data Containers (ACDC): per-credential SAID self-addressing integrity, issuer-to-issuee edge linkage between successive credentials, schema SAID match, termination at a stated root AID, and revocation-status passthrough (report, never resolve). Outputs: chain_depth, edge_failures, revocation_status_reported, root_aid_matched, said_failures, valid. Output schema: call describe_tool("verify_acdc_delegation_chain").

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: credentials, max_chain_depth. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description earns credit for adding genuine extra context: inputs are processed transiently and not stored or logged, synthetic inputs are advised, compute mode delegates to browser for gpu:true nodes, and importantly revocation status is reported but never resolved. The compute/FV-status preamble is mostly noise, but the substantive disclosures are real.

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?

The description is bloated with copy-paste platform boilerplate: a repeated 'OpenChainGraph compute node' sentence, a raw FV-status hash and URL, and a compute-mode explanation duplicated in the schema. The genuinely useful summary and output-field list are pushed to the very end rather than front-loaded, so the agent must read through noise to find the payload.

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?

Annotations provide the safety profile, the schema provides full parameter documentation, and the description fills remaining gaps by listing the decision criteria and the return fields (chain_depth, edge_failures, revocation_status_reported, root_aid_matched, said_failures, valid) despite no output schema. An agent has enough to call this correctly; only the missing when-to-use routing keeps it from a 5.

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 compute, parent_hashes, parent_tool_ids, and the nested policy_parameters including required credentials and max_chain_depth. The description adds only an implied mapping (root AID termination corresponds to expected_root_aid) and restates the compute modes already in the schema, so 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?

The final summary sentence gives a specific verb and resource: verifies a chain of ACDCs for SAID self-addressing integrity, issuer-to-issuee edge linkage, schema SAID match, root AID termination, and revocation-status passthrough. That implicitly distinguishes it from siblings like acdc_said_check (single credential) and verify_revocation_status, but the sibling differentiation is never made explicit and the core purpose is buried after platform boilerplate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no alternative tool is named. The description states what the tool verifies and mentions it consumes upstream artifacts from art-284-did-webvh-log-verifier, but an agent gets no instruction on choosing this over acdc_said_check or verify_revocation_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_address_migration_batchISO 20022 Structured-Address Migration Batch VerifierA
Read-onlyIdempotent
Inspect

ISO 20022 Structured-Address Migration Batch Verifier: OpenChainGraph compute node (compliance_mandate). Regulatory deadline: 2026-11-01 (SWIFT CBPR+ structured-address mandate — November 2026 (~5 months). Hardest deadline tool in suite by proximity.). 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. Output feeds: art-11-vop-batch-match-rate-analyser, art-08-en16931-einvoice-batch-validator, ptg-01-ap2-prompt-template-generator. Open at: https://ainumbers.co/chaingraph/rca-03-iso20022-address-migration-verifier.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: GPU-parallel validation of PostalAddress24 fields across pacs.008 messages (up to 500k). Outputs: batch_summary, compliance_flags, failing_records, november_2026_readiness_pct, verdict. Output schema: call describe_tool("verify_address_migration_batch").

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: records. Unknown keys are refused.

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the compute binding ('auto' computes server-side on Cloudflare Workers, 'browser' returns a delegation URL, gpu:true always delegates), data handling ('processed transiently… not stored, logged, or retained', synthetic inputs only), and the AP2 execution_hash export. That is exactly the operational context readOnly/idempotent hints cannot convey.

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?

Opens by restating the tool name and title, then front-loads deadline marketing ('Hardest deadline tool in suite by proximity') and a full FV-status snapshot URL with a 64-character hash. Substantive content (compute modes, output list) is buried mid-paragraph and several sentences do not help an agent decide or call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It compensates for the absent output schema by enumerating the return keys (batch_summary, compliance_flags, failing_records, verdict) and covers the privacy/compute contract. However, 'records' and the other policy_parameters sub-props are untyped empty objects, and the description never says what a record must contain — a real gap for a tool that requires that field.

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%, so the baseline is 3, and the description mostly restates the compute enum verbatim rather than adding meaning. It does note that execution_hash values chain into parent_hashes, but it never explains the shape of the required 'records' input inside policy_parameters.

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 summary sentence gives a specific verb and resource: 'GPU-parallel validation of PostalAddress24 fields across pacs.008 messages (up to 500k)', plus a named output set. The batch/500k scope implicitly separates it from single-message siblings like lint_cbpr_structured_address or sweep_fedwire_addresses, but no sibling is named explicitly.

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 the regulatory framing ('Regulatory deadline: 2026-11-01', 'november_2026_readiness_pct'), which tells the agent the domain but not the trigger condition. The 'Output feeds:' line names downstream tools but is about consumption, not about when to pick this tool over the address-related alternatives, and there are no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_anchored_extractAnchored Extract VerifierB
Read-onlyIdempotent
Inspect

Anchored Extract Verifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-286-anchored-extract-verifier.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: Verifies an extract's Merkle inclusion against a root only when that root is anchored by a recognized source: a recognized OCG artifact/chain envelope, or an external anchor (RFC 3161 timestamp, OpenTimestamps, Sigstore transparency log, or an on-chain commitment composed via verify_eth_state_pro... Outputs: anchor_note, anchored, anchored_extract_determination, claimed_root, computed_root, escalation, not_proven, regulatory_framework, root_match, source_class, structural_error. Output schema: call describe_tool("verify_anchored_extract").

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: anchor_evidence, extract. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive, closed-world), the description discloses that execution is deterministic, that inputs are processed transiently and not stored or logged, that server-side compute runs on Cloudflare Workers unless browser delegation is forced, and that an AP2 artifact with execution_hash is exported for chaining. That is meaningful operational context an agent cannot read from the annotation block. It stops short of describing failure/escalation behavior in prose, leaving 'escalation' and 'not_proven' only as output field names.

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?

Badly front-loaded: the first two sentences repeat the title and 'OpenChainGraph compute node', and the actual purpose arrives only in a trailing 'Summary' block. A full FV-status URL with a 64-hex hash occupies the middle, and the summary is truncated mid-token ('verify_eth_state_pro...'), so the single most useful differentiator sentence is literally cut off.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so listing the eleven output fields is a legitimate and useful addition. However, for a proof-verification tool with an untyped nested parameter object, the description leaves the decision inputs (what a valid anchor_evidence looks like) and the failure/escalation path underspecified — an agent can identify the tool but would need describe_tool to actually call it 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 description coverage is 100%, so the two parent-hash parameters and the compute enum are already fully documented in structured data, and the description merely restates the compute mode rules. The nested policy_parameters fields (extract, claimed_root, source_class, anchor_evidence) are untyped empty sub-schemas in the schema, so this is exactly where the description could have added semantics — but the text says nothing about their shape or expected format.

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 'Summary' paragraph states a specific verb and resource: it verifies an extract's Merkle inclusion against a root only when that root is anchored by a recognized source, and enumerates acceptable anchor types (RFC 3161, OpenTimestamps, Sigstore, on-chain). That scope genuinely differentiates it from siblings like verify_merkle_batch or verify_disclosure_inclusion, though the differentiation is never framed in those terms and the purpose is buried after platform boilerplate.

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: you call it to prove anchoring of an extract's root. The one real guideline is the input constraint 'Use synthetic or anonymised inputs only', plus the compute-mode routing rules. There is no statement of when to prefer this over the many sibling verify_* proof tools, and no preconditions listed for what counts as an acceptable anchor_evidence payload.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_ap2_payment_receiptAP2 PaymentReceipt Verifier & HNP GuardrailB
Read-onlyIdempotent
Inspect

AP2 PaymentReceipt Verifier & HNP Guardrail: OpenChainGraph compute node (attestation_mandate). 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-60-agent-economy-runtime-fit-diagnostic, art-61-x402-batch-settlement-reconciler. Output feeds: art-01-ap2-mandate-chain-validator, art-30-agent-commerce-conformance-validator, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/art-62-ap2-payment-receipt-verifier.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: Verifies an AP2 v0.2 PaymentReceipt against its signed Intent/Cart/Payment mandate chain, and applies the Human-Not-Present (HNP) autonomy guardrail: amount, category, mandate age, cart freshness. Outputs: authorized_amount_headroom, findings, hnp_verdict, human_present, mandate_chain_intact, note, receipt_id, receipt_verdict, signature_check, status_asof. Output schema: call describe_tool("verify_ap2_payment_receipt").

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". Unknown keys are refused.

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely new behavior: inputs are processed transiently and not stored or retained, browser delegation occurs for compute:'browser' or gpu:true nodes, an execution_hash artifact is exported for chain provenance, and the FV-status file is a snapshot that does not gate offline verification. This is real disclosure beyond the annotations, though much of it is templated chain-graph boilerplate rather than this tool's specific semantics.

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?

The purpose and decision criteria — the most valuable content — appear last, behind multiple paragraphs of identical-looking OpenChainGraph compute-node template text, upstream/downstream artifact lists, and a raw URL and FV-hash string. Front-loading is poor and a large fraction of the text is not this tool's own semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists all output fields (receipt_verdict, hnp_verdict, mandate_chain_intact, etc.), names upstream and downstream artifacts, and covers retention and delegation behavior, which is strong given no output schema. What it lacks is guidance on how to populate the evidently central policy_parameters object — the shape of payment_receipt, mandate_chain, and hnp_policy is left to a separate describe_tool call.

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. The description earns above baseline by clarifying what the opaque policy_parameters object actually checks: amount, category, mandate age, and cart freshness under the HNP guardrail — information the schema's bare nested keys (hnp_policy, mandate_chain, payment_receipt) do not convey. It also restates the compute contract, which the schema already covers, so the gain is partial.

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 'Summary' sentence gives a specific verb and resource: 'Verifies an AP2 v0.2 PaymentReceipt against its signed Intent/Cart/Payment mandate chain' plus an HNP autonomy guardrail. However, the purpose is buried after several paragraphs of compute-node boilerplate and there is no explicit differentiation from close siblings such as validate_ap2_mandate_chain, validate_ap2_mandate_credential, or authorize_payment_against_mandate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or sibling routing is given. The compute-mode text is operational detail about execution location, not guidance on choosing this tool over validate_ap2_mandate_chain or authorize_payment_against_mandate. The only directive is the 'use synthetic or anonymised inputs only' constraint, which is an input policy, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_close_posting_lineageClose Posting LineageA
Read-onlyIdempotent
Inspect

Close Posting Lineage: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-692-close-posting-lineage.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: A month-end close lineage verdict over declared entries: GL coding entries and accrual entries in (lineage key, GL account, amount, optional source document digest, optional traces_to references), linkage structure out (accruals that resolve to a declared coding entry, accruals with no reference,... Outputs: linked_accruals, unlinked_accruals, dangling_trace_refs, orphan_coding, missing_source_refs, duplicate_lineage_keys, overall, errors. Output schema: call describe_tool("verify_close_posting_lineage").

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: coding_entries, accrual_entries. Unknown keys are refused.

TDQS

A3.6/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 the description adds meaningful behaviour beyond them: inputs are processed transiently and not stored or logged, and an AP2 artifact with execution_hash is exported for chain provenance. This goes past the annotation baseline, though it does not discuss determinism limits or error behaviour in depth.

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?

Most of the text is platform boilerplate duplicated across every compute node (compute binding, privacy notice, FV-status hash, marketing URL) that repeats the schema's compute enum. The tool-specific content is a single late Summary sentence, so the definition is back-loaded and wasteful.

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?

With no output schema, the description compensates by naming all eight return fields, and it documents entry-level input structure and compute behaviour. The gaps are minor: no statement of validation failure modes beyond 'errors', and required fields are only asserted in the schema, not the prose.

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 baseline is 3, but the description adds semantics the schema lacks: policy_parameters entries carry lineage key, GL account, amount, optional source document digest and traces_to references, and parent_hashes are described as chaining upstream artifact hashes. This meaningfully exceeds what the property descriptions alone convey.

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 Summary gives a specific verb+resource: a month-end close lineage verdict over declared GL coding and accrual entries, and enumerates the linkage outputs. It is clearly distinct from neighbouring tools like reconcile_report_to_general_ledger or build_product_lineage, but the actual purpose is buried after a large block of shared platform boilerplate.

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?

It explains the compute-mode choice (auto vs browser vs gpu:true delegation) and warns 'Use synthetic or anonymised inputs only', which is real operational guidance. However it gives no when-to-use/when-not guidance relative to sibling reconciliation or lineage tools, leaving tool selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_content_credential_signatureContent Credential Signature VerifierC
Read-onlyIdempotent
Inspect

Content Credential Signature Verifier: OpenChainGraph compute node (compliance_mandate). 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-123-c2pa-manifest-validator. Output feeds: art-125-provenance-ingredient-tree-resolver. Open at: https://ainumbers.co/chaingraph/art-124-content-credential-signature-verifier.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.

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". See the tool's manifest for field names.

TDQS

C2.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, but the description adds real context beyond them: transient processing with no storage or logging, a 'synthetic or anonymised inputs only' constraint, and the fact that it exports an AP2 artifact carrying execution_hash. The compute-mode behaviour is largely duplicated from the schema, which keeps it from 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loading is poor: it leads with a title echo and a boilerplate platform tag, then packs compute-mode mechanics, chain links, a URL, and an FV-status hash into run-on sentences. Substantial token budget goes to provenance metadata rather than the tool's actual function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with a nested free-form policy_parameters object and no output schema, the description covers compute behaviour and artifact chaining but says nothing about what a verification result contains or what fields policy_parameters expects. It is adequate context for invocation mechanics, thin on the actual verification semantics.

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 baseline is 3. The description restates the compute modes already fully documented in the schema and adds nothing about parent_hashes/parent_tool_ids pairing or about which fields go inside policy_parameters (it defers entirely to 'the tool's manifest').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens by restating the title ('Content Credential Signature Verifier: OpenChainGraph compute node') rather than stating a verb and resource. It never explains what is being verified (a C2PA/Content Credential signature against what material) and gives no differentiation from close siblings like validate_c2pa_manifest or validate_content_binding_assertion. The chain-position metadata is the only functional hint.

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?

Pipeline placement is implied by 'Consumes upstream artifacts from: art-123-c2pa-manifest-validator' and 'Output feeds: art-125-provenance-ingredient-tree-resolver', which tells an agent where this sits in a workflow. However, there is no explicit when-to-use statement, no exclusions, and no comparison to the many other c2pa/provenance verification siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_conversion_receiptConversion Receipt VerifierA
Read-onlyIdempotent
Inspect

Conversion Receipt Verifier: OpenChainGraph compute node (cryptographic_mandate). 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-191-conversion-receipt-builder. Open at: https://ainumbers.co/chaingraph/art-192-conversion-receipt-verifier.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: Re-verifies a conversion receipt from art-191: recomputes binding_sha256 over the JCS-canonical receipt and compares, checks structure and hex fields, and optionally compares digests re-hashed from the actual files. Outputs: binding_ok, checks, digest_ok, verdict. Output schema: call describe_tool("verify_conversion_receipt").

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". Unknown keys are refused.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial beyond-schema context: default server-side compute on Cloudflare Workers, compute:"browser" returning a delegation URL, gpu:true always delegating, transient non-logged processing, and that it exports an AP2 artifact with execution_hash for chain provenance. The FV-status snapshot note further clarifies offline verification semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The substantive content is front-loaded only after several sentences of boilerplate, including the redundant 'OpenChainGraph compute node ... Deterministic OpenChainGraph compute node' repeat. The single dense paragraph buries the core purpose behind generic kernel/compute-policy text.

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 lists the outputs (binding_ok, checks, digest_ok, verdict) and points to describe_tool for the full output schema, and it explains compute/artifact behavior thoroughly. Minor gaps remain around parent_tool_ids semantics and what 'checks' contains, but overall it is sufficient to call the tool 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?

With 100% schema coverage the baseline is 3, but the description adds real meaning by tying policy_parameters to the actual work ('compares digests re-hashed from the actual files' explains recomputed_input_sha256/recomputed_output_sha256) and explaining compute modes. It does not explain parent_tool_ids ordering, which the schema covers.

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 ('Re-verifies a conversion receipt from art-191') and then enumerates the actual computation: 'recomputes binding_sha256 over the JCS-canonical receipt and compares, checks structure and hex fields, and optionally compares digests re-hashed from the actual files.' This clearly separates it from build_conversion_receipt and the other verify_* siblings.

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?

It names its upstream dependency ('Consumes upstream artifacts from: art-191-conversion-receipt-builder') and instructs 'Use synthetic or anonymised inputs only,' giving real context for when to invoke it. However, it never states when to prefer it over nearby siblings such as compute_verify_receipt or verify_ap2_payment_receipt, so there is no explicit exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_did_webvh_logdid:webvh DID Log VerifierA
Read-onlyIdempotent
Inspect

did:webvh DID Log Verifier: OpenChainGraph compute node (compliance_mandate). 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-04-agent-identity-attestation-checker. Output feeds: art-285-acdc-delegation-chain-verifier. Open at: https://ainumbers.co/chaingraph/art-284-did-webvh-log-verifier.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: Verifies a did:webvh self-certifying DID log: per-entry self-hash integrity, sequential versionId numbering, update-key-authorized Ed25519 signatures on every entry, deactivation status, and optional resolved-document match. Outputs: current_version_id, deactivated, did, entries_checked, failures, valid. Output schema: call describe_tool("verify_did_webvh_log").

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: did_log, max_entries. Unknown keys are refused.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses server-side versus browser compute behavior, transient processing and non-retention of inputs, artifact export with execution_hash, and upstream/downstream chain provenance. These are meaningful behavioral traits that help an agent invoke the tool safely and correctly, with no contradiction of 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated with provenance boilerplate, a URL, an FV-status hash, and a snapshot disclaimer before reaching the actual verification summary near the end. The substantive explanation of checks, compute behavior, and outputs is useful, but the core purpose is not front-loaded and several sentences do not earn their place for tool selection.

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?

For a complex verifier with no output schema, the description supplies the key output fields (current_version_id, deactivated, did, entries_checked, failures, valid), the verification checks performed, compute behavior, privacy handling, and artifact chaining context. It is largely complete, though it could be clearer about failure/error semantics and exact return behavior.

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 carries the parameter semantics and the baseline is 3. The description reinforces compute-mode behavior and chain provenance, but it does not add syntax-level meaning beyond what the schema already documents for parent_hashes, parent_tool_ids, or policy_parameters.

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 description names a specific verb and resource: it verifies a did:webvh self-certifying DID log and enumerates concrete checks (self-hash integrity, versionId sequence, Ed25519 signatures, deactivation, resolved-document match). It does not explicitly distinguish itself from sibling verifier tools, but the DID-log scope is specific enough for an agent to identify the tool.

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 upstream/downstream artifact references and compute-mode explanation imply when this tool fits into a chain, and the summary makes the verification use case clear. However, there is no explicit when-to-use versus when-not-to-use guidance or direct comparison with sibling verification tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_disclosure_inclusionVerify Merkle inclusion in a disclosure manifestA
Read-onlyIdempotent
Inspect

Proves (or refutes) that a {path,digest} pair was in a disclosure manifest's room (DATAROOM-1-BUILD-SPEC.md §DR-4) -- worker-side mirror of tools/547-disclosure-manifest-verifier.html's single-file inclusion check. Recomputes the manifest's Merkle root over its entries[], builds the inclusion proof path for the target entry, and reapplies it to confirm it reduces to the claimed merkle_root. Absence is only provable against the exact manifest version passed in.

NameRequiredDescriptionDefault
pathYesPath of the entry to prove.
digestYessha256:-prefixed digest of the file to prove.
manifestYesThe disclosure manifest to check against (needs entries[] + merkle_root).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description goes beyond them by disclosing the computation performed and the version-sensitivity caveat that negative proofs only hold for the exact manifest passed in — a non-obvious behavioral trait an agent needs before caching or reusing results.

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?

Front-loads the verdict framing, then the algorithm, then the caveat — a sensible order. Some space is spent on internal build-spec and HTML-file references (DATAROOM-1-BUILD-SPEC.md §DR-4, tools/547-...html) that add little for an agent selecting the tool, keeping it out of the 5 tier.

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?

For a 3-param read-only verifier with no output schema, the description explains the operation and its key limitation, which is enough to call it correctly. It does not indicate the shape of the result (boolean versus proof object) or failure modes, which slightly undersells the return contract given no output schema exists.

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%, with each of path, digest, and manifest already documented in the schema. The description reinforces that it operates on a {path,digest} pair and that the manifest must carry entries[] and merkle_root, but adds no format or edge-case detail beyond the schema, 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 ('Proves (or refutes) that a {path,digest} pair was in a disclosure manifest's room') and then explains the mechanism: recompute the Merkle root, build the inclusion proof path, reapply it. The 'disclosure manifest' scoping plus the room/DATAROOM-1 spec reference cleanly separates it from generic siblings like verify_merkle_batch or verify_merkle_airdrop_proof.

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 closing line gives a real usage constraint ('Absence is only provable against the exact manifest version passed in'), which tells the agent when a negative result is trustworthy. However, it never names an alternative tool or states when to reach for this versus another Merkle-verification sibling; the routing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_dscsa_transaction_statementDSCSA Transaction Statement (T3) VerifierA
Read-onlyIdempotent
Inspect

DSCSA Transaction Statement (T3) Verifier: OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-113-saleable-returns-verifier. Open at: https://ainumbers.co/chaingraph/art-112-dscsa-transaction-statement-verifier.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: Verify the DSCSA T3 set (Transaction Information + History + Statement) completeness, validate the GS1 SGTIN, and map the EPCIS 2.0 event type. Outputs: epcis_event, identifier_valid, missing_elements, t3_complete, transaction_date. Output schema: call describe_tool("verify_dscsa_transaction_statement").

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". Unknown keys are refused.

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 safety profile is covered. The description nonetheless adds real value: default server-side compute on Workers with kernel registration, browser delegation fallback for gpu:true nodes, transient non-retained input processing, and a produced AP2 artifact carrying execution_hash. That is meaningful behavioral context beyond 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is bloated with near-duplicate framing ('OpenChainGraph compute node' stated twice), a raw FV-status hash path, and a full URL, none of which help tool selection. The actual purpose sentence is buried at the end rather than front-loaded.

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?

No output schema exists, and the description compensates by enumerating the return fields (epcis_event, identifier_valid, missing_elements, t3_complete, transaction_date). Combined with the compute-mode and provenance explanation, an agent has enough to call this correctly, though the policy_parameters detail remains thin.

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 explains compute, parent_hashes, parent_tool_ids, and policy_parameters. The description mentions the compute modes and hints at GS1/T3 inputs, but never clarifies which policy_parameters keys (lot, expiry, gln_buyer, th_present, etc.) carry which semantics. 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?

The summary states a concrete verb and resource: verify DSCSA T3 completeness, validate the GS1 SGTIN, and map the EPCIS 2.0 event type. That is specific enough to separate it from sibling verifiers, though the signal is buried after several sentences of boilerplate about compute nodes and receipts.

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 'Output feeds: art-113-saleable-returns-verifier' line implies a chaining context, and the compute-mode text explains execution choice. But there is no explicit when-to-use or when-not-to-use guidance relative to neighbors like verify_saleable_return or verify_product_authenticity; the agent must infer selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_dual_layer_disclosureDual-Layer Disclosure VerifierB
Read-onlyIdempotent
Inspect

Dual-Layer Disclosure Verifier: OpenChainGraph compute node (compliance_mandate). 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-126-ai-act-art50-marking-checker. Output feeds: art-128-content-binding-assertion-validator. Open at: https://ainumbers.co/chaingraph/art-127-dual-layer-disclosure-verifier.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.

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". See the tool's manifest for field names.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations give readOnly/idempotent/non-destructive, and the description adds real context beyond them: compute:"auto" runs server-side on Workers for gpu:false kernels while compute:"browser" returns a delegation URL, gpu:true nodes always delegate, and inputs are transient (not stored, logged, or retained). It also discloses that an AP2 artifact with execution_hash is exported, which is the main side effect an agent should expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences restate nearly the same thing ('Dual-Layer Disclosure Verifier: OpenChainGraph compute node' then 'Deterministic OpenChainGraph compute node'), and the FV-status sentence is a long unreadable hash URL. The substantive middle (compute modes, data handling, artifact export, chain neighbors) is well ordered and front-loaded, so waste is present but not dominant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return burden; it at least says an AP2 artifact with execution_hash is exported. However, for a verifier it never describes the decision outcome (pass/fail fields, what constitutes a violation) and does not resolve what policy_parameters must contain, pointing at an off-description manifest instead. Execution model is complete, decision semantics are not.

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 all four parameters are already documented, including the compute enum and the parent_hashes/parent_tool_ids ordering rule. The description reinforces the compute-mode behavior and frames parent_hashes as provenance chaining, but adds no syntax or format detail the schema lacks, and for policy_parameters it defers to an external 'tool's manifest' rather than naming any fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name and title state a verifier, and the text names the compliance_mandate node class plus an upstream (art-126-ai-act-art50-marking-checker) and downstream (art-128-content-binding-assertion-validator) neighbor, which situates it. But it never says what 'dual-layer disclosure' actually verifies or what verdict the decision function produces — the reader must infer the subject matter from the art-127 URL slug. Purpose is implied rather than stated.

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 pipeline position (consumes art-126 artifacts, feeds art-128) implies when this tool belongs in a chain, and 'Use synthetic or anonymised inputs only' is a usable input constraint. There is no explicit when-not-to-use guidance and no routing away from near siblings such as verify_disclosure_inclusion or validate_content_binding_assertion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_einvoice_vat_calcE-Invoice VAT Calculation VerifierA
Read-onlyIdempotent
Inspect

E-Invoice VAT Calculation Verifier: OpenChainGraph compute node (compliance_mandate). 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-293-einvoice-format-validator. Output feeds: art-295-einvoice-jurisdiction-mandate-router. Open at: https://ainumbers.co/chaingraph/art-294-einvoice-vat-calc-verifier.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: Recompute an e-invoice's line VAT, per-category tax subtotals, tax total, and grand total from its line items under a supplied rounding convention, then compare against the document-asserted amounts. Outputs: consistent, grand_total_computed, grand_total_delta, parse_error, rounding, subtotal_deltas, tax_total_computed, tax_total_delta. Output schema: call describe_tool("verify_einvoice_vat_calc").

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: document, rounding. Unknown keys are refused.

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, closed-world, and the description is consistent with them. It adds genuinely new context: deterministic computation, transient non-stored/non-logged input handling, a synthetic-inputs-only constraint, AP2 artifact export with execution_hash, and a verification receipts snapshot that is explicitly not a subscription.

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?

The description is heavily padded: it repeats the title, restates the compute-mode semantics verbatim from the schema, and embeds a page URL plus a full 64-character FV-status hash. The single most useful sentence (the purpose) is buried at the end instead of being front-loaded.

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?

With no output schema, the description usefully enumerates the return fields (consistent, grand_total_delta, subtotal_deltas, tax_total_delta, parse_error, etc.) and covers provenance chaining and privacy. The one remaining gap is the expected shape of the input document, which is deferred to the upstream art-293 validator.

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 all four parameters are already documented in the schema, including the compute enum and the parent_hashes/parent_tool_ids pairing. The description's compute-mode paragraph largely restates the schema and adds no syntax or format detail for document/rounding beyond 'supplied rounding convention'. Baseline 3 is appropriate.

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 'Summary' sentence states a specific verb and resource: recompute per-line VAT, category subtotals, tax total and grand total from line items under a rounding convention, then compare against document-asserted amounts. That clearly separates it from siblings like validate_einvoice_format or route_einvoice_jurisdiction_mandate. The problem is placement — the actual purpose arrives only after a wall of compute-node boilerplate.

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?

Implicit sequencing is conveyed by 'Consumes upstream artifacts from: art-293-einvoice-format-validator' and 'Output feeds: art-295-einvoice-jurisdiction-mandate-router', which tells the agent where this sits in the chain. But there is no explicit when-to-use/when-not statement or comparison against alternatives such as validate_einvoice_batch or recompute_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_erc165_interface_idERC-165 Interface ID VerifierB
Read-onlyIdempotent
Inspect

ERC-165 Interface ID Verifier: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-606-erc165-interface-id-verifier.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: Recomputes an ERC-165 interfaceId as the XOR of 4-byte function selectors (the first 4 bytes of keccak256 of each canonical Solidity signature) over a caller-declared list of function signatures, using the vendored keccak256 bundle already pinned in this repository. Outputs: claimed_interface_id, computed_interface_id, duplicate_signatures, findings, known_standard_match, malformed_signatures, not_proven, overall_determination, scope_note, selectors. Output schema: call describe_tool("verify_erc165_interface_id").

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: claimed_interface_id, function_signatures. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark the tool as read-only, idempotent, non-destructive, and closed-world, but the description adds useful behavior: deterministic execution, compute:'auto' versus 'browser' delegation, transient input handling with no storage or logging, and AP2 provenance via execution_hash. It also notes the FV-status snapshot verifies offline. This is substantive context beyond the annotations without contradicting them.

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?

The description is not front-loaded: the actual ERC-165 purpose appears only after platform boilerplate, privacy statements, AP2 artifact details, a URL, and a long FV-status hash. It also repeats compute-mode information already fully described in the input schema, reducing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex deterministic verifier with no output schema, the description lists output field names but does not explain their meanings or possible determinations in detail. It covers execution modes and privacy adequately, but leaves some semantic gaps around output interpretation and parameter constraints for an agent to infer from the schema and summary.

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 defines compute, parent_hashes, parent_tool_ids, and policy_parameters including required claimed_interface_id and function_signatures. The description adds some semantic meaning by explaining that function_signatures are canonical Solidity signatures and that claimed_interface_id is compared against the XOR result, but it does not add format details such as hex encoding or selector derivation beyond what is already implied.

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 summary states a precise verb and resource: 'Recomputes an ERC-165 interfaceId as the XOR of 4-byte function selectors ... over a caller-declared list of function signatures.' This is specific enough to identify the operation. However, the purpose is buried after platform boilerplate, and the description does not explicitly distinguish this tool from related sibling tools such as recompute_erc4337_userop_math or verify_erc2612_permit_binding.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and privacy handling, but it gives no explicit guidance on when to use this tool versus alternatives, nor when not to use it. The use case is implied by the name and summary, but no sibling-tool routing or exclusion conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_erc2612_permit_bindingERC-2612 Permit Binding VerifierB
Read-onlyIdempotent
Inspect

ERC-2612 Permit Binding Verifier: OpenChainGraph compute node (compliance_control). 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-699-x402-permit2-evidence-recomputer, art-700-authorization-payload-linter. Open at: https://ainumbers.co/chaingraph/art-612-erc2612-permit-binding-verifier.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: Recomputes the EIP-712 typed-data digest for an ERC-2612 Permit struct (the gasless-approval rail used by USDC and other ERC-2612 tokens) from caller-supplied domain and message fields, recovers the ECDSA signer from a caller-supplied signature, and reports whether the recovered signer binds to t... Outputs: digest, diverging_field, domain, domain_separator, domain_typehash, permit, permit_typehash, reasons, recovered_signer, recovered_signer_matches_owner, recovery_id, recovery_id_source, scope_note, struct_hash, verdict. Output schema: call describe_tool("verify_erc2612_permit_binding").

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: chainId, deadline, name, nonce, owner, r, s, signature, spender, v, value, verifyingContract, version, yParity. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, and the description still adds real context: deterministic compute, server-vs-browser execution semantics, transient processing with no storage or logging, a synthetic-input-only constraint, and an AP2 artifact export carrying execution_hash. What it omits is what the verdict values actually mean and how divergence is reported. No contradiction with the read-only annotations.

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?

The definition opens with generic platform boilerplate (Cloudflare Workers, compute binding, AP2 exports) before reaching what the tool actually does, and includes a raw FV-status URL/path that most callers cannot act on. The summary sentence is truncated mid-clause and the output enumeration is dumped as a comma list. Length is driven by template text rather than useful content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deterministic verification node with no output schema, the description does cover compute behaviour, data handling, provenance chaining and the output field names. But the truncation removes the actual binding criterion, and the enumerated outputs (verdict, diverging_field, reasons, scope_note) are never explained, so an agent still has to call describe_tool to interpret results.

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%, so compute, parent_hashes, parent_tool_ids and the policy_parameters block are fully documented structurally, making 3 the baseline. The description adds only that domain and message fields plus a signature are caller-supplied, and it does not explain the parent_hashes/parent_tool_ids pairing or the required permit field set beyond what the schema already says. Minimal value above the schema.

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 summary eventually states a precise verb chain: recompute the EIP-712 typed-data digest for an ERC-2612 Permit struct, recover the ECDSA signer, and report whether it binds to the owner. That is specific enough to separate it from siblings like verify_x402_signer_recovery or recompute_x402_permit2_digest. The purpose, however, is buried under infrastructure boilerplate and the key clause is truncated mid-sentence ("binds to t..."), which blunts clarity.

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?

There is no explicit when-to-use/when-not guidance and no named alternative among the many sibling verification tools. The only routing signal is the list of upstream artifacts it consumes (art-699 permit2 evidence recomputer, art-700 authorization payload linter), which implies where it sits in a chain but not when to pick it over a neighbour. Usage is inferred, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_erc8004_registry_entryERC-8004 Registry Entry VerifierB
Read-onlyIdempotent
Inspect

ERC-8004 Registry Entry Verifier: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-604-erc8004-registry-entry-verifier.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: Checks whether a caller-supplied claimed ERC-8004 agent registry entry (Identity, Reputation, or Validation registry) and a caller-supplied on-chain record, independently read by the caller from the registry contract, agree field-by-field, and separately whether any address-shaped field in the on... Outputs: address_checksum_findings, agent_id_handling, chain_id, field_comparison, findings, not_proven, overall_determination, registry_address, registry_type, scope_note. Output schema: call describe_tool("verify_erc8004_registry_entry").

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: chain_id, claimed_entry, onchain_record, registry_address, registry_type. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower, yet the description adds real value: server- vs browser-side compute semantics, gpu:true always delegating, transient non-stored inputs, deterministic execution, and an exported AP2 artifact with execution_hash. That is substantive context beyond the annotations, though it does not explain what happens on mismatch.

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?

The actual purpose is front-loaded only after a long preamble of compute-mode, retention, and FV-status-receipt text; the FV-status URL with a 64-hex digest and the offline-verification aside are noise for tool selection, and the output enumeration is cut off mid-sentence. Significant material does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description partially compensates by listing output fields (address_checksum_findings, field_comparison, overall_determination, etc.), but the list is truncated and it never explains what a non-agreement determination looks like or what the artifact contains beyond execution_hash. Adequate but visibly incomplete.

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 all four parameters (compute, parent_hashes, parent_tool_ids, policy_parameters) are documented in the schema, so the baseline is 3. The description echoes the compute modes and mentions execution_hash provenance for chaining, but adds no new meaning about the policy_parameters payload beyond what the schema already states.

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 description states a specific verb and resource: it checks whether a caller-supplied claimed ERC-8004 registry entry and a caller-supplied on-chain record agree field by field, plus address-checksum findings. The core function is distinguishable, but the sentence is truncated mid-thought ("any address-shaped field in the on...") and the purpose is buried under compute/privacy boilerplate.

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 description implies the caller must independently read the on-chain record from the registry contract, which frames the usage context, and it warns to use only synthetic or anonymised inputs. However, it never says when to prefer this over near neighbours like check_mcp_registry_entry or verify_eth_state_proof, and gives no when-not conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_etf_pcf_basketETF PCF Create/Redeem Basket VerificationA
Read-onlyIdempotent
Inspect

ETF PCF Create/Redeem Basket Verification: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-578-etf-pcf-basket-verification.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: Recomputes what an authorized participant's assembled ETF create/redeem basket should contain against the fund's daily Portfolio Composition File (PCF) and diffs it against what was actually assembled, for a declared number of creation units. Outputs: cash_delta_minor, cash_deposited_minor, cash_in_lieu_total_minor, cash_matches, cash_tolerance_minor, clause_note, creation_unit_size, decision, expected_cash_minor, findings, line_count, line_results, pcf_as_of, rejected_inputs, scope_note, transaction_type, units_requested, verdict. Output schema: call describe_tool("verify_etf_pcf_basket").

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: basket, cash_tolerance_minor, creation_unit_size, pcf, transaction_type, units_requested. Unknown keys are refused.

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/closed-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: transient input processing with no storage or logging, the synthetic-inputs-only constraint, the exported AP2 artifact with execution_hash for chain provenance, and the FV-status receipt being an offline-verifiable snapshot. That is meaningful context an agent would not get from annotations or schema.

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?

The definition leads with repeated boilerplate ('OpenChainGraph compute node (compliance_control). Deterministic OpenChainGraph compute node...'), an FV-status URL and a long output enumeration, pushing the actual purpose to the final sentences. The signal an agent needs most should be front-loaded, not appended.

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?

With no output schema, the description compensates by enumerating the output fields (decision, cash_matches, findings, line_results, verdict, etc.) and by explaining provenance and compute behavior. What is missing is a statement of expected input shapes for the PCF and basket objects, but the required-key list in the schema covers most of that gap.

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 the schema already documents compute modes, parent_hashes/parent_tool_ids pairing, and the required policy_parameters keys. The description adds no parameter-level meaning beyond noting that gpu:true nodes always delegate and that unknown keys are refused (which the schema also states). Baseline 3 is appropriate.

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 Summary paragraph states a precise verb and resource: it recomputes the expected contents of an authorized participant's ETF create/redeem basket against the fund's daily PCF and diffs it against what was actually assembled. That is far more specific than the title alone. However, the operative sentence is buried behind two paragraphs of compute-node boilerplate, and no sibling tool (e.g., stress_test_ap_redemption_path, compile_rebalance_evidence_pack) is named as a contrast.

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 implied by the Summary — it applies to a declared number of creation units for a create or redeem transaction type — but there is no explicit when-to-use, when-not-to-use, or alternative-tool routing. The bulk of the description is about compute infrastructure rather than when to pick this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_eth_state_proofState-Proof VerifierA
Read-onlyIdempotent
Inspect

State-Proof Verifier: OpenChainGraph compute node (cryptographic_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-279-state-proof-verifier.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: Verifies an EIP-1186 (eth_getProof) account and storage Merkle-Patricia-Trie proof against a caller-supplied trusted state root using a pure-JavaScript keccak-256 plus RLP decoder and bounded trie walk. Outputs: account, account_exists, address, block_state_root, bounded_limits, diagnostic, errors, proof_nodes_consumed, receipt_statement, regulatory_note, storage_results, verdict. Output schema: call describe_tool("verify_eth_state_proof").

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: account_proof, storage_slots. Unknown keys are refused.

TDQS

A3.5/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), and the description adds genuinely valuable traits beyond them: gpu:true nodes always delegate to the browser and compute:'browser' returns a delegation URL instead of a verdict, inputs are processed transiently with no storage or logging, and an AP2 artifact with execution_hash is exported for provenance. The bounded trie walk and offline-verifiable FV-status snapshot are also disclosed. It loses a point only because some of this is platform boilerplate rather than tool-specific 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?

Roughly 200 words where ~50 would suffice, and the ordering is poor: platform preamble, a documentation URL, and a 64-character FV-status hash path precede the one sentence that says what the tool does. The 'Summary:' and 'Outputs:' labels help scanning, but a large fraction of the text is boilerplate repeated across every node in this family rather than information specific to this verifier.

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?

There is no output schema, but the description compensates by enumerating the return fields (verdict, storage_results, proof_nodes_consumed, bounded_limits, errors, receipt_statement) and routing to describe_tool for the schema. Combined with annotations covering safety and the explicit privacy/compute binding, an agent has enough to call this correctly. Minor gaps remain around the exact wire format of account_proof and storage_slots entries.

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 compute, parent_hashes, parent_tool_ids, and the policy_parameters sub-keys including the required account_proof and block_state_root. The description restates the compute:'auto'/'browser' semantics already present in the schema and clarifies that the state root is caller-supplied and trusted, which is a small value add. Baseline 3 applies since the schema does the heavy lifting.

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 Summary sentence names a specific verb and resource: it verifies an EIP-1186 (eth_getProof) account and storage Merkle-Patricia-Trie proof against a caller-supplied trusted state root. That distinguishes it from the many verify_* siblings (verify_merkle_airdrop_proof, verify_reserve_proof, verify_finp2p_ledger_proof). The problem is placement: the first ~80 words are generic platform boilerplate about compute nodes and FV-status receipts, so the actual purpose is buried rather than front-loaded.

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 by the object being verified (an EIP-1186 proof against a trusted root), plus the constraint 'Use synthetic or anonymised inputs only'. The description never says when to pick this over the numerous sibling proof verifiers, nor does it state prerequisites such as already having an eth_getProof response in hand. The compute-mode guidance explains execution routing, not when to invoke this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_execution_hashVerify a ChainGraph execution hashA
Read-onlyIdempotent
Inspect

Independently verify a ChainGraph artifact (ChainGraph Standard v0.1 §6). Recomputes SHA-256 over the canonical (sorted-key, whitespace-stripped) JSON of policy_parameters + output_payload and compares it to the claimed execution_hash. A match proves integrity: policy_parameters and output_payload are byte-for-byte what was hashed. It does not by itself show the outputs were computed from the inputs; for that, re-run the stage and compare (SPEC §4), or check the artifact's compute_proof where one is present (SPEC §18). Pass either a full artifact object, or policy_parameters + output_payload + claimed_hash. Inputs must be I-JSON (RFC 7493): integers beyond 2^53 must be passed as JSON strings, and NaN/Infinity are rejected. Values outside I-JSON have no stable canonical form, so this tool returns a structured -32602 error (error.data.reason "ijson_violation") instead of a hash. Pure client-safe compute -- no data is stored. Use this to verify artifacts from any vendor that conforms to the ChainGraph Standard. Also verifies composite chain artifacts from run_chain (composite_artifact, ChainGraph SPEC §21.2/§21.4): hash-excluded adjacent metadata such as decision_trail, step_compliance_flags, non_live_steps and escalation_record is dropped before recompute, and the response names which rule applied.

NameRequiredDescriptionDefault
artifactNoA full ChainGraph artifact envelope (must contain policy_parameters, output_payload, and execution_hash).
claimed_hashNoThe execution_hash to check against (if not passing a full artifact).
output_payloadNoArtifact output_payload (if not passing a full artifact).
policy_parametersNoArtifact policy_parameters (if not passing a full artifact).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations (readOnly/idempotent/destructive=false/closed-world) by disclosing that it is pure client-side compute with nothing stored, that a match proves byte-integrity only and not correct derivation, that non-I-JSON input yields a structured -32602 error with error.data.reason 'ijson_violation', and that composite artifacts have hash-excluded adjacent metadata (decision_trail, step_compliance_flags, non_live_steps, escalation_record) dropped before recompute with the applied rule named in the response.

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?

Front-loaded with the operation and its guarantee before moving to caveats, alternatives, input modes, and encoding rules, so the reader gets the essentials first. It is on the long side and the composite-artifact paragraph could be tightened, but every sentence carries operational information rather than restating the title.

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?

With no output schema, the description carries the burden of describing returns; it covers the failure path in detail (structured -32602 with reason code) and implies a match/mismatch verdict plus a rule name for composites, but never states the success response shape (field names for match, computed hash, rule applied). Given the tool's complexity and four-parameter surface, that is the one remaining gap.

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 the mutually exclusive input modes (either a full artifact object, or policy_parameters + output_payload + claimed_hash) which the schema only hints at with per-field 'if not passing a full artifact' notes. It also adds value-level constraints the schema does not express: integers beyond 2^53 must be passed as strings and NaN/Infinity are rejected.

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 plus resource (independently verify a ChainGraph artifact) and immediately defines the exact computation: SHA-256 over canonical sorted-key, whitespace-stripped JSON of policy_parameters + output_payload compared to the claimed execution_hash. That level of specificity separates it from adjacent verification siblings such as verify_slsa_provenance or verify_conversion_receipt without needing their schemas.

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?

Explicitly scopes what a match does and does not prove, and names the alternatives for proving input-to-output derivation (re-run the stage per SPEC §4, or check compute_proof per SPEC §18). It also says to use it for artifacts from any conforming vendor and for composite artifacts from run_chain. It does not contrast against the many other verify_* siblings, so an agent still has to infer when this versus a different verifier applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_finp2p_ledger_proofFinP2P Ledger Proof VerifierB
Read-onlyIdempotent
Inspect

FinP2P Ledger Proof Verifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-587-finp2p-ledger-proof-verifier.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: Verifies a FinP2P Ledger Proof in Hashlist mode against a caller-supplied secp256k1 public key. Outputs: hash_match, hashlist_field_order, hashlist_values_consistent, hashlist_values_declared, parse_errors, scope_note, signature_match, verified_against. Output schema: call describe_tool("verify_finp2p_ledger_proof").

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: proof, receipt. Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-destructive annotations, it discloses real behavioral traits: deterministic computation, server-side vs. browser delegation depending on compute mode and gpu flag, transient non-retained input processing, and export of an AP2 artifact carrying execution_hash for provenance chaining. It stops short of describing failure modes or limits, but the annotations already cover the safety profile.

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?

The structure is badly front-loaded: the first substantive content is compute-mode boilerplate repeated from the schema, the actual purpose appears in the final "Summary" line, and the FV-status paragraph embeds a 64-character hash and an artifact URL that consume attention without helping tool selection. Several sentences are pure repetition ("OpenChainGraph compute node" twice; "Deterministic OpenChainGraph compute node").

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?

With no output schema, the description compensates by listing the return fields (hash_match, hashlist_field_order, hashlist_values_consistent, signature_match, verified_against, parse_errors, scope_note), which is genuinely useful for interpreting results. It also covers provenance chaining and privacy handling; the main gap is that "Hashlist mode" and the accepted proof/receipt encodings are never explained.

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 would be 3, but the description adds meaning where the schema is weak: the policy_parameters sub-properties (proof, receipt, verification_public_key) are untyped empty objects, and the description supplies the key semantic that the public key is secp256k1 and that proof/receipt are required. The compute-mode prose largely duplicates the enum description, however.

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 trailing summary gives a specific verb+resource: verifies a FinP2P Ledger Proof in Hashlist mode against a caller-supplied secp256k1 public key, which is precise enough to separate it from generic proof verifiers. However, the opening sentence only restates the title ("FinP2P Ledger Proof Verifier"), so an agent must read to the end of a long description to learn what is actually verified.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to pick this over sibling verifiers such as verify_execution_hash, verify_reserve_proof, or verify_proof_of_reserves_consistency, nor any stated preconditions (e.g. which FinP2P Hashlist artifacts are valid input). The only directive is the data-handling constraint "use synthetic or anonymised inputs only," which is not about tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_input_attestationsInput Attestation VerifierA
Read-onlyIdempotent
Inspect

Input Attestation Verifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-598-input-attestation-verifier.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: Verify SPEC.md §23 input_attestations entries — vc-2.0, c2pa-manifest, rfc3161-snapshot, zktls — against a target artifact's policy_parameters. Outputs: zero_attestation_caveat_shown, attestation_count, attestations. Output schema: call describe_tool("verify_input_attestations").

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: target_policy_parameters, input_attestations. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only/idempotent/non-destructive, but the description adds genuinely new behavioral facts: inputs are processed transiently and not stored or logged, compute:"browser" returns a delegation URL instead of executing, gpu:true always delegates, and the call exports an AP2 artifact with execution_hash. Minor tension with readOnlyHint in that it emits an artifact, but the description explicitly says nothing is retained, so it clarifies rather than contradicts.

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?

The actual purpose is buried at the end under "Summary:" after title restatement, compute-node framing, and a long FV-status paragraph with a full hash URL and meta-commentary about offline receipt verification. Those sentences do not help an agent select or invoke the tool and push the useful content to the tail.

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?

There is no output schema, but the description compensates by naming the returned fields (zero_attestation_caveat_shown, attestation_count, attestations) and pointing at describe_tool for the full schema. Compute-mode and provenance-chaining behavior are covered; the remaining gap is the unaddressed overlap with the sibling `validate_input_attestations`.

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%, including a detailed enum description for `compute`, so the schema already carries parameter meaning. The description largely repeats the compute semantics verbatim and says nothing about `parent_hashes` / `parent_tool_ids` chaining or the nesting inside `policy_parameters` beyond naming the two required keys. Baseline 3 for full schema coverage.

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 'Summary' states a concrete verb+object: verify SPEC.md §23 input_attestations entries (vc-2.0, c2pa-manifest, rfc3161-snapshot, zktls) against a target artifact's policy_parameters. That is specific and actionable, but it never distinguishes itself from the near-identically named sibling `validate_input_attestations`, which an agent will almost certainly confuse it with.

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 guidance exists only for compute mode ("auto" vs "browser" vs gpu:true delegation) and a data-handling caveat ("Use synthetic or anonymised inputs only"). There is no statement of when to choose this tool over `validate_input_attestations` or `validate_private_inputs`, so tool selection is left to inference from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_ipe_integrityIPE Integrity VerifierB
Read-onlyIdempotent
Inspect

IPE Integrity Verifier: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-460-ipe-integrity-verifier.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: Verifies Information-Produced-by-Entity (IPE) completeness and accuracy for SOX 404 / ICFR control testing -- is this report extract what the source system actually produced. Outputs: control_total_delta, discrepancies, hash_match, integrity_status, report_control_total, report_hash, report_row_count, row_count_match, source_control_total, source_extract_hash, source_row_count, tolerance, total_within_tolerance. Output schema: call describe_tool("verify_ipe_integrity").

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: report_control_total, report_hash, report_row_count, source_control_total, source_extract_hash, source_row_count, tolerance. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds real behavioral context beyond them: inputs are processed transiently on Cloudflare Workers and not stored or logged, execution is deterministic, gpu:true nodes always delegate to a browser URL, and an AP2 artifact with execution_hash is exported for chain provenance. It does not contradict the readOnly hint since no persistent state mutation is claimed, though 'exports an AP2 artifact' is a side effect the annotations do not capture and could have been clarified further.

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?

The text is poorly front-loaded: it opens with repeated generic framing ('OpenChainGraph compute node (compliance_control). Deterministic OpenChainGraph compute node.'), then a compute-mode lecture, a URL, a 64-hex FV-status path, and only then the actual purpose under 'Summary:'. Substantial boilerplate and the long output-field enumeration reduce signal density for a reader scanning for what the tool does.

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?

With no output schema, the description usefully enumerates the returned fields (report_hash, source_extract_hash, hash_match, tolerance, discrepancies, integrity_status, etc.), which an agent otherwise could not know, and it explains the transient-processing and chaining behavior. The remaining gap is semantic: it never explains what tolerance means in the comparison or how discrepancies are judged, which matters for interpreting results.

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 compute, parent_hashes, parent_tool_ids and policy_parameters in detail. The description restates the compute modes and lists the required policy_parameters keys plus 'Unknown keys are refused', but adds little syntax or meaning beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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 'Summary' sentence gives a specific verb and resource: verifies IPE (Information-Produced-by-Entity) completeness/accuracy of a report extract against the source system for SOX 404 / ICFR control testing, and names the concrete outputs (hash_match, row_count_match, integrity_status). That is far more than a restatement of the name, though the purpose is buried mid-description behind generic compute-node boilerplate and it never names a sibling (e.g. verify_anchored_extract) it should not be confused with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use / when-not or alternative-tool routing. The compute-mode discussion ('auto' vs 'server' vs 'browser') is selection guidance for the compute parameter, not for choosing this tool, and 'Use synthetic or anonymised inputs only' is a constraint rather than usage context. An agent must infer that this is the right tool for SOX/IPE extract-vs-source reconciliation from the buried summary alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_kya_x402_scopeKYA Credential x x402 Payload Scope VerifierA
Read-onlyIdempotent
Inspect

KYA Credential x x402 Payload Scope Verifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-565-kya-x402-scope-verifier.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: Cross-checks a declared KYA (Know Your Agent) credential's scope against a declared x402 PaymentPayload: amount vs the credential's spend cap, network/asset vs its allowed set, payee vs its merchant allowlist, validity window vs the payload's timestamps, and scope-string coverage of the payment s... Outputs: credential_audience, credential_seller_service_id, credential_subject, findings, indeterminate_reasons, kya_claim_basis, note, payload_network, payload_scheme, rationale, rejected_inputs, verdict. Output schema: call describe_tool("verify_kya_x402_scope").

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: kya_credential, x402_payload. Unknown keys are refused.

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 and closed-world, so safety is covered. The description earns extra credit beyond that by disclosing transient processing with no storage or logging, browser-delegation fallback for gpu:true nodes, and that it exports an AP2 artifact carrying execution_hash for provenance.

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?

The actual purpose is buried after a long block of platform boilerplate about compute nodes, an FV-status URL with a full hex hash, and an artifact link. The Summary sentence is even truncated mid-word ('payment s...'), so the most load-bearing text is both late and incomplete.

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?

There is no output schema, but the description compensates by enumerating the returned fields (credential_audience, findings, indeterminate_reasons, verdict, rejected_inputs, etc.), which tells the agent what a verdict-shaped result looks like. Combined with the annotations and fully documented schema, the definition is nearly complete for calling it 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 description coverage is 100%, so both compute and the parent_hash/parent_tool_id chaining parameters are already documented. The description adds little beyond restating compute modes, and policy_parameters' required keys (kya_credential, x402_payload) are only noted in the schema, 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?

The Summary sentence names a specific verb and both resources: it cross-checks a declared KYA credential's scope against a declared x402 PaymentPayload, and enumerates the concrete checks (amount vs spend cap, network/asset vs allowed set, payee vs merchant allowlist, validity window vs timestamps). That is far more specific than any sibling in the list, so an agent can distinguish it without opening 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to reach for this verifier versus alternatives like validate_ap2_x402_mandate, correlate_ap2_cartmandate_x402, or lint_x402_v2_migration. The compute-mode text explains execution routing, not tool selection, and there are no exclusions or prerequisites named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_license_electionLicense Election VerifierA
Read-onlyIdempotent
Inspect

License Election Verifier: OpenChainGraph compute node (cryptographic_mandate). 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-199-license-election-certifier. Open at: https://ainumbers.co/chaingraph/art-200-license-election-verifier.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: Verifies a certificate produced by the License Election Certifier by recomputing the SHA-256 terms_hash over the JCS-canonical election core and comparing it against the stored hash. Outputs: binding_ok, checks, verdict. Output schema: call describe_tool("verify_license_election").

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". Unknown keys are refused.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds substantial context beyond those hints: compute modes and server/browser delegation, transient processing with no storage/logging, a requirement to use synthetic or anonymised inputs, and the export of an AP2 artifact with execution_hash for chain provenance. No contradiction with annotations is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and front-loads generic OpenChainGraph compute-node boilerplate before reaching the core purpose in the later 'Summary' section. Some content is useful, but the tool's actual verification function is buried and several sentences repeat operational context that could be tighter.

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?

With no output schema, the description does well to list the output fields binding_ok, checks, and verdict. It also covers compute behavior, data handling, upstream artifact dependency, and export provenance. It does not fully explain the certificate contents expected in policy_parameters, but the schema documents the parameter structure at 100% coverage.

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 input schema already documents all four parameters. The description repeats the compute-mode semantics that are already present in the schema and does not add further meaning for parent_hashes, parent_tool_ids, or policy_parameters. The baseline of 3 is appropriate when the schema carries the parameter documentation.

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?

The description explicitly states that the tool verifies a certificate produced by the License Election Certifier by recomputing the SHA-256 terms_hash over the JCS-canonical election core and comparing it to the stored hash. This is a specific verb+resource and clearly distinguishes it from the sibling certify_license_election tool, which produces the upstream certificate.

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?

It gives clear context that the tool is used to verify certificates from the License Election Certifier and consumes upstream artifacts from art-199-license-election-certifier. However, it does not explicitly state when not to use it or name alternative sibling tools, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_merkle_airdrop_proofMerkle Airdrop-Proof VerifierA
Read-onlyIdempotent
Inspect

Merkle Airdrop-Proof Verifier: OpenChainGraph compute node (payment_policy). 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. Open at: https://ainumbers.co/chaingraph/art-605-merkle-airdrop-proof-verifier.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: Recomputes a Merkle airdrop-claim proof from caller-declared leaf fields (address, uint256 amount, encoding_variant) and a sibling path, OpenZeppelin MerkleProof.verify shape (processProof/_hashPair) over the already-vendored @noble/hashes keccak256 bundle -- no new vendoring, no hand-rolled hash... Outputs: leaf, computed_root, path, encoding_variant_used, pair_sort_used, root_matches_claimed, path_intact, first_divergent_step, note, reasons. Output schema: call describe_tool("verify_merkle_airdrop_proof").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses deterministic execution, server-side vs browser compute behavior, transient non-stored processing, synthetic-input requirements, AP2 artifact export with execution_hash, and offline-verifiable FV-status context. These details materially help an agent understand the tool's operational and privacy behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with a Summary and Outputs section, but it is not front-loaded: the actual verification purpose appears after compute-node boilerplate and an FV-status URL. It is informative but includes redundant and tangential material that makes it longer than necessary.

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?

There is no output schema, but the description lists the relevant output fields and explains the compute-mode and provenance behavior. For a complex nested-parameter verification tool, this is largely complete, though it could more explicitly describe error or refusal behavior.

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 the parameters. The description adds useful context about leaf fields and sibling paths, but it does not consistently map or elaborate all nested policy_parameters beyond what the schema provides.

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 summary states a specific verb and resource: recomputing a Merkle airdrop-claim proof from leaf fields and a sibling path using OpenZeppelin MerkleProof.verify shape. This is clearly distinguishable from generic Merkle tools, though it does not explicitly name sibling alternatives such as verify_merkle_batch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and privacy constraints but gives no guidance on when to use this tool versus sibling verification tools. It also provides no explicit when-not-to-use or alternative-selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_merkle_batchMerkle Batch VerifierA
Read-onlyIdempotent
Inspect

Merkle Batch Verifier: OpenChainGraph compute node (cryptographic_mandate). 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: rca-02-mica-reserve-stress, pnr-01-dora-ict-cascade-simulator. Output feeds: ptg-01-ap2-prompt-template-generator, cry-05-agent-action-audit-trail-aggregator. Open at: https://ainumbers.co/chaingraph/cry-04-merkle-batch-verifier.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: Batch-verifies Merkle inclusion proofs using SHA-256 over payment batches, settlement message sets, and ISO 20022 sets. Outputs: batch_integrity, failed_count, invalid_count, pass_rate, results, total, verified_count. Output schema: call describe_tool("verify_merkle_batch").

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: merkle_root, proof_entries. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds meaningful context beyond that: transient processing with no storage or logging, server-side vs browser delegation semantics, and an AP2 artifact export carrying execution_hash. The FV-status snapshot note is useful provenance detail, though much of the surrounding text is chain-graph boilerplate.

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?

The description is long and front-loaded with redundant framing ('OpenChainGraph compute node' appears twice) and a full FV-status URL, while the actual purpose is deferred to a trailing 'Summary:' sentence. Multiple sentences do not earn their place for an agent selecting a tool.

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?

Given four parameters, a nested policy_parameters object, and no output schema in structured form, the description compensates by enumerating output fields (batch_integrity, pass_rate, results, etc.), naming upstream artifacts consumed and downstream tools fed, and stating the privacy posture. Adequate for correct invocation.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters (including required merkle_root/proof_entries). The description merely restates the compute-mode narrative and adds no detail on proof_entries structure or how chaining pairs parent_hashes with parent_tool_ids.

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 final sentence gives a specific verb and resource: batch-verifies Merkle inclusion proofs with SHA-256 over payment batches, settlement message sets, and ISO 20022 sets. However, the purpose is buried at the end of the description, and the very close sibling verify_merkle_airdrop_proof is never named or distinguished.

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?

Compute-mode behavior (auto/server/browser, gpu:true delegation) is explained, and upstream/downstream chain links are listed, but there is no explicit 'use this instead of verify_merkle_airdrop_proof / verify_summa_mst_inclusion when...' routing guidance. The agent must infer selection from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_migration_completenessPayment Data Migration CompletenessB
Read-onlyIdempotent
Inspect

Payment Data Migration Completeness: OpenChainGraph compute node (attestation_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-519-payment-data-migration-completeness.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: Verifies that data moved from a legacy system to a successor is complete, value-preserving, and reconcilable, using caller-declared per-partition source and target record counts and control totals rather than reading any dataset. Outputs: aggregate_complete, aggregate_count_variance, aggregate_value_variance_display, aggregate_value_variance_minor_units, all_partitions_complete, any_sampled_only, as_of, currency, declared_transformation_rules, migration_complete, migration_id, note, observed_changed_field_count, partition_count, partition_inconsistent, partitions, partitions_with_variance_count, rationale, reconciliation_tolerance_minor_units, rejected_inputs, sample_discrepancies_total, sampled_partition_count, undeclared_transformed_fields. Output schema: call describe_tool("verify_migration_completeness").

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: as_of, currency, declared_transformation_rules, migration_id, observed_changed_fields, partitions, reconciliation_tolerance_minor_units. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, and the description goes well beyond them: compute modes (auto/server/browser), server-side execution on Cloudflare Workers for registered kernels, forced browser delegation for gpu:true, transient processing with no storage or logging, and an exported AP2 execution_hash for chain provenance. That is genuinely useful operational context for a verification tool. It loses a point for burying these facts in boilerplate rather than a structured behavioral statement.

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?

The actual purpose is buried mid-paragraph after infrastructure boilerplate about compute nodes, Worker kernels, and an FV-status URL, and the text ends in a 25-item output-name dump. Multiple sentences do not earn their place for tool selection, and the reader has to reach the fifth sentence to learn what is being verified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, enumerating the returned fields is a real service, and the privacy/retention statement covers a caller's obvious worry. However, partitions is a bare array with no item schema and the description never explains what each partition object must contain (source count, target count, control totals), which is the single thing an agent most needs in order 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 description coverage is 100%, so the compute, parent_hashes, parent_tool_ids and policy_parameters entries are already documented in the schema. The description adds only the notion that partitions carry source/target record counts and control totals, plus the output field list, and says nothing about the required shape of individual partition objects. Baseline 3 applies since the schema does the heavy lifting.

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 core sentence is specific: it verifies that data moved from a legacy system to a successor is complete, value-preserving, and reconcilable, and it explicitly says it works from caller-declared per-partition counts rather than reading any dataset. That distinguishes it from data-reading siblings like reconcile_aml_lookback_completeness. It does not name the nearest-looking sibling (verify_address_migration_batch), so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus the many adjacent reconciliation/migration tools, and no exclusions. The only directive present, 'Use synthetic or anonymised inputs only,' is a privacy constraint, not usage routing. An agent must infer applicability from the purpose sentence alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_product_authenticityLuxury Goods Product Authenticity VerifierB
Read-onlyIdempotent
Inspect

Luxury Goods Product Authenticity Verifier: OpenChainGraph compute node (compliance_mandate). 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-116-product-lineage-builder. Open at: https://ainumbers.co/chaingraph/art-117-product-authenticity-verifier.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: Verify that presented lineage hashes chain back to the claimed root and that ownership transfers are continuous. Outputs: authentic, chains_to_root, ownership_continuous, product_id. Output schema: call describe_tool("verify_product_authenticity").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds real behavior beyond that: inputs are processed transiently with no storage or logging, compute:'browser' returns a delegation URL instead of a result, gpu:true nodes always delegate, and an AP2 artifact with execution_hash is exported for provenance. It stops short of saying what a failed verification returns or how errors surface.

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?

The definition is front-loaded with low-value boilerplate (tool name restated twice, 'Deterministic OpenChainGraph compute node', a long inline /fv-status/ hash URL that serves no invocation decision). The single sentence an agent actually needs is buried mid-paragraph, and the FV-status explanation adds noise relative to its decision value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does list the four output fields, which is a meaningful compensation. Still, for a verification tool with a nested policy_parameters object and a browser-delegation execution path, it omits what a negative result looks like, whether partial chains yield 'authentic: false' or an error, and what the delegation URL response contains.

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 explains compute, parent_hashes, and parent_tool_ids; the description's compute-mode prose largely mirrors the schema. The nested policy_parameters members (product_id, claimed_root_hash, ownership_transfers, presented_lineage_hashes) are untyped and undescribed in the schema, and the description does not compensate by defining their expected shapes or ordering constraints.

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 'Summary' sentence gives a specific verb and resource: verify that presented lineage hashes chain back to the claimed root and that ownership transfers are continuous, and it enumerates the outputs (authentic, chains_to_root, ownership_continuous, product_id). However, it never differentiates itself from plausible siblings such as build_product_lineage, assess_suspect_product_status, or resolve_provenance_ingredient_tree, and the actual purpose statement is buried under branding and compute-node boilerplate.

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?

'Consumes upstream artifacts from: art-116-product-lineage-builder' implies the tool should be invoked after lineage has been built, which is useful ordering context. There is no explicit when-to-use/when-not-to-use guidance and no routing to alternative verification or lineage siblings, so usage is only inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_proof_of_reserves_consistencyProof-of-Reserves VerifierB
Read-onlyIdempotent
Inspect

Proof-of-Reserves Verifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-584-proof-of-reserves-verifier.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: Independently recomputes an exchange or custodian's published Proof-of-Reserves data: a single-leaf Merkle-sum inclusion path, a liability-side Merkle-sum branch aggregation, and a coverage ratio between the two recomputed sums, with an optional cross-check against a caller-declared published res... Outputs: overall_determination, findings, computed_reserve_root, declared_reserve_root, computed_liability_root, declared_liability_root, coverage_ratio_pct, reserve_figure_cross_check, not_proven, determination_note, regulatory_framework. Output schema: call describe_tool("verify_proof_of_reserves_consistency").

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". Unknown keys are refused.

TDQS

B3.4/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 the description goes well beyond them: determinism, server-vs-browser execution path, GPU delegation, transient processing with no storage or logging, and an exported AP2 artifact carrying execution_hash for provenance chaining. That is meaningful operational context an agent cannot get from the annotations. It would be a 5 with a note on failure or refusal behaviour when inputs are malformed.

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?

Much of the text is templated compute-node metadata (Cloudflare Workers, privacy note, a URL, an FV-status JSON hash path) that does not help select or invoke the tool, and the actual summary is cut off mid-word ('against a caller-declared published res...'). The genuinely useful content is buried rather than front-loaded, so the definition is long and hard to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so listing the return fields is helpful, and the compute/chaining semantics are covered. However, for a deterministic recompute over nested Merkle-sum structures, the description never explains what a valid reserve_proof or liability_branch must contain or what a failing determination looks like, leaving the hardest part of invocation underspecified.

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%, so compute, parent_hashes, parent_tool_ids and policy_parameters are already documented in the schema; baseline 3 applies. The description adds only marginal semantics beyond it — that published_reserve_figures is an optional cross-check against caller-declared figures — and says nothing about the expected shape of reserve_proof or liability_branch, which is where an agent would most likely err.

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 summary sentence names a specific verb and resource: independently recomputes an exchange/custodian's published Proof-of-Reserves data (Merkle-sum inclusion path, liability branch aggregation, coverage ratio). That is clearly distinct from siblings like verify_reserve_proof or compute_por_liabilities_composite, though no sibling is named explicitly. The purpose is real but pushed behind several paragraphs of generic compute-node boilerplate.

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 only 'when' guidance concerns execution mode: compute:'auto' is the default, 'browser' forces delegation, gpu:true nodes always delegate. There is no statement of when to pick this verifier over the neighbouring verify_reserve_proof, precheck_reserve_attestation, or compute_por_liabilities_composite, nor any prerequisite or exclusion. Usage is inferable from the summary but not prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_reserve_proofReserve Proof VerifierB
Read-onlyIdempotent
Inspect

Reserve Proof Verifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-280-reserve-proof-verifier.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: Verifies a Merkle-sum Proof-of-Reserves customer-inclusion proof (OKX, Binance, Gate, Kraken export formats, or a generic canonical shape) against a declared root, and checks a Chainlink PoR / NAVLink aggregator round for staleness and deviation. Outputs: computed_leaf_hash, computed_root, declared_root, exchange, inclusion_verified, not_proven, por_round, regulatory_framework, reserve_proof_determination, root_hash_match, storage_proof_composition, structural_error, sum_verified. Output schema: call describe_tool("verify_reserve_proof").

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: merkle_proof. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world, so the bar is lower, and the description still adds real behavioural facts: inputs are processed transiently and never stored or logged, an AP2 artifact with execution_hash is exported for chain provenance, browser mode returns a delegation URL, and the FV-status receipt verifies offline. These go meaningfully beyond what the annotations declare.

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?

The description opens by restating the title ('Reserve Proof Verifier: OpenChainGraph compute node') and front-loads generic platform boilerplate, a documentation URL, and a 64-character FV-status path before the actual purpose. The one sentence an agent needs is the last one; much of the rest is recycled across every sibling tool.

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?

With no output schema, the description usefully enumerates the returned fields (inclusion_verified, not_proven, por_round, root_hash_match, storage_proof_composition, etc.) and explains the compute/delegation model, which is enough to call the tool correctly. The remaining gap is sibling disambiguation and the expected shape of the merkle_proof payload.

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%, so the schema already documents compute, parent_hashes, parent_tool_ids and policy_parameters, making 3 the baseline. The description restates the compute modes and hints at exchange/por_round/merkle_proof via the output list, but adds no format or syntax detail for the merkle_proof shapes (OKX/Binance/Gate/Kraken/generic) beyond what the schema names.

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 'Summary' sentence names a specific verb and resource: verifying a Merkle-sum Proof-of-Reserves customer-inclusion proof against a declared root plus a Chainlink PoR/NAVLink round check. That is concrete, but it is buried at the very end after several paragraphs of compute-node boilerplate, and it never distinguishes itself from the near-identical sibling verify_proof_of_reserves_consistency.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use / when-not-to-use guidance and no named alternative among close siblings (verify_proof_of_reserves_consistency, precheck_reserve_attestation, compute_por_liabilities_composite). The only routing advice is about the compute parameter ('auto' vs 'browser'), plus the privacy caveat to use synthetic or anonymised inputs, which is an input-hygiene rule rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_revocation_statusRevocation-Status VerifierB
Read-onlyIdempotent
Inspect

Revocation-Status Verifier: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-287-revocation-status-verifier.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: Checks a receipt's optional W3C BitstringStatusList credentialStatus reference and reads the revocation bit at statusListIndex from a supplied, zero-egress status list credential. Outputs: note, revoked_for_purpose, status, status_list_credential_url, status_list_index, structural_error. Output schema: call describe_tool("verify_revocation_status").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly, idempotent, non-destructive annotations, the description discloses deterministic computation, server-side versus browser delegation behavior, transient processing with no storage or logging, and AP2 artifact export with execution_hash. These are meaningful behavioral details, though the description could be clearer about operational limits such as rate limits or authentication.

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?

The description is long and front-loads generic OpenChainGraph boilerplate, including duplicated phrases such as 'OpenChainGraph compute node' and 'Deterministic OpenChainGraph compute node.' The actual purpose appears only in the final summary, and several compute-mode sentences repeat what the schema already states.

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?

For a four-parameter tool with no output schema, the description covers the operational purpose, compute behavior, privacy handling, and the output fields including status and structural_error. It is largely complete for correct invocation, with minor gaps around detailed output semantics and parameter formatting.

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?

Top-level schema coverage is already complete, but the nested policy_parameters fields are empty objects in the schema. The description compensates by explaining that credential_status is an optional W3C BitstringStatusList reference and that status_list_credential is a supplied zero-egress status list credential, adding real meaning beyond the schema.

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 summary states a specific verb and resource: it checks a receipt's W3C BitstringStatusList credentialStatus reference and reads the revocation bit at statusListIndex from a supplied status list credential. This distinguishes the tool from generic verification siblings by naming the exact standard and operation, though the purpose is buried behind boilerplate and no sibling is explicitly contrasted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains compute modes and privacy constraints, but it never says when to choose this tool over alternatives such as verify_execution_hash or other credential-verification siblings. There is no explicit when-to-use, when-not-to-use, or alternative routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_saleable_returnDSCSA Saleable Returns VerifierB
Read-onlyIdempotent
Inspect

DSCSA Saleable Returns Verifier: OpenChainGraph compute node (compliance_mandate). 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-112-dscsa-transaction-statement-verifier. Output feeds: art-114-suspect-product-quarantine. Open at: https://ainumbers.co/chaingraph/art-113-saleable-returns-verifier.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: Match a returned unit SGTIN+lot to its original transaction hash (DSCSA §582(c)(4)(D)). Outputs: id_match, lot_match, match, reason, txn_anchored, verdict. Output schema: call describe_tool("verify_saleable_return").

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". Unknown keys are refused.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuine behavior beyond them: compute mode resolution (auto/server/browser, gpu:true always delegates), transient non-stored processing, and export of an AP2 artifact carrying execution_hash for chain provenance. What is missing is any note on failure modes (e.g. behavior when the original txn hash is absent) or what the verdict values can be.

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?

Roughly half the text is platform boilerplate, a documentation URL, and a 64-character FV-status hash filename that no agent needs in order to invoke the tool. The single most useful sentence, the §582(c)(4)(D) match summary, appears near the end rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description usefully enumerates the return fields (id_match, lot_match, match, reason, txn_anchored, verdict), and compute/chaining behavior is covered. But the substantive decision inputs in policy_parameters are left unexplained, which is the one gap that actually matters for correct invocation.

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%, so the baseline is 3. The description restates compute semantics and hints at chaining via parent_hashes, but adds nothing for the seven untyped policy_parameters keys (original_sgtin, returned_sgtin, original_lot, returned_lot, original_txn_hash, seller_authorized, within_resale_window), which the schema leaves completely opaque even though they are the actual decision 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 sentence 'Match a returned unit SGTIN+lot to its original transaction hash (DSCSA §582(c)(4)(D))' gives a crisp verb+resource and even names the operative regulation, and the upstream/downstream art-112/art-114 references differentiate it from verify_dscsa_transaction_statement. However, this purpose statement is buried after several sentences of platform boilerplate, so an agent must read past noise to find out what the tool actually does.

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?

It states that it consumes upstream artifacts from art-112-dscsa-transaction-statement-verifier and that its output feeds art-114-suspect-product-quarantine, which implies workflow position. But there is no explicit 'use this when / not when' guidance and no direct comparison against the closest sibling, verify_dscsa_transaction_statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_settlement_asset_backingSettlement-Asset Backing InvariantB
Read-onlyIdempotent
Inspect

Settlement-Asset Backing Invariant: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-521-settlement-asset-backing-invariant.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: Checks whether value held across an issuance topology stays fully backed in aggregate, not merely per account, as balances move between caller-declared buffers. Outputs: aggregate_backing_after_display, aggregate_backing_after_minor_units, aggregate_backing_before_display, aggregate_backing_before_minor_units, as_of, backing_applicable, backing_intact_after, backing_intact_before, backing_model, backing_ratio_bps, breaches_after, breaches_before, buffer_count, buffer_margins, buffers, crossing_cost_display, crossing_cost_minor_units, crossing_count, idle_amount_minor_units, idle_cost_display, idle_cost_minor_units, movement_breaks_invariant, movements, note, rationale, rejected_inputs, required_backing_display, required_backing_minor_units, thinnest_buffer, value_in_circulation_display, value_in_circulation_minor_units. Output schema: call describe_tool("verify_settlement_asset_backing").

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: as_of, backing_model, backing_ratio_bps, buffers, cost_per_crossing_minor_units, idle_cost_bps, movements, value_in_circulation_minor_units. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive and closed-world. The description adds substantive context beyond them: default server-side computation on Cloudflare Workers when compute="auto", browser delegation semantics, gpu:true always delegating, transient input handling with no storage/logging, and an exported AP2 artifact with execution_hash for provenance. These are real behavioral traits. It does not contradict 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated with repeated boilerplate: "OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node." appears twice, a long compute-mode paragraph duplicates what the schema already says, and there is a raw external URL plus an FV-status path and hash. It then dumps a 40+ field output list inline. The genuinely useful summary sentence is mid-document rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It does disclose the artifact/execution_hash export and input transience, which matters for a compliance compute node. But no output schema exists, so the inline field dump substitutes for one without explaining what the fields mean (e.g., movement_breaks_invariant, thinnest_buffer, backing_applicable). The offline-receipt/FV-status claim is unexplained and the tool's failure/refusal semantics are only hinted at via "Unknown keys are refused".

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 compute, parent_hashes, parent_tool_ids and policy_parameters' required key list. The description reinforces compute-mode behavior and mentions AP2 chaining via execution_hash, but adds little detail on policy_parameters' semantics (buffers, movements, backing_model) beyond the output field names echoing them. Baseline 3 when the schema does the heavy lifting.

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 description states a specific verb and resource: it checks whether value across an issuance topology stays fully backed in aggregate as balances move between caller-declared buffers. It distinguishes itself from per-account backing checks and from siblings like verify_proof_of_reserves_consistency by emphasizing aggregate/topology-level and movement-crossing semantics. It is buried in the opening boilerplate about ChainGraph compute nodes, but the Summary sentence is precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. The description says "checks whether value ... stays fully backed in aggregate, not merely per account", which implies a use case, but it never names an alternative sibling or the conditions that would select it. The compute-mode paragraph explains execution routing, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_slsa_provenanceSLSA Provenance VerifierB
Read-onlyIdempotent
Inspect

SLSA Provenance Verifier: OpenChainGraph compute node (compliance_mandate). 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-135-cyclonedx-sbom-validator. Output feeds: art-137-openvex-statement-validator. Open at: https://ainumbers.co/chaingraph/art-136-slsa-provenance-verifier.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: Verifies an in-toto SLSA provenance statement: validates _type (in-toto.io/Statement) and predicateType (slsa.dev/provenance), checks subject SHA-256 digest against caller-supplied artifact_digest_sha256, asserts builder.id present via runDetails.builder.id or predicate.builder.id, reports claime... Outputs: builder_id_present, pred_ok, provenance_valid, slsa_build_level, subject_digest_match, type_ok. Output schema: call describe_tool("verify_slsa_provenance").

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". Unknown keys are refused.

TDQS

B3.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), so the description earns credit for adding context: server-side vs. browser delegation semantics, gpu:true always delegating, transient non-retained input processing, and export of an AP2 artifact carrying execution_hash. Most of this is generic platform boilerplate rather than tool-specific behavior, which keeps it below 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Badly front-loaded: the opening sentences restate the title and add platform metadata before any statement of what is verified. A FV-status receipt URL, a raw spec hash, and a truncated "Summary:" ending in an ellipsis all consume space without informing tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It lists the return keys (builder_id_present, pred_ok, provenance_valid, slsa_build_level, subject_digest_match, type_ok) and points to describe_tool for the output schema, which is helpful given no output schema exists. However, the truncated summary leaves the verification outcome semantics (failure modes, whether invalid input is an error or a false result) undefined.

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%, so baseline is 3; the description only adds that artifact_digest_sha256 is caller-supplied and that statement/claimed_build_level feed the decision function, duplicating the schema's own wording for compute and policy_parameters. parent_hashes/parent_tool_ids ordering and chaining semantics are left entirely to the schema.

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 Summary states a specific verb and resource: verifies an in-toto SLSA provenance statement by validating _type/predicateType, matching the subject SHA-256 digest, and asserting builder.id. Chain references (consumes art-135 CycloneDX SBOM validator, feeds art-137 OpenVEX validator) help place it among siblings, though the purpose is buried behind compute-node boilerplate and the summary itself trails off mid-sentence ("reports claime...").

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?

There is an explicit input constraint ("Use synthetic or anonymised inputs only") and a description of compute-mode selection, but nothing says when to choose this verifier over nearby tools such as validate_openvex_statement, validate_cyclonedx_sbom, or verify_execution_hash. The upstream/downstream artifact references imply chain position but do not state exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_solana_dvp_termsSolana DvP Pre-Funding Terms VerifierB
Read-onlyIdempotent
Inspect

Solana DvP Pre-Funding Terms Verifier: OpenChainGraph compute node (settlement_mandate). 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-715-token2022-transfer-fee-reconciler. Open at: https://ainumbers.co/chaingraph/art-735-solana-dvp-prefund-verifier.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: Values-only recompute of the Solana Foundation DvP pre-funding checklist over a pasted SwapDvp record, mint descriptors and the funder-supplied agreed terms. Outputs: prefund_check, owner_matches, length_matches, terms_match, terms_mismatches, earliest_within_expiry, expiry_within_one_year, expiry_in_future, no_blocked_extensions, blocked_extensions_found, hook_extras_within_cap, failed_checks, trust_flags, warnings, record, error, detail, domain_errors, manual_review_required, disclaimer, audit_scope_note, expected_terms_note, error_direction. Output schema: call describe_tool("verify_solana_dvp_terms").

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: owner_program_id, byte_length, now, creation_timestamp, nonce, leg_a_extras_count, leg_b_extras_count, expected. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive/closed-world, and the description still adds real behavior: compute:auto vs browser delegation semantics, gpu:true always delegating, transient processing with no storage or logging, determinism, and an exported AP2 artifact carrying execution_hash plus an offline-verifiable FV-status snapshot. That is meaningful context beyond the annotations, though much of the surrounding link/snapshot prose is generic vendor boilerplate.

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?

The purpose sentence, which is the single most decision-relevant line, appears only after the compute-mode, privacy, provenance and FV-status boilerplate. The 20-plus item output enumeration is a raw dump with no grouping. The definition is heavily back-loaded and much of the text does not earn its place for an agent choosing a tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of listing all return fields (prefund_check, terms_mismatches, failed_checks, trust_flags, manual_review_required, etc.), which is genuinely helpful. However, it never explains how the pasted SwapDvp record, mint descriptors and agreed terms map onto policy_parameters, leaving a gap for a tool that requires eight specific keys.

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 the schema itself enumerates the required policy_parameters keys and the compute enum, so the description need not re-document them. It instead lists output fields, which is useful but not parameter semantics; baseline 3 applies when the schema does the heavy lifting.

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?

Buried in the middle, the description does state a specific verb and resource: a values-only recompute of the Solana Foundation DvP pre-funding checklist over a SwapDvp record, mint descriptors and agreed terms. That is far more specific than the title, though it is preceded by several sentences of compute-node boilerplate that do not distinguish it from any other compute node. Sibling differentiation is only implicit (via the upstream art-715 reconciler reference).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use / when-not guidance and no named alternative among the many validate_*/verify_* settlement siblings. The only usable routing hint is 'Consumes upstream artifacts from: art-715-token2022-transfer-fee-reconciler', which implies ordering but not selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_solana_paychan_voucherSolana Paychan Voucher VerifierA
Read-onlyIdempotent
Inspect

Solana Paychan Voucher Verifier: OpenChainGraph compute node (payment_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-749-solana-paychan-voucher-verifier.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: Values-only check of a Solana payment-channels voucher message against trusted channel terms. Outputs: all_pass, channel_id_hex, checks, cumulative_amount, expires_at, note, out_of_scope, pinned_constants, second_voucher, settle_delta, trusted_terms, voucher. Output schema: call describe_tool("verify_solana_paychan_voucher").

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: voucher_hex, channel_pda, deposit_ceiling, settled_watermark, current_time. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses meaningful behavior: server-side versus browser delegation, transient input handling, AP2 artifact export with execution_hash, and offline FV-status receipt semantics. These are useful operational traits, though much of the wording is generic platform boilerplate rather than voucher-specific 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?

The description is heavily bloated with branding, compute-binding boilerplate, a URL, FV-status text, and output field enumeration before the core purpose is stated. It is not front-loaded around what the tool does, and several sentences serve platform provenance rather than tool selection or invocation.

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?

For a complex verifier with no output schema, the description usefully lists output fields and explains compute delegation and provenance behavior. It remains somewhat incomplete in explaining the meaning of fields like all_pass, checks, pinned_constants, and out_of_scope, but the schema carries the input side and the overall behavior is sufficiently covered.

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 input schema already documents compute, parent hashes, parent tool IDs, and the policy_parameters fields in detail. The description adds context about trusted channel terms and lists output fields, but does not add parameter-level meaning beyond the schema.

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 description eventually states a specific verb and resource: a values-only check of a Solana payment-channels voucher message against trusted channel terms. It is clearly a verifier rather than a general compute tool, but the actual purpose is buried after branding, compute-mode boilerplate, and provenance text, and it does not differentiate itself from nearby voucher or verification siblings.

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 by the summary and by the privacy note to use synthetic or anonymised inputs. The compute-mode discussion explains execution routing, not when this verifier should be chosen over alternatives such as other voucher, mandate, or payment-receipt verification tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_summa_mst_inclusionSumma MST Inclusion CheckerC
Read-onlyIdempotent
Inspect

Summa MST Inclusion Checker: OpenChainGraph compute node (compliance_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-620-summa-mst-inclusion-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.

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". See the tool's manifest for field names.

TDQS

C2.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which already cover read-only, idempotent, non-destructive, closed-world), the description discloses that inputs are processed transiently and not stored or logged, that execution is server-side on Cloudflare Workers or delegated to a browser URL, and that an AP2 artifact with execution_hash is exported for provenance. The 'snapshot, not a subscription' note about the FV-status file is genuinely useful operational context. It loses a point for restating the compute-mode rules that the schema already carries verbatim.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The privacy and artifact-export statements earn their place, but the description is padded with a full restatement of the compute-mode rules, a marketing URL, and a long FV-status receipt hash with meta-commentary about offline verification. The most important information — what the tool verifies — is absent while secondary provenance boilerplate is given prominence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a compute tool with no output schema and a free-form policy_parameters object whose field names are not documented anywhere in the definition. The description never says what inputs the decision function requires or what result shape comes back (valid/invalid inclusion plus sums?), so an agent has no way to compose a correct call without fetching the external HTML page or manifest.

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 structured fields already explain compute, parent_hashes, parent_tool_ids, and policy_parameters. The description adds no parameter-level meaning and repeats the compute enum semantics word-for-word; for policy_parameters it explicitly defers to an external manifest ('See the tool's manifest for field names'), leaving the actual decision inputs unexplained. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence only restates the name ('Summa MST Inclusion Checker: OpenChainGraph compute node'), and the second ('Deterministic OpenChainGraph compute node') repeats it. Nothing explains what an MST inclusion actually verifies — a liability entry against a Merkle Sum Tree root, a sum consistency check, or something else — so an agent cannot distinguish this from siblings such as verify_proof_of_reserves_consistency, verify_merkle_batch, or aggregate_summa_mst_liabilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage constraint is 'Use synthetic or anonymised inputs only', which is about input hygiene, not tool selection. There is no statement of when to use this versus the many sibling merkle/inclusion/reserve verification tools, and no prerequisites about obtaining a tree root or liability leaf before calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_tempo_mpp_voucherTempo MPP Voucher & Receipt VerifierB
Read-onlyIdempotent
Inspect

Tempo MPP Voucher & Receipt Verifier: OpenChainGraph compute node (compliance_control). 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. Open at: https://ainumbers.co/chaingraph/art-594-tempo-mpp-voucher-receipt-verifier.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: Verifies a Tempo Machine Payments Protocol cumulative EIP-712 session voucher offline (ecrecover, no RPC or database lookup), validates a TIP-20 32-byte memo structurally, and validates/renders a merchant-side HTTP 402 Payment challenge plus a Payment-Receipt-shaped binding to an optional subject... Outputs: challenge, memo, reasons, receipt, scope_note, voucher. Output schema: call describe_tool("verify_tempo_mpp_voucher").

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: challengeAmount, challengeChainId, challengeChannelId, challengeCurrency, challengeEscrowContract, challengeExpires, challengeId, challengeIntent, challengeMethod, challengeMinVoucherDelta, challengeRealm, challengeRecipient, channelAuthorizedSigner, channelCloseRequestedAt, channelDeposit, channelId, channelPayer, channelSettled, cumulativeAmount, domainChainId, domainName, domainVerifyingContract, domainVersion, memoExpectedEncoding, memoExpectedReferenceHash, memoValue, minVoucherDelta, now, protocolVersion, r, s, signature, subjectExecutionHash, v, yParity. Unknown keys are refused.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish a safe, idempotent, closed-world read, so the description's job is to add operational context, which it does: deterministic execution, server-side vs. browser-delegation behavior keyed on compute and gpu, transient non-stored inputs, offline verification with no RPC or database lookup, and an exported AP2 artifact carrying execution_hash for provenance. What it omits is how the verdict is expressed (pass/fail vs. reasons list) and any failure-mode 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?

The sentence that actually says what the tool does ("Summary: Verifies a Tempo MPP...") is buried after compute-binding boilerplate, privacy language, a documentation URL, and a long fv-status hash path. Substantial text — the FV-status snapshot paragraph in particular — does not help an agent select or invoke the tool, and the key purpose is not front-loaded.

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?

There is no output schema, but the description compensates by enumerating the output fields and explaining the offline, no-RPC verification model, the compute-mode contract, and artifact export. Combined with annotations covering the safety profile, an agent has enough to call it correctly; the main residual gap is semantics of the 'reasons' and 'scope_note' outputs.

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 reported at 100%, so the schema carries the parameter burden and a baseline of 3 applies. The description does add the list of returned fields (challenge, memo, reasons, receipt, scope_note, voucher) and the offline-verification framing, but it adds no meaning about the individual policy_parameters (r, s, v, now, channelId, cumulativeAmount, etc.), which remain untyped empty objects in the schema.

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 summary names specific verbs and resources: verifies a Tempo MPP cumulative EIP-712 session voucher offline via ecrecover, validates a TIP-20 32-byte memo, and renders a merchant 402 challenge with a Payment-Receipt binding. That is a clear verb+resource statement. It does not, however, distinguish itself from close siblings such as decode_mpp_session, reconcile_mpp_subscription, validate_tip20_memo_commitment, or verify_x402_signer_recovery, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage instruction is a data-handling caveat ("Use synthetic or anonymised inputs only") plus the compute-mode mechanics. There is no guidance on when to reach for this tool versus the MPP/memo/x402 siblings, and no stated prerequisites or preconditions (e.g. that signature material must be supplied in policy_parameters).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_timestamp_attestationTimestamp Attestation VerifierA
Read-onlyIdempotent
Inspect

Timestamp Attestation Verifier: OpenChainGraph compute node (compliance_mandate). 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-121-document-integrity-anchor. Open at: https://ainumbers.co/chaingraph/art-122-timestamp-attestation-verifier.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: Recompute the document integrity anchor, confirm the document hash and timestamp claim match and the algorithm is consistent. Outputs: algo_match, hash_match, ts_consistent, verified. Output schema: call describe_tool("verify_timestamp_attestation").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/idempotent safety profile, but the description adds real behavioral detail beyond them: transient processing with no storage/logging, the requirement to use synthetic or anonymised inputs, the server-vs-browser delegation rule including that gpu:true always delegates, and the export of an AP2 artifact with execution_hash for chain provenance. What is missing is any statement about failure behavior or what happens when an upstream anchor is absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single paragraph mixes three unrelated concerns: identity/compute-node metadata, a URL and FV-status receipt pointer, and the actual verification purpose. The most decision-relevant sentence is last, so the description is poorly front-loaded and the FV-status URL sprawl does not help an agent choose the tool.

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?

With no output schema, the description does the right thing by enumerating the outputs (algo_match, hash_match, ts_consistent, verified) and by explaining the chaining and compute-binding behavior. It is close to complete for a zero-required-parameter verifier; what remains thin is the failure/negative-case semantics.

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 compute, parent_hashes, parent_tool_ids, and policy_parameters in detail. The description adds only the framing that policy_parameters drive the decision function and lists the four output fields; it does not add format or semantic detail for document_hash, presented_anchor, expected_algorithm, or presented_timestamp beyond what the schema carries.

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 description does state a specific verb+resource: 'Recompute the document integrity anchor, confirm the document hash and timestamp claim match and the algorithm is consistent.' That is precise enough to distinguish it from generic anchor tools. However, the purpose sentence is buried at the very end of a long boilerplate paragraph, and there is no explicit differentiation from close siblings such as verify_anchored_extract, verify_execution_hash, or anchor_document_integrity.

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?

It names the upstream dependency ('Consumes upstream artifacts from: art-121-document-integrity-anchor') and explains compute-mode selection, which is useful context for invocation. But there is no explicit when-to-use vs when-not statement and no guidance about choosing this verifier over the many other verify_*/anchor_* siblings that occupy the same namespace.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_trade_document_setTrade Document Provenance & Consistency VerifierA
Read-onlyIdempotent
Inspect

Trade Document Provenance & Consistency Verifier: OpenChainGraph compute node (cryptographic_mandate). 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-52-digital-trade-fit-diagnostic, art-54-digital-trade-rules-checker. Output feeds: cry-04-merkle-batch-verifier, art-10-amla-transaction-typology-risk-scorer, ml-03-timeseries-anomaly-detector. Open at: https://ainumbers.co/chaingraph/art-55-trade-document-provenance-verifier.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: Cross-validates a full trade-document set (eBL, commercial invoice, packing list, certificate of origin, insurance certificate) for internal consistency and computes a SHA-256 Merkle provenance root. Outputs: consistency_verdict, doc_count, invoicing_deviation_pct, merkle_root, mismatches, note, tbml_flags. Output schema: call describe_tool("verify_trade_document_set").

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". Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive, closed-world), so the description's job is to add context — and it does: transient processing with no storage/logging/retention, synthetic-input requirement, AP2 artifact export with execution_hash for chain provenance, and server-vs-browser execution semantics. That is genuine value beyond 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual purpose is deferred to a trailing "Summary:" after several paragraphs of compute-node boilerplate and a long FV-status hash URL that an agent cannot act on. The load-bearing content (what it validates, what it returns) is buried at the end rather than front-loaded. Several sentences repeat what the schema already states about compute modes.

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?

With no output schema, the description compensates by enumerating the return fields: consistency_verdict, doc_count, invoicing_deviation_pct, merkle_root, mismatches, note, tbml_flags. Combined with the input document types and the chain provenance story, an agent has enough to call it and interpret results, though the policy_parameters sub-keys remain opaque.

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 all four parameters (compute, parent_hashes, parent_tool_ids, policy_parameters) are already documented in the schema, including the compute enum. The description reinforces chaining via execution_hash and names the document types that effectively belong in policy_parameters.documents, but it never explains expected_route or reference_market_price. Baseline 3 is appropriate when the schema does the heavy lifting.

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 description states a specific verb+resource: it "Cross-validates a full trade-document set (eBL, commercial invoice, packing list, certificate of origin, insurance certificate) for internal consistency and computes a SHA-256 Merkle provenance root." That is far more precise than the title alone. It does not, however, distinguish itself from nearby siblings such as check_digital_trade_rules, examine_lc_document_presentation or match_invoice_three_way, so an agent must infer the boundary.

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?

Workflow placement is given via "Consumes upstream artifacts from..." and "Output feeds:...", which implies when in a chain to call it. But there is no explicit statement of when to prefer this over sibling verification tools, nor prerequisites beyond "use synthetic or anonymised inputs only." Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_trid_apr_accuracyTRID APR Accuracy VerifierA
Read-onlyIdempotent
Inspect

TRID APR Accuracy Verifier: OpenChainGraph compute node (compliance_mandate). 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-215-reg-z-appendix-j-apr. Open at: https://ainumbers.co/chaingraph/art-217-trid-apr-accuracy.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: TRID APR accuracy check per Reg Z §1026.22(a). Outputs: abs_difference_pct, actual_apr_pct, difference_pct, disclosed_apr_pct, headroom_pct, irregularity_reasons, is_irregular_transaction, note, regulatory_basis, tolerance_pct, verdict, within_tolerance. Output schema: call describe_tool("verify_trid_apr_accuracy").

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: has_demand_feature, irregular_payment_amounts, irregular_payment_periods. Unknown keys are refused.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds genuinely non-schematic behavior: compute-mode routing (auto/server/browser), the fact that gpu:true always delegates, transient non-retained processing with an instruction to use synthetic inputs, and AP2 export with execution_hash for provenance chaining. Annotations already cover the readOnly/idempotent safety profile, so this extra operational context earns credit.

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?

Front-loads well but is padded: 'OpenChainGraph compute node (compliance_mandate). Deterministic OpenChainGraph compute node.' says the same thing twice, the compute-mode paragraph restates the schema verbatim, and the FV-status URL plus landing-page link consume space without helping invocation.

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?

No output schema exists, but the description enumerates the returned fields (verdict, within_tolerance, tolerance_pct, irregularity_reasons, etc.) and states the upstream artifact it consumes, which is enough for correct invocation. Only the pairing semantics of parent_hashes/parent_tool_ids remain underspecified.

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 compute, parent_hashes, parent_tool_ids and the policy_parameters fields. The description adds nothing about what actual_apr_pct/disclosed_apr_pct mean or how parent_hashes pairs with parent_tool_ids, so 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: 'TRID APR accuracy check per Reg Z §1026.22(a)', and the outputs list confirms it computes an APR tolerance verdict. It stops short of distinguishing itself from near neighbors such as compute_trid_tolerance_cure or compute_reg_z_appendix_j_apr, which an agent could easily confuse with it.

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 by the regulatory citation; there is no explicit when-to-use, when-not, or named alternative. With several TRID/Reg Z APR siblings in the roster, the agent gets no routing signal for this tool versus those.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_webbotauth_signatureWeb Bot Auth Signature Verifier (RFC 9421)B
Read-onlyIdempotent
Inspect

Web Bot Auth Signature Verifier (RFC 9421): OpenChainGraph compute node (compliance_mandate). 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. Output feeds: art-130-signature-directory-validator. Open at: https://ainumbers.co/chaingraph/art-129-webbotauth-signature-verifier.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.

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". See the tool's manifest for field names.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/closed-world annotations, the description discloses genuinely useful behaviour: server-side execution on Cloudflare Workers for gpu:false kernels, browser delegation URL for compute:"browser", gpu:true always delegating, transient non-logged input handling, and an AP2 artifact export carrying execution_hash. What it omits is the outcome shape of a failed vs passing verification and whether any network/directory fetch occurs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening repeats the tool title verbatim, and the FV-status/URL tail is provenance boilerplate that consumes space without helping invocation. The middle sentences on compute mode and transient processing do earn their place, so the text is not fatuous, but it is neither tightly front-loaded nor free of redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does cover the exported artifact (AP2 with execution_hash) and the privacy posture, which is helpful. However, for a signature verifier the crucial detail — what signature, key, nonce or signed-components data belong in policy_parameters — is left entirely to an out-of-band manifest, so an agent still cannot construct a correct call from the definition alone.

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 baseline is 3. The description's compute-mode explanation mirrors the schema's own compute description rather than adding to it, and it is silent on the one parameter that matters most — policy_parameters, whose field names are deferred to an external manifest by both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title supplies the specific verb+resource (verify a Web Bot Auth signature under RFC 9421), but the description body mostly restates the title and describes OpenChainGraph compute plumbing rather than what verification actually entails. It names downstream/upstream artifacts, yet does not distinguish this tool from near-neighbours such as check_webbotauth_nonce_replay or validate_signature_directory.

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 context is implied only: it names the compute-mode choices (auto/server/browser) and the 'Use synthetic or anonymised inputs only' constraint, plus the downstream consumer art-130. There is no explicit statement of when to choose this verifier versus the sibling nonce-replay or signature-directory tools, and no preconditions for what must be supplied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_witness_cosignaturesWitness Cosignature VerifierB
Read-onlyIdempotent
Inspect

Witness Cosignature Verifier: OpenChainGraph compute node (cryptographic_mandate). 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. Open at: https://ainumbers.co/chaingraph/art-424-witness-cosignature-verifier.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: Verifies a C2SP tlog-checkpoint + witness-cosignature note (SPEC.md §20.2) offline: confirms the note's origin and root match a §20/§20.1 batch anchor's declared anchored_hash, then checks each pinned witness's cosignature against a k-of-n threshold. Outputs: __async, anchored_hash, checks, log_origin, mode, not_proven, parsed, threshold, witness_keys. Output schema: call describe_tool("verify_witness_cosignatures").

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: anchored_hash, checkpoint_note, consistency_proof, log_origin, mode, new_checkpoint_note, old_checkpoint_note, threshold, witness_keys. Unknown keys are refused.

TDQS

B3.2/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), but the description adds genuinely useful behavior beyond them: compute:'auto' runs server-side while 'browser' returns a delegation URL instead of a result, inputs are transient and not retained, and an AP2 artifact with execution_hash is exported for provenance. This is real operational context an agent could not infer 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is not front-loaded: the actual purpose appears only after several sentences of generic per-tool boilerplate (compute node, Cloudflare Workers, privacy, FV-status link). Much of that content is not specific to this tool and dilutes the signal, even if some is intended as shared disclosure.

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?

Given no output schema, the description usefully enumerates the return fields (anchored_hash, checks, threshold, witness_keys, parsed, etc.) and explains compute delegation and offline verification. For a cryptographic verifier this is nearly complete, though it omits any note on failure semantics or the not_proven field's meaning.

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 every parameter, setting the baseline at 3. The description adds only marginal functional meaning by implying threshold= k-of-n and pinned witness_keys semantics, but does not clarify the individual policy_parameters keys beyond what the schema lists.

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 description does state a specific verb and resource — verifies a C2SP tlog-checkpoint + witness-cosignature note against a §20/§20.1 anchor and a k-of-n witness threshold — which is precise and distinguishable in substance. However, the purpose is buried behind several sentences of generic compute-node boilerplate, so an agent scanning the opening gets little signal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus related siblings like verify_anchored_extract, verify_execution_hash, or verify_webbotauth_signature. The only usage constraint ('use synthetic or anonymised inputs only') is about input hygiene, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_x402_signer_recoveryx402 Signer Recovery VerifierA
Read-onlyIdempotent
Inspect

x402 Signer Recovery Verifier: OpenChainGraph compute node (compliance_control). 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-590-x402-eip712-digest-recomputer, art-699-x402-permit2-evidence-recomputer. Open at: https://ainumbers.co/chaingraph/art-591-x402-signer-recovery-verifier.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: Recovers the ECDSA signer address from a caller-supplied EIP-712 digest and signature in (r,s,v) or (r,s,yParity) form. Outputs: verdict, reasons, digest, recovered_signer, claimed_from, recovered_signer_matches_claimed_from, recovery_id, recovery_id_source, scope_note. Output schema: call describe_tool("verify_x402_signer_recovery").

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". Unknown keys are refused.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real behavior: compute:'auto' vs 'browser' delegation semantics, transient non-retained processing, and AP2 artifact export with execution_hash. It does not contradict the annotations. It loses the top mark because much of this is generic platform boilerplate repeated across nodes rather than tool-specific 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?

The actual purpose is preceded by a long block of compute-binding, privacy, AP2-export, FV-status-URL and artifact-reference boilerplate. The valuable content is back-loaded and the FV-status hash URL adds little for tool selection. Significant trimming would improve usability.

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?

There is no output schema, and the description usefully enumerates the return fields (verdict, reasons, digest, recovered_signer, claimed_from, recovered_signer_matches_claimed_from, recovery_id, recovery_id_source, scope_note). Combined with the compute-mode and chaining explanation, an agent has enough to invoke it correctly; only explicit sibling routing 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?

Schema coverage is 100%, but the nested policy_parameters subproperties (r, s, v, digest, yParity, signature, claimedFrom, chainId) have no per-field descriptions in the schema. The description compensates by stating the two accepted signature encodings, (r,s,v) and (r,s,yParity), which is genuine added meaning.

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 core sentence is specific: 'Recovers the ECDSA signer address from a caller-supplied EIP-712 digest and signature in (r,s,v) or (r,s,yParity) form.' That is a clear verb+resource. It is, however, buried after several paragraphs of compute-node boilerplate, and it never names a sibling (e.g. recompute_x402_eip712_digest) to differentiate itself explicitly, so it falls short of a 5.

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 description names the two upstream artifacts it consumes (art-590 eip712-digest-recomputer, art-699 permit2-evidence-recomputer) and warns to use synthetic/anonymised inputs, which implies a verification step in a digest-recompute chain. But it never states when to choose this over the many sibling x402 verifiers/recomputers, nor any exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workbook_csv_parseParse strict RFC 4180 CSV into workbook cellsA
Read-onlyIdempotent
Inspect

Parses CSV text with the SAME strict RFC 4180 parser as the tools/554 browser workbook -- quoted fields, embedded quotes/commas/newlines, CRLF -- and REJECTS malformed input rather than repairing it (deterministic beats forgiving for hash-stable digests). Numeric-looking and TRUE/FALSE cells are type-coerced; everything else stays a string. Returns the resulting A1-style cells (raw + evaluated value) plus the sheet's row/column extent, ready for workbook_evaluate or workbook_range_digest -- unless as_artifact is true, in which case it returns a full OCG v0.4 artifact instead (see as_artifact).

NameRequiredDescriptionDefault
csvYesCSV text to parse.
provenanceNoOptional provenance metadata, only used when as_artifact is true. Never affects execution_hash.
as_artifactNoWhen true, returns a full OpenChainGraph v0.4 artifact (policy_parameters/output_payload/execution_hash/provenance) via the same exportArtifact() path as the tools/554 browser workbook's "Export as OCG Artifact" button, instead of this tool's normal bare payload. Default false.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantive behavior beyond that: strict rejection of malformed input instead of repair, the deterministic-vs-forgiving rationale, the specific type-coercion rules, and the dual return shape (bare cells vs OCG artifact). This is exactly the extra context annotations cannot carry.

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?

Front-loads the verb and the strictness contract, then adds coercion and return details. Every sentence carries information, though the parenthetical rationale and the trailing artifact clause make it denser than strictly necessary.

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?

With no output schema, the description fully covers what is returned (A1-style cells with raw + evaluated values, row/column extent) and the alternate artifact return path. For a 3-parameter parse tool this leaves nothing an agent needs 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 coverage is 100%, so all three parameters (csv, provenance, as_artifact) are already documented, and the description largely restates as_artifact behavior already present in the schema. It adds little syntax or format detail about the csv input beyond the RFC framing, 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 (parses) and resource (CSV text into workbook cells) with the exact parsing contract (strict RFC 4180). It explicitly names the sibling tools it feeds (workbook_evaluate, workbook_range_digest) and contrasts its non-repairing behavior, so an agent can distinguish it without opening any 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?

Establishes when the output is appropriate by naming the downstream tools it is 'ready for' and clarifies the as_artifact branch as an alternative return mode. There is no explicit exclusion of other parse/convert tools (e.g., convert_tabular_data), so routing between parsers is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workbook_evaluateEvaluate workbook cells (formulas + literals) and return computed valuesA
Read-onlyIdempotent
Inspect

Feeds a set of A1-style cells (formulas and/or literals) through the SAME headless evaluator the tools/554 browser workbook uses -- topo-sorted dependency graph, ~20 functions (SUM AVG MIN MAX COUNT COUNTIF IF AND OR NOT ROUND ABS CONCAT LEN LEFT RIGHT TRIM UPPER LOWER SUMIF), cycles resolve to "#CYCLE!" and any non-finite result to "#NUM!" rather than propagating. Returns the computed value of every supplied cell -- pure, no digest, no receipt -- unless as_artifact is true, in which case it returns a full OCG v0.4 artifact instead (see as_artifact).

NameRequiredDescriptionDefault
cellsYesMap of A1-style cell ref (e.g. "B2") to raw value -- a formula string starts with "=" (e.g. "=SUM(A1:A3)"), anything else is a literal.
provenanceNoOptional provenance metadata, only used when as_artifact is true. Never affects execution_hash.
as_artifactNoWhen true, returns a full OpenChainGraph v0.4 artifact (policy_parameters/output_payload/execution_hash/provenance) via the same exportArtifact() path as the tools/554 browser workbook's "Export as OCG Artifact" button, instead of this tool's normal bare payload. Default false.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds real behavior beyond them: deterministic topo-sorted evaluation, cycle results becoming '#CYCLE!', non-finite results becoming '#NUM!', and 'pure, no digest, no receipt'. It also discloses the divergent artifact-mode output path, which annotations cannot express.

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?

The output contract is front-loaded and the second sentence covers both normal and artifact modes. The parenthetical A1-function enumeration is dense and partially expendable, keeping it from a 5.

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?

With no output schema, the description correctly explains the return value ('the computed value of every supplied cell') and defers artifact structure to the as_artifact parameter. Error-token behavior is also covered, leaving little an agent would need to guess.

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 meaning beyond the schema by stating that literals and formulas coexist in the same cells map and that as_artifact returns a full OCG v0.4 artifact via exportArtifact(). It does not elaborate on provenance fields, which the schema already documents.

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 description gives a concrete verb+resource ('Feeds a set of A1-style cells ... through a headless evaluator ... Returns the computed value') and is unambiguous against siblings like workbook_range_digest or workbook_roundtrip_verify. It stops short of naming a sibling explicitly, so the differentiation is inferred from the resource rather than stated.

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 usage context is implied by 'feeds a set of A1-style cells' and the as_artifact switch is explained, but there is no explicit statement of when to pick this over workbook_roundtrip_verify or workbook_range_digest, nor any exclusion. The '~20 functions' list hints at scope limits but is not framed as a when-to-use rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workbook_range_digestDigest a workbook range into a Spreadsheet Input Manifest range fragmentA
Read-onlyIdempotent
Inspect

Spreadsheet-range digest only; NOT the general artifact emitter (use emit_chaingraph_artifact to wrap arbitrary computation output — this tool's as_artifact mode covers whole-sheet workbook runs only). Evaluates the supplied cells (same evaluator as workbook_evaluate) and computes a canonical values_digest over one A1-style range (e.g. "B2:D9") -- the exact executionHash(values, {}) path the rest of OCG uses, per chaingraph/workbook/INPUT-MANIFEST.md (WB-2). Returns one ranges[] fragment of the Spreadsheet Input Manifest schema; assemble the full manifest (source.csv_digest, produced_by/produced_at) around it. Same range digested from the same cells in the tools/554 browser workbook always produces the same values_digest -- unless as_artifact is true, in which case it returns a full OCG v0.4 artifact over the WHOLE sheet instead of a single-range fragment (see as_artifact).

NameRequiredDescriptionDefault
cellsYesMap of A1-style cell ref (e.g. "B2") to raw value -- a formula string starts with "=" (e.g. "=SUM(A1:A3)"), anything else is a literal.
rangeYesA1-style cell or range reference to digest, e.g. "B2" or "B2:D9".
semanticsNoFree-text pointer describing what this range means to the consuming policy_parameters.
provenanceNoOptional provenance metadata, only used when as_artifact is true. Never affects execution_hash.
as_artifactNoWhen true, returns a full OpenChainGraph v0.4 artifact (policy_parameters/output_payload/execution_hash/provenance) via the same exportArtifact() path as the tools/554 browser workbook's "Export as OCG Artifact" button, instead of this tool's normal bare payload. Default false.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), but the description adds substantive behavior: a determinism guarantee ("same range digested from the same cells ... always produces the same values_digest"), the exact hashing path executionHash(values, {}) per WB-2, and the fact that provenance is never hashed. Its most valuable disclosure is the dual-mode return shape — a bare ranges[] fragment by default versus a whole-sheet OCG v0.4 artifact when as_artifact is true — which an agent could not predict 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the useful discriminator ("Spreadsheet-range digest only"), but the body is one dense run-on paragraph of nested parentheticals and em-dashes. The as_artifact caveat is stated twice (in the opening parenthetical and again in the final sentence), which is wasted length in an otherwise overloaded sentence.

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?

For a 5-parameter tool with a nested provenance object and no output schema, the description does the necessary work: it says the return value is one ranges[] manifest fragment (or a full artifact listing policy_parameters/output_payload/execution_hash/provenance under as_artifact), and warns that the rest of the manifest must be assembled around it. Only minor gaps remain, such as behavior when cells fall outside the requested range.

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 cells, range, semantics, provenance and as_artifact are already documented in the schema, including the as_artifact whole-sheet caveat. The description mostly restates that (range format, as_artifact behavior, provenance not affecting the hash) rather than adding new parameter-level meaning, 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+resource ("computes a canonical values_digest over one A1-style range") and immediately fences the scope against a named sibling: "NOT the general artifact emitter (use emit_chaingraph_artifact...)". It also anchors itself to workbook_evaluate's evaluator and to the Spreadsheet Input Manifest schema, so an agent can place it precisely among the workbook_* tools.

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?

Explicitly names the alternative for the general case (emit_chaingraph_artifact) and the condition under which this tool is the wrong choice, plus tells the agent what to do afterwards: "assemble the full manifest (source.csv_digest, produced_by/produced_at) around it". What is missing is a contrast with workbook_evaluate/workbook_roundtrip_verify — the description only says it shares an evaluator, not when to prefer one over the other.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workbook_roundtrip_verifyVerify a pasted-back Excel round-trip against a Spreadsheet Input ManifestA
Read-onlyIdempotent
Inspect

Compares a WB-2 Spreadsheet Input Manifest (expected digests) against pasted-back CSV/TSV text per manifest range (observed, e.g. after a recompute in Excel) and returns an XLR-1 round-trip receipt -- result: "match"|"mismatch" plus a mismatches[] cell list when expected_by_ref text is also supplied. SAME comparator module as the tools/ round-trip page (XLR-2/XLR-3) -- byte-identical receipt for the same inputs. Paste-intake is untrusted: finite-gate (#NUM! for NaN/Infinity) and CSV-injection sanitization apply identically to WB-1's CSV import. Verify-only -- never operates Excel, never ingests .xlsx.

NameRequiredDescriptionDefault
manifestYesWB-2 Spreadsheet Input Manifest object (input-manifest.schema.json) -- the expected side.
produced_atYesISO-8601 timestamp -- required, no default (pure: no wall-clock read).
produced_byYesIdentity slot for who/what produced this receipt -- required, no default (pure: no identity read).
expected_by_refNoOPTIONAL map of manifest range ref -> the actual expected CSV/TSV text (e.g. the pq-export the manifest was built from). Supplying it resolves a digest mismatch to per-cell mismatches[] entries instead of a single range-level entry.
observed_by_refYesMap of manifest range ref -> pasted-back CSV/TSV text for that range (e.g. { "B2:C3": "10,widget\r\n20,gadget\r\n" }). One entry required per manifest.ranges[].ref.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses determinism (byte-identical receipt for identical inputs, same comparator module as XLR-2/XLR-3), untrusted-input handling (finite-gate #NUM! for NaN/Infinity, CSV-injection sanitization mirroring WB-1 import), and the hard scope limit of never touching Excel or .xlsx. That is exactly the kind of context annotations cannot carry.

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?

Front-loaded with the verb/resource and the return shape, then tapers into scope and safety clauses; almost no wasted words. It is dense with internal jargon (WB-2, XLR-1/2/3) that costs a little readability but each clause carries 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?

For a 5-parameter verifier with no output schema, it covers inputs' roles, the return shape (result plus conditional mismatches[]), determinism guarantees, and untrusted-input behavior. An agent has everything needed to invoke and interpret it 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; the description still adds value by explaining the semantic relationship between the two range maps (expected digests vs. observed pasted text) and that supplying expected_by_ref downgrades a range-level digest mismatch into per-cell mismatches[] entries.

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?

Names a specific verb (compares), both resources (WB-2 manifest expected side vs. pasted-back CSV/TSV observed side) and the artifact produced (XLR-1 round-trip receipt with result/mismatches). This clearly separates it from the neighboring workbook_* tools (parse/evaluate/digest) that share the domain vocabulary.

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 triggering context ("observed, e.g. after a recompute in Excel") and an explicit exclusion ("Verify-only -- never operates Excel, never ingests .xlsx"), and explains when to add expected_by_ref for cell-level mismatches. It never names an alternative sibling tool, so the routing is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workforce_board_roi_reportWorkforce Board ROI ReportB
Read-onlyIdempotent
Inspect

Workforce Board ROI Report: OpenChainGraph compute node (workforce_program_roi). 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. Open at: https://ainumbers.co/chaingraph/art-712-workforce-board-roi.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: Port of ApexLogics Apex #15 (AL-07) Workforce Board ROI Report Generator into the AINumbers chaingraph shape. Output schema: call describe_tool("workforce_board_roi_report").

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: program_type, sector, total_budget, participants_enrolled. Unknown keys are refused.

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behavioral facts: determinism, transient/no-retention data handling, server-vs-browser delegation semantics (`auto`/`server`/`browser`, gpu:true always delegates), and emission of an AP2 artifact carrying `execution_hash`. Nothing contradicts the annotations; the verbosity of the provenance/FV-status material dilutes rather than undermines it.

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?

The text is dominated by boilerplate provenance (FV-status URL, a 64-char hash, "snapshot, not a subscription" disclaimers) that an agent cannot act on, while the actual purpose gets one trailing "Summary:" line. It is front-loaded with a restatement of the title rather than 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?

For a tool with no output schema but four inputs including a 14-field nested policy object, the description does not document the return shape — it deflects to `describe_tool`. It does, however, cover the execution model, determinism, data handling, and artifact provenance, which are the non-obvious behaviors an agent needs; parameter meaning is left to a fully-described schema.

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 `compute`, `parent_hashes`, `parent_tool_ids`, and the required policy parameters. The description's compute-mode text merely restates the schema's own enum explanation and adds no extra meaning about chaining semantics or how the 14 nested policy inputs affect the ROI computation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource ("Workforce Board ROI Report") and states it is an OpenChainGraph compute node for `workforce_program_roi`, and mentions it is a port of ApexLogics Apex #15. But it never says what the tool actually computes — the ROI/outcome metrics derived from WIOA program data (budget, participants, earnings, credential rates) remain implicit, and no sibling is named or contrasted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives such as the other ROI/compute siblings, nor prerequisites or expected call context. The only usage constraint is the privacy note ("Use synthetic or anonymised inputs only"), which is helpful but is an input rule, not a when-to-use guide.

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
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 408 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 409 — enumerate with find_chain). Mutually exclusive with steps."
  2. 1 tool update
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 402 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 408 — enumerate with find_chain). Mutually exclusive with steps."
  3. 2 tool updates
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 401 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 402 — enumerate with find_chain). Mutually exclusive with steps."
    • Addedverify_solana_dvp_terms
  4. 2 tool updates
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 400 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 401 — enumerate with find_chain). Mutually exclusive with steps."
    • Addedverify_solana_paychan_voucher
  5. 1 tool update
    • Addedcompute_paypal_response
  6. 1 tool update
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 399 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 400 — enumerate with find_chain). Mutually exclusive with steps."
  7. 2 tool updates
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 396 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 399 — enumerate with find_chain). Mutually exclusive with steps."
    • Addedcompute_automation_payback
  8. 1 tool update
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 394 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 396 — enumerate with find_chain). Mutually exclusive with steps."
  9. 2 tool updates
    • Addedanalyze_espp_disposition
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 393 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 394 — enumerate with find_chain). Mutually exclusive with steps."
  10. 1 tool update
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 392 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 393 — enumerate with find_chain). Mutually exclusive with steps."
  11. 1 tool update
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 391 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 392 — enumerate with find_chain). Mutually exclusive with steps."
  12. 1 tool update
    • Addedcalc_equity_exit_waterfall
  13. 1 tool update
    • Addedestimate_iso_amt_exposure
  14. 1 tool update
    • Changedworkforce_board_roi_report1 field changed
      • addedInput schema / properties / policy_parameters / properties / wioa_targets
        Added value: +{
        +  "type": "object"
        +}
  15. 1 tool update
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 390 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 391 — enumerate with find_chain). Mutually exclusive with steps."
  16. 1 tool update
    • Addedderive_beacon_fair_sample_v2
  17. 746 tool updates
    • Changedacdc_said_check1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedadjudicate_emir_reconciliation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedage_emir_reconciliation_breaks1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedagentic_mandate_sandbox1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaggregate_cbam_precursor_emissions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaggregate_execution_receipts1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaggregate_ownership_50pct1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaggregate_reputation_score1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaggregate_solvency2_scr_modules1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaggregate_summa_mst_liabilities1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaggregate_taxonomy_kpi_gar1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedai_displacement_risk_screener2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / policy_parameters / properties / soc_code / type
        Previous value: -"string|null"New value: +[
        +  "string",
        +  "null"
        +]
    • Changedallocate_ihb_interest1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedamortize_asc606_commissions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedanalyze_dc_vs_lc_cost_benefit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedanalyze_prediction_market1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedanchor_document_integrity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedanchor_stamp1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedap2_aml_mandate_builder1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedapply_climate_scenario1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassemble_ai_addendum1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassemble_aiuc1_evidence_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassemble_license_terms1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassemble_mutual_nda1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassemble_ocg_evidence_bundle1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_agent_directory_publish_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_ai_act_conformity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_circumvention_diligence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_cra_vuln_reporting_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_defi_lending1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_exam_readiness_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_iso42001_aims_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_mar_crypto_surveillance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_mica_casp_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_model_validation_status1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_naic_ais_program_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_psd3_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_restaking_risk1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_suspect_product_status1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_traiga_exposure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_vida_drr_reporting_obligation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedassess_vida_recapitulative_migration1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedattest_bulk_disbursement_integrity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedattest_calc_agent_independence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedattest_daily_reconciliation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedattest_margin_call_lifecycle1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaudit_acp_ucp_product_feed1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaudit_agent_key_rotation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaudit_borrower_escrow_stmt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaudit_mcp_oauth1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedaudit_mcp_tool_scope_revocation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedauthorize_payment_against_mandate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbaas_provider_comparator1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbenchmark_tp_interquartile_range1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbind_agreement_acceptance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbind_attested_subject1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_226j_response_evidence_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_adverse_action_notice1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_agent_incident_record1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_agent_test_evidence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_agent_traffic_policy1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_ai_conformity_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_ai_decision_log_record1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_ai_training_data_lineage_record1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_ai_workpaper_record1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_allocation_decision_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_amortization_schedule1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_ap2_cartmandate_hashchain1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_art5_diligence_evidence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_bond_ladder1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_cbcr_report1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_chaingraph1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_claim_dispute_bundle1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_conditional_relief_collateral_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_conversion_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_digest_manifest1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_disclosure_manifest1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_dora_roi_register1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_dual_control_certification1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_einvoice_transmission_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_etr_possession_chain1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_evidence_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_fria_monitoring_plan1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_google_ap2_mandate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_idv_session_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_idv_verification_incident_record1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_mastercard_agentic_token1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_model_inventory_entry1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_no_russia_clause_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_pld_disclosure_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_product_lineage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_public_money_settlement_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_rights_record1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_safeguarding_audit_evidence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_sanctions_screening_evidence_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_session_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_tdm_reservation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_traiga_safe_harbor_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_validator_change_control_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_vop_session_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbuild_yield_curve_gspread1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_basis_risk_nii_shock1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_cbam_embedded_emissions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_cecl_ecl_allowance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_claims_stp_economics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_csdr_penalty1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_erc2981_royalty1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_irrbb_eve_shocks1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_mica_own_funds1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_naic_clo_rbc_factor1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_nis2_penalty_exposure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_repo_haircut1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_solvency2_scr_ratio1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcalculate_xva1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcall_tool1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcamt053_parse1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcertify_license_election1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_agency_eligibility_matrix1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_agent_attestation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_agent_token_scope1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_ai_act_art50_marking1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_allocation_affirmation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_assessor_independence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_camera_provenance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_capital_adequacy_private1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_card_act_ability_to_pay1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_cash_leg_finality1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_client_porting1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_conforming_loan_limit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_cra_annex1_completeness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_credit_concentration_topn_sector1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_cscf_control_applicability1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_debt_validation_notice1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_digital_trade_rules1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_dpa_gdpr_art281 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_emir_uti_completeness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_etr_control_evidence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_eudi_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_fatca_crs_submission_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_fido_pqc_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_force_placed_notice1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_g20_corridor_cost_gap1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_genius_reserve_disclosure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_genius_reserve_disclosure_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_gpai_code_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_icm_quorum_forgery_risk1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_ifrs17_risk_adjustment1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_iolta_three_way_reconciliation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_irrbb_csrbb_scope1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_iso20022_pqc_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_jwks_pinned_directory1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_lei_relationship_consistency1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_license_compatibility1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_linea_l2_finality_window1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_mcp_registry_entry1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_mica_register_presence2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / policy_parameters / properties / match_column / type
        Previous value: -"string|number|null"New value: +[
        +  "string",
        +  "number",
        +  "null"
        +]
    • Changedcheck_mica_reserve_disclosure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_mt101_coexistence_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_muni_arbitrage_spending_exception1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_nis2_art21_measures1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_nis2_governance_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_nway_balance_closure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_official_statement_completeness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_operator_exit_portability1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_private_student_loan_disclosures1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_producer_license_reciprocity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_purpose_code_requirement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_qm_points_and_fees1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_reg_e_remittance_disclosure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_retail_installment_disclosures1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_safeguarding_reconciliation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_sb53_frontier_scope1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_screening_list_coverage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_securitization_risk_retention1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_sod_matrix1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_ssi_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_tokenized_collateral_eligibility1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_tsv_stoppage_concurrency1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_tsv_tier_cap_ladder1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_v4_hook_fee_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_webbotauth_nonce_replay1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_x402_domain_nonce_window1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedchecklist_step_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedchecklist_validate_definition1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedchecklist_verify_run1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedchoose_cc_license1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_agentic_ai_risk1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_ai_system_governance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_annex3_decisioning_obligations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_avax_permissioning_controls1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_blockchain_quantum_risk1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_bold_challenge_finality1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_carf_reportable1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_codm_expense_significance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_digital_asset_regulatory1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_dora_ict_incident_and_clock_deadlines1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_dora_incident1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_eccn_dual_use1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_emir3_active_account_status1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_emir3_simm_approval_scope1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_erc1967_proxy_slot1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_eudr_commodity_scope1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_ifrs17_measurement_model1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_ledger_consensus_finality1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_mla_charge_inclusion1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_nis2_entity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_qm_apr_apor_spread1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_rate_rec_5pct_threshold1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_redline_round_changes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_reward_flow_related_party1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_safeguarding_method1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_sco60_exposure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_sco60_exposure_v21 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_settlement_asset_finality1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_settlement_finality1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_t1_posttrade_timing1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedclassify_vida_platform_deemed_supplier1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_agentic_payment_protocols1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_agentic_rail_protocols1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_basel_2023_vs_20261 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_corridor_cost1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_cross_ccp_pqd_fields1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_model_outcome_analysis1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_pension_lump_sum_annuity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_receivables_finance_economics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_rights_matrix1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompile_model_risk_lineage_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompile_nav_error_evidence_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompile_rebalance_evidence_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompile_work_mandate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompose_ap2_prompt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompose_control_test_evidence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompose_eval_attestation_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompose_globe_gir1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompose_workpaper_bundle1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_15c3_3_reserve1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_aca_affordability_safe_harbor1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_algo_execution_schedule_simulator1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_annuity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_apy_earned_recompute1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_asset_liability_coverage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_authzen_conformance_fixture1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_basel_haircut_adjusted_exposure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_basel31_delta1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_best_execution_evidence_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_bond_duration1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_breakeven1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_canton_app_reward_estimate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_canton_traffic_cost1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_cdd_ownership_25pct1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_cfpb_1071_coverage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_consolidation_cta1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_consultation_response_tracker1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_control_attestation_campaign_roll_up1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_convexity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_counterparty_limit_check1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_cross_border_fees1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_custody_segregation_ratio1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_cyber_incident_notification_clock1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_derivatives_margin_workbench1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_deterministic_amortization_schedule1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_direct_indexing_fit_screen1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_discount_window_capacity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_disparity_metrics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_dora_roi_gleif_preflight_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_dscr1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_dti_ratios1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_dv011 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_eba_im_model_validation_tracker1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_education_funding_gap_calculator1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_escrow_analysis1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_esrp_exposure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_experience_mod1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_fdic_assessment_rate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_federal_withholding1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_fha_mip_eligibility1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_flsa_regular_rate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_forecast_accuracy_score1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_fr2052a_inflow_outflow_classification1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_fund_expense_ratios1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_fx_funding_sequencer1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_fx_netting_positions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_gl_tieout_recompute1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_globe_jurisdictional_etr1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_globe_sbie_topup1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_globe_topup_tax1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_gross_to_net1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_hmda_rate_spread1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_identity_proofing_assurance_level1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_index_weights1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_intercompany_elimination_netting1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_interest_accrual_recompute1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_intraday_liquidity_monitoring1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_ipfs_cid1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_irr1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_isa530_audit_sampling_mus1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_large_exposures_limit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_lcm_rate_derivation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_lcr_nsfr_leverage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_lending_recall_prioritizer1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_llpa_stack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_loan_servicing_waterfall_recompute1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_ltc_funding_comparator1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_ltv_ratios1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_m3p_monthly_cap1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_mla_mapr1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_mlr_rebate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_multilateral_netting1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_note_h_margin_debit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_npv1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_odnsf_fee_recompute1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_oprisk_sma_20261 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_options_greeks1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_orsa_readiness_pack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_pack_dependency_map1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_parametric_trigger_payout1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_perp_funding1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_perp_funding_implied_yield1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_perp_margin1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_por_liabilities_composite1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_portfolio_var1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_pqc_deadline_ladder1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_proxy_voting_record1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_pt_yt_yield1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_pta_verifier1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_raroc_loan_price1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_rbc_action_level1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_rbc_action_level_private1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_recordkeeping_completeness_mapper1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_reg_z_appendix_j_apr1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_regulatory_obligations_register1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_remittance_disclosure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_rule_605_publication_composer1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_rwa_erba_20261 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_rwa_scenarios1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_scra_rate_cap1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_settlement_efficiency_kpi1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_short_sale_locate_ssr_checker1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_stock_token_collateral_haircut1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_stress_test_scenarios1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_tempo_mainnet_fee_capacity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_trid_tolerance_cure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_va_funding_fee_residual1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_var_backtest_traffic_light1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_verify_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_wash_sale_window_guard1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_whistleblowing_channel_clock1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompute_xirr1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedconvert_markdown_document1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedconvert_tabular_data1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedconvert_tempo_fee_amm1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcorrelate_ap2_cartmandate_x4021 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcrosswalk_agent_payment_rail_trust1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcurrency_basket_index1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcustomer_risk_rating1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddecode_c2pa_aiml_assertions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddecode_eip7702_authorization_tuple1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddecode_mpp_session1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddecode_x402_payment1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedderive_beacon_fair_sample1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedderive_parametric_index_from_receipts1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddescribe_tool1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddetect_timeseries_anomalies1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddetect_transaction_anomalies1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddetermine_deposit_insurance_coverage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddiagnose_canton_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddigest_gleif_snapshot1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddispose_carf_status_message1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddraft_ap2_mandate_credential1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedemit_chaingraph_artifact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedestimate_ai_token_spend1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedestimate_cross_margin_benefit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedestimate_cross_venue_margin_capital1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedestimate_ficc_margin_netting1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedestimate_hdhp_ppo_breakeven1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedevaluate_decision_tree1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedevaluate_globe_de_minimis_exclusion1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedevaluate_globe_safe_harbour_tests1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedevaluate_irrbb_sot_eve1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedevaluate_irrbb_sot_nii1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedexamine_lc_document_presentation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedexplain_regrpt_variance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedexport_artifact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_chain1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_prediction_arbitrage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_runway_goal_path1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_tool1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_attribution_string1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_iscc_code1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_zk_compliance_proof1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedha_bundle_export1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedha_gate_status1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedha_record_validate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinspect_visa_tap_signature1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinspect_visa_trusted_agent_protocol1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedintoto_record_chain_run1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlei_kyb_check1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlink_eudr_supply_chain_traceability1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlink_traceability_lot_code1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_ab2013_training_data_disclosure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_aiuc1_control_evidence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_arc_xreserve_config1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_authorization_payload2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / policy_parameters / properties / signature / type
        Previous value: -"string|object"New value: +[
        +  "string",
        +  "object"
        +]
    • Changedlint_besu_settlement_contract1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_cbom_structure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_cbpr_structured_address1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_compelling_evidence_ce30_agentic1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_crypto_asset_whitepaper1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_fedwire_structured_address1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_insurance_evidence_freshness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_lei_payment_binding1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_mcp_server_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_mcp_tool_definition1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_metro2_record1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_mismo_uldd_ulad1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_securities_settlement_message1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_settlement_orchestrator_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_stock_token_valuation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_trace_cat_reports1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_ucp_checkout_payload1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_x12_claim_records1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlint_x402_v2_migration1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_ainumbers_tools1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlookup_mletr_jurisdiction_adoption1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlookup_reg_z_thresholds1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_agent_payment_mandate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_ai_act_procurement_clauses1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_bhc_schedule_hc1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_bhc_schedule_hcr1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_call_report_schedule_rc1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_call_report_schedule_rcr1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_irrbb_standardised_approach1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_iso20022_to_evm_calldata1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_mt9xx_to_camt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_nist_ai_rmf_functions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_nmd_behavioral_repricing1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_pil_flavor1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_robinhood_chain_regime1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmap_tempo_settlement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmatch_confirmations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmatch_invoice_three_way1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmobilize_margin_collateral1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_agent_service_metering1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_arc_cpn_economics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_arc_paymaster_economics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_arc_stablefx_rfq1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_buy_in_exposure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_cbam_certificate_cost1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_clearing_access_economics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_l1_fee_runway1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_perp_position1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_scorp_break_even1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_stablecoin_corridor_economics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_tempo_gas_economics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_tempo_payment_economics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmodel_x402_settlement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedoptimize_settlement_capital1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedoptimize_social_security_claim_age1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedoracle_price_aggregation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedotlp_span_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedotlp_validate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpain001_validate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedparse_camt053_reconciliation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedplan_aml_disposition_sample1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedplan_attribute_sample1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedplan_tls_pki_migration1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedprecheck_reserve_attestation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpredict_settlement_fail1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedprevalidation_readiness_scorer1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedprice_embedded_insurance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedprove_metadata_sanitization1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpublish_fund_nav_head1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpublish_index_head1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpublish_market_mark_head1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpublish_model_risk_head1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrdarr_aggregation_recompute1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrdarr_quality_scorecard1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_best_execution1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_bordereau1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_ccd2_aprc_annex31 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_ccp_default_waterfall1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_certified_payroll_pwa1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_corporate_action_entitlement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_csdr_penalty1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_erc4337_userop_math1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_erc4626_vault_share_math1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_erc7540_request_accounting1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_exchange_fee_tier_invoice1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_fund_fees1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_fund_nav1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_garnishment_stack1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_lease_schedule_asc842_ifrs161 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_mla_mapr_actuarial1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_payment_waterfall1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_pe_waterfall_lp1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_section16b_profit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_stablecoin_reserve_3source4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / policy_parameters / properties / leg_a / type
        Previous value: -"object|null"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / properties / policy_parameters / properties / leg_b / type
        Previous value: -"object|null"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / properties / policy_parameters / properties / leg_c / type
        Previous value: -"object|null"New value: +[
        +  "object",
        +  "null"
        +]
    • Changedrecompute_stock_loan_rebate_fee1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_tmpg_fails_charge1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_trustee_report_waterfall1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_x402_eip712_digest1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecompute_x402_permit2_digest1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecon_match1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreconcile_aml_lookback_completeness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreconcile_commission_statement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreconcile_emir_pairing1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreconcile_erc8056_multiplier1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreconcile_mpp_subscription1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreconcile_report_to_general_ledger1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreconcile_sii_ifrs171 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreconcile_token2022_transfer_fee1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreconcile_v4_hook_permissions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreconcile_x402_batch_settlement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecord_fund_positions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecord_index_constituents1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecord_index_correction1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrecord_model_input_lineage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedredline_diff1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedredline_verify1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedregister_mra_remediation_closure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedregister_source_arrival_freshness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreplay_supervisory_scenario1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreplicate_model_outputs1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedresolve_cbam_default_value1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedresolve_provenance_ingredient_tree1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedresolve_recall_trace1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedresolve_rule_version1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedroll_up_aml_lookback_disposition1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrollforward_y14_capital_worksheet1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedroute_einvoice_jurisdiction_mandate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedroute_partner_stablecoin_jurisdiction1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedroute_vida_oss_registration1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_401k_adp_acp_test1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_agent_economy_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_agentic_readiness_diagnostic1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_ai_act_highrisk_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_ai_governance_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_arc_fit_diagnostic1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_audit_recalc_suite1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_call_report_edit_checks1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_carbon_compliance_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_chain1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_chain_batch1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_digital_trade_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_dora_readiness_diagnostic1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_emir_reporting_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_eudr_readiness_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_illustration_selfsupport_test1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_insurance_reporting_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_irrbb_disclosure_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_kernel_vm1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_liquidity_stress_test1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_mcp_deployability_diagnostic1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_mica_casp_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_model_test_battery1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_pqc_timeline_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_rate_shock_ladder1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_regrpt_edit_checks1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_robinhood_chain_fit_diagnostic1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_sanctions_screening_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_section125_ndt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_slate_reporting_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_t1_readiness_diagnostic1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_tempo_fit_diagnostic1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_tokenized_settlement_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_treasury_clearing_fit1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_umr_aana_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_vida_readiness_diagnostic1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrun_vop_readiness_diagnostic1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscan_tool_poisoning1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscope_mica_token_and_service1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_agent_insurability_evidence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_aml_typologies1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_cash_forecast_accuracy1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_clause_coverage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_credit_default_risk1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_credit_model_quantized1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_eudr_country_risk1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_fuzzy_match_calibration1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_mcp_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_mcp_server_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_mt_mx_translation_fidelity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_nis2_incident_significance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_nis2_supply_chain_diligence1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_partner_stablecoin_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_payee_name_match1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_sanctions_screening_quality1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_taxonomy_alignment1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscore_tempo_validator_readiness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscreen_je_ruleset1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscreen_onledger_transfer_batch1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscreen_sanctions_private1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedscreen_tip20_transfer_batch1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsdjwt_issue1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsdjwt_present1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedselect_agentic_checkout_protocol1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedselect_cbe_license1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedselect_embedded_license1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedservicing_compliance_clock1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_agent_spend_policy1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_app_fraud_graph1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_consent_stress1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_frtb_es1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_gpi_tracker_lifecycle1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_ict_cascade1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_output_floor1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_spend_policy1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_stablecoin_reserve1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_var_monte_carlo1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_vop_matching1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimulate_x402_flow1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsize_ccp_default_fund_cover21 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedstress_test_ap_redemption_path1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsuggest_tool_idea1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsuite_howto1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsweep_docket_deadlines1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsweep_fedwire_addresses1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtest_asc280_reportable_segment7 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / policy_parameters / properties / aggregation_similar_customer_type / type
        Previous value: -"boolean|null"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedInput schema / properties / policy_parameters / properties / aggregation_similar_distribution_methods / type
        Previous value: -"boolean|null"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedInput schema / properties / policy_parameters / properties / aggregation_similar_production_processes / type
        Previous value: -"boolean|null"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedInput schema / properties / policy_parameters / properties / aggregation_similar_products_services / type
        Previous value: -"boolean|null"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedInput schema / properties / policy_parameters / properties / aggregation_similar_regulatory_environment / type
        Previous value: -"boolean|null"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedInput schema / properties / policy_parameters / properties / reportable_segment_count / type
        Previous value: -"number|null"New value: +[
        +  "number",
        +  "null"
        +]
    • Changedtest_bifsg_bias_thresholds1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtest_hedge_effectiveness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtest_hoepa_high_cost1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtest_hpml_escrow1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtest_nav_error_materiality1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtest_reg_w_affiliate_transactions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtrack_fatca_crs_ro_remediation_closure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtrack_globe_transition_deferred_tax1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtrack_ifrs17_loss_component_rollforward1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_a2a_agent_card1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_a2a_trust_chain1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_a2a_x402_mandate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_acp_checkout1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_adverse_action_notice1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_agent_audit_trail1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_agent_commerce_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_agent_obo_mandate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_ai_impact_assessment1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_ap2_mandate_chain1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_ap2_mandate_credential1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_ap2_mcp_policy1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_audit_trail_completeness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_c2pa_manifest1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_canton_dvp_atomicity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_canton_party_allowlist1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_canton_selective_disclosure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_cat_bond_trigger_terms1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_cctp_v2_transfer1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_collateral_swap_eligibility1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_commission_hierarchy1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_content_binding_assertion1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_cross_network_settlement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_cyclonedx_sbom1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_deposit_token_compliance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_dpp_data_carrier1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_dtc_tokenized_treasury1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_dtcc_ca_iso20022_message1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_ebam_acmt_flow1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_einvoice_batch1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_einvoice_format1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_emir_lifecycle_event1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_emir_trade_report1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_emir_upi1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_eudr_due_diligence_statement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_eudr_geolocation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_eugb_factsheet1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_fdic370_output_file1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_form5500_schedules1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_fsma204_cte1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_fund_collateral1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_ifrs17_csm_rollforward1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_input_attestations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_mcp_authorization_metadata1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_mcp_server_identity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_mcp_server_json1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_mcp_task_lifecycle1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_mletr_record1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_mt700_lc_fields1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_nft_metadata_art2091 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_openids_homeowners_record1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_openvex_statement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_pacs008_party_completeness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_private_inputs1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_pvp_settlement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_qfc_recordkeeping_file1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_regf_call_frequency1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_royalty_split1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_signature_agent_card1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_signature_directory1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_slate_report_fields1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_spdx_sbom1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_tempo_token_compliance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_tempo_zone_disclosure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_tfr_travel_rule_batch1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_tip20_memo_commitment1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_tokenized_security_lifecycle1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_vida_einvoice_conformance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_w8_series_structural1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvalidate_x402_deferred_handshake1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedvc_issue1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_a2a_agent_card1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_acdc_delegation_chain1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_address_migration_batch1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_anchored_extract1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_ap2_payment_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_close_posting_lineage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_content_credential_signature1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_conversion_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_did_webvh_log1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_disclosure_inclusion1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_dscsa_transaction_statement1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_dual_layer_disclosure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_einvoice_vat_calc1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_erc165_interface_id1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_erc2612_permit_binding1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_erc8004_registry_entry1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_etf_pcf_basket1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_eth_state_proof1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_execution_hash1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_finp2p_ledger_proof1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_input_attestations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_ipe_integrity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_kya_x402_scope1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_license_election1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_merkle_airdrop_proof1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_merkle_batch1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_migration_completeness1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_product_authenticity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_proof_of_reserves_consistency1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_reserve_proof1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_revocation_status1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_saleable_return1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_settlement_asset_backing1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_slsa_provenance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_summa_mst_inclusion1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_tempo_mpp_voucher1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_timestamp_attestation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_trade_document_set1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_trid_apr_accuracy1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_webbotauth_signature1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_witness_cosignatures1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedverify_x402_signer_recovery1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedworkbook_csv_parse1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedworkbook_evaluate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedworkbook_range_digest1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedworkbook_roundtrip_verify1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedworkforce_board_roi_report1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  18. 1 tool update
    • Changedbuild_workflow_links1 field changed
      • changedInput schema / properties / chain / description
        Previous value: -"Name of a pre-defined chain (one of 388 — enumerate with find_chain). Mutually exclusive with steps."New value: +"Name of a pre-defined chain (one of 390 — enumerate with find_chain). Mutually exclusive with steps."
  19. 1 tool update
    • Addedestimate_hdhp_ppo_breakeven
  20. 602 tool updates
    • Changedadjudicate_emir_reconciliation3 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: firm_state, policy, tr_response. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "firm_state": {},
        +  "policy": {},
        +  "tr_response": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedage_emir_reconciliation_breaks3 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: current_break_set, policy, prior_sealed_break_set. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "current_break_set": {
        +    "type": "array"
        +  },
        +  "policy": {},
        +  "prior_sealed_break_set": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedaggregate_cbam_precursor_emissions3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "final_good": {},
        +  "precursors": {},
        +  "scrap_input_share": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedaggregate_execution_receipts3 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: artifacts. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "artifacts": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedaggregate_ownership_50pct3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "ownership_graph": {},
        +  "thresholds": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedaggregate_reputation_score3 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: attestations. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "attestations": {},
        +  "decay_half_life_days": {
        +    "type": "number"
        +  },
        +  "subject_id": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedaggregate_solvency2_scr_modules3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "modules": {},
        +  "operational": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedaggregate_taxonomy_kpi_gar3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "activities": {},
        +  "covered_assets": {},
        +  "entity_type": {},
        +  "gar_numerator_items": {},
        +  "total_assets": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedai_displacement_risk_screener3 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: rc, rm, nra, nri, nrm, sector_exp, ed_level, years_role. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "ed_level": {
        +    "enum": [
        +      "no_degree",
        +      "associate",
        +      "bachelor",
        +      "master",
        +      "doctorate"
        +    ],
        +    "type": "string"
        +  },
        +  "nra": {
        +    "type": "integer"
        +  },
        +  "nri": {
        +    "type": "integer"
        +  },
        +  "nrm": {
        +    "type": "integer"
        +  },
        +  "rc": {
        +    "type": "integer"
        +  },
        +  "rm": {
        +    "type": "integer"
        +  },
        +  "sector_exp": {
        +    "type": "number"
        +  },
        +  "soc_code": {
        +    "type": "string|null"
        +  },
        +  "years_role": {
        +    "type": "integer"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedallocate_ihb_interest3 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: arm_length_rate, base_currency, day_count_convention, days, pool_members, pool_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "arm_length_rate": {},
        +  "base_currency": {},
        +  "day_count_convention": {},
        +  "days": {},
        +  "pool_members": {
        +    "type": "array"
        +  },
        +  "pool_type": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedamortize_asc606_commissions3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amortization_period_override_months": {},
        +  "contract_term_months": {},
        +  "impairment_indicators": {},
        +  "incremental_cost": {},
        +  "renewal_commensurate": {},
        +  "renewal_cost": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedanalyze_dc_vs_lc_cost_benefit3 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: buyerCountryRisk, buyerRelationship, dcCollectingCommissionPct, dcNonPaymentProbabilityPct, dcProtestFeeUSD, dcRemittingFeeUSD, dcType, goodsStatus, invoiceValueUSD, lcAdvisingFeeUSD, lcAmendmentFeeUSD, lcConfirmationPctPerQuarter, lcExpectedAmendments, lcIssuancePctPerQuarter, lcNegotiationPct, lcType, paymentTermDays, sellerCountryRisk. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "buyerCountryRisk": {},
        +  "buyerRelationship": {},
        +  "dcCollectingCommissionPct": {},
        +  "dcNonPaymentProbabilityPct": {},
        +  "dcProtestFeeUSD": {},
        +  "dcRemittingFeeUSD": {},
        +  "dcType": {},
        +  "goodsStatus": {},
        +  "invoiceValueUSD": {},
        +  "lcAdvisingFeeUSD": {},
        +  "lcAmendmentFeeUSD": {},
        +  "lcConfirmationPctPerQuarter": {},
        +  "lcExpectedAmendments": {},
        +  "lcIssuancePctPerQuarter": {},
        +  "lcNegotiationPct": {},
        +  "lcType": {},
        +  "paymentTermDays": {},
        +  "sellerCountryRisk": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedanalyze_prediction_market3 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: forecast_prob, mode, no_ask, outcome, side, user_probability, venue, won. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "bankroll": {
        +    "type": "number"
        +  },
        +  "contract_max": {
        +    "type": "number"
        +  },
        +  "contract_min": {
        +    "type": "number"
        +  },
        +  "entry_price": {
        +    "type": "number"
        +  },
        +  "forecast_prob": {
        +    "type": "number"
        +  },
        +  "mode": {},
        +  "n_contracts": {
        +    "type": "number"
        +  },
        +  "no_ask": {
        +    "type": "number"
        +  },
        +  "outcome": {
        +    "type": "boolean"
        +  },
        +  "payout": {
        +    "type": "number"
        +  },
        +  "settlement_value": {
        +    "type": "number"
        +  },
        +  "side": {},
        +  "strike": {
        +    "type": "number"
        +  },
        +  "unit_value": {
        +    "type": "number"
        +  },
        +  "user_probability": {
        +    "type": "number"
        +  },
        +  "venue": {},
        +  "won": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedanchor_document_integrity3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "claimed_timestamp": {},
        +  "document_hash": {},
        +  "document_type": {},
        +  "hash_algorithm": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedapply_climate_scenario3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "exposures": {},
        +  "metric": {},
        +  "scenario": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassemble_ai_addendum3 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: effective_date, improvement_restrictions, model_improvement, output_ownership, retention_window, subprocessor_ai, train_on_customer_data, training_data, training_purposes, training_restrictions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "effective_date": {},
        +  "improvement_restrictions": {},
        +  "model_improvement": {},
        +  "output_ownership": {},
        +  "retention_window": {},
        +  "subprocessor_ai": {},
        +  "train_on_customer_data": {},
        +  "training_data": {},
        +  "training_purposes": {},
        +  "training_restrictions": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassemble_aiuc1_evidence_pack3 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: aiuc1_version, anchor_document_integrity, artifacts, cadence_attestation_input, cadence_period_days, control_mapping. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aiuc1_version": {},
        +  "anchor_document_integrity": {},
        +  "artifacts": {},
        +  "cadence_attestation_input": {},
        +  "cadence_period_days": {},
        +  "control_mapping": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassemble_license_terms3 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: fields, template_id. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "fields": {
        +    "type": "array"
        +  },
        +  "template_id": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassemble_mutual_nda3 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: confidentiality_term_mode, confidentiality_term_years, effective_date, governing_law, jurisdiction, mnda_term_mode, mnda_term_years, modifications, purpose. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "confidentiality_term_mode": {},
        +  "confidentiality_term_years": {},
        +  "effective_date": {},
        +  "governing_law": {},
        +  "jurisdiction": {},
        +  "mnda_term_mode": {},
        +  "mnda_term_years": {},
        +  "modifications": {},
        +  "purpose": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassemble_ocg_evidence_bundle3 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: artifact_execution_hash, artifact_tool_id, gate_results, human_accountability_records, proof_refs. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "artifact_execution_hash": {},
        +  "artifact_tool_id": {},
        +  "gate_results": {},
        +  "human_accountability_records": {
        +    "type": "array"
        +  },
        +  "proof_refs": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_circumvention_diligence3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "transaction": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_cra_vuln_reporting_readiness3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "actively_exploited_detection": {},
        +  "coordinated_disclosure_policy": {},
        +  "csirt_enisa_endpoint_configured": {},
        +  "early_warning_24h_process": {},
        +  "notification_72h_process": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_defi_lending3 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: collateral_amount, liquidation_bonus_pct, liquidation_threshold_pct, protocol. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "collateral_amount": {
        +    "type": "number"
        +  },
        +  "collateral_price_usd": {
        +    "type": "number"
        +  },
        +  "collateral_value_usd": {
        +    "type": "number"
        +  },
        +  "debt_value_usd": {
        +    "type": "number"
        +  },
        +  "liquidation_bonus_pct": {
        +    "type": "number"
        +  },
        +  "liquidation_threshold_pct": {
        +    "type": "number"
        +  },
        +  "protocol": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_exam_readiness_pack3 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: as_of, module, requests. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {
        +    "type": "string"
        +  },
        +  "evidence_request_ids": {
        +    "type": "array"
        +  },
        +  "module": {
        +    "enum": [
        +      "sec-2026",
        +      "amla"
        +    ],
        +    "type": "string"
        +  },
        +  "module_checklist": {
        +    "type": "array"
        +  },
        +  "requests": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_iso42001_aims_conformance3 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: aims. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aims": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_mar_crypto_surveillance3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inputs": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_mica_casp_readiness3 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: inputs. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "complaints_handling": {},
        +  "conflicts_policy": {},
        +  "custody_segregation": {},
        +  "fit_and_proper": {},
        +  "governance_board": {},
        +  "ict_resilience": {},
        +  "inputs": {},
        +  "internal_controls": {},
        +  "services": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_model_validation_status3 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: as_of_date, cadence_days_override, last_validation_date, outcome_status, tier. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "cadence_days_override": {},
        +  "last_validation_date": {},
        +  "outcome_status": {},
        +  "tier": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_psd3_readiness3 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: baasScope, consentMaturity, fraudLiability, instType, jurisdiction, openBankingLevel, openFinance, psd2Status, scaExemptions, tppTypes. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "baasScope": {},
        +  "consentMaturity": {},
        +  "fraudLiability": {},
        +  "instType": {},
        +  "jurisdiction": {},
        +  "openBankingLevel": {},
        +  "openFinance": {
        +    "type": "array"
        +  },
        +  "psd2Status": {},
        +  "scaExemptions": {
        +    "type": "array"
        +  },
        +  "tppTypes": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_restaking_risk3 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: avs_reward_apy_pct, base_staking_apy_pct, first_loss_tranche_pct, insurance_enabled, operator_fee_pct, protocol, slash_magnitude_pct, slashing_risk_pct. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "avs_reward_apy_pct": {
        +    "type": "number"
        +  },
        +  "base_staking_apy_pct": {
        +    "type": "number"
        +  },
        +  "eth_price_usd": {
        +    "type": "number"
        +  },
        +  "first_loss_tranche_pct": {
        +    "type": "number"
        +  },
        +  "insurance_enabled": {
        +    "type": "boolean"
        +  },
        +  "insurance_premium_pct_of_rewards": {
        +    "type": "number"
        +  },
        +  "operator_fee_pct": {
        +    "type": "number"
        +  },
        +  "protocol": {},
        +  "slash_magnitude_pct": {
        +    "type": "number"
        +  },
        +  "slashing_risk_pct": {
        +    "type": "number"
        +  },
        +  "staked_eth": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_suspect_product_status3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "counterfeit_indicators": {},
        +  "fda_notified": {},
        +  "identifier_unmatched": {},
        +  "quarantined": {},
        +  "verification_failed": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedassess_traiga_exposure3 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: asserted_use_flags, deploys_in_texas. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asserted_use_flags": {},
        +  "deploys_in_texas": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedattest_bulk_disbursement_integrity3 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: as_of, authorized_control_total, currency, declared_exclusions, duplicate_key_commitment_scheme, payee_records, per_payee_limit_minor_units, per_run_limit_minor_units, prior_run_payee_refs, run_reference. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "authorized_control_total": {},
        +  "currency": {
        +    "type": "string"
        +  },
        +  "declared_exclusions": {
        +    "type": "array"
        +  },
        +  "duplicate_key_commitment_scheme": {
        +    "type": "string"
        +  },
        +  "payee_records": {
        +    "type": "array"
        +  },
        +  "per_payee_limit_minor_units": {},
        +  "per_run_limit_minor_units": {},
        +  "prior_run_payee_refs": {
        +    "type": "array"
        +  },
        +  "run_reference": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedattest_calc_agent_independence3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "calc_agent_id": {
        +    "type": "string"
        +  },
        +  "disclosure_note": {
        +    "type": "string"
        +  },
        +  "interested_parties": {
        +    "type": "array"
        +  },
        +  "relationship_declaration": {
        +    "enum": [
        +      "none",
        +      "disclosed"
        +    ],
        +    "type": "string"
        +  },
        +  "trigger_ref": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedaudit_acp_ucp_product_feed3 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: payload. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "audit_target": {},
        +  "payload": {},
        +  "payload_type": {},
        +  "strict": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedaudit_borrower_escrow_stmt3 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: starting_balance, monthly_payments, disbursements, stated_balances. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "borrower_current": {
        +    "type": "boolean"
        +  },
        +  "disbursements": {
        +    "type": "array"
        +  },
        +  "monthly_escrow_payment": {
        +    "type": "number"
        +  },
        +  "monthly_payments": {
        +    "type": "array"
        +  },
        +  "servicer_chosen_course": {
        +    "enum": [
        +      "do_nothing",
        +      "repay_within_30_days",
        +      "repay_equal_monthly_12_plus_months"
        +    ],
        +    "type": "string"
        +  },
        +  "starting_balance": {
        +    "type": "number"
        +  },
        +  "stated_balances": {
        +    "type": "array"
        +  },
        +  "stated_cushion": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedaudit_mcp_tool_scope_revocation3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "max_token_age_s": {},
        +  "next_token_present": {},
        +  "now_unix": {},
        +  "revocation_endpoint": {},
        +  "token_created_unix": {},
        +  "tool_grants": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedauthorize_payment_against_mandate3 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: mode, as_of. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {
        +    "type": "string"
        +  },
        +  "authorization": {
        +    "type": "object"
        +  },
        +  "extensions": {
        +    "type": "object"
        +  },
        +  "mandate": {
        +    "type": "object"
        +  },
        +  "mode": {
        +    "type": "string"
        +  },
        +  "request": {
        +    "type": "object"
        +  },
        +  "ttl_seconds": {
        +    "type": "integer"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbenchmark_tp_interquartile_range3 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: comparable_ratios, financials, tested_party_ratio. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "comparable_ratios": {
        +    "type": "array"
        +  },
        +  "financials": {},
        +  "tested_party_ratio": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbind_agreement_acceptance3 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: acceptance_statement, accepting_party_role, body_sha256, previous_proof_hash, referenced_execution_hash, template_id. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "acceptance_statement": {},
        +  "accepting_party_role": {},
        +  "body_sha256": {},
        +  "previous_proof_hash": {},
        +  "referenced_execution_hash": {},
        +  "template_id": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbind_attested_subject3 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: artifact, inputs_digest, producer_inputs, tool_ref. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "artifact": {},
        +  "inputs_digest": {},
        +  "producer_inputs": {},
        +  "tool_ref": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_226j_response_evidence_pack3 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: affordability_result, attestation, disputed_employee_ids, esrp_result, irs_asserted_esrp_annual, letter_date. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "affordability_result": {},
        +  "attestation": {},
        +  "disputed_employee_ids": {
        +    "type": "array"
        +  },
        +  "esrp_result": {},
        +  "irs_asserted_esrp_annual": {},
        +  "letter_date": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_adverse_action_notice3 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: action_taken, applicant_name_placeholder, credit_bureau_address, credit_bureau_name, credit_bureau_phone, credit_score_source, credit_score_used, creditor_name, date_of_action, factor_codes, reason_code_source. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "action_taken": {},
        +  "applicant_name_placeholder": {},
        +  "credit_bureau_address": {},
        +  "credit_bureau_name": {},
        +  "credit_bureau_phone": {},
        +  "credit_score": {
        +    "type": "number"
        +  },
        +  "credit_score_source": {},
        +  "credit_score_used": {},
        +  "creditor_name": {},
        +  "date_of_action": {},
        +  "factor_codes": {},
        +  "reason_code_source": {},
        +  "score_range_high": {
        +    "type": "number"
        +  },
        +  "score_range_low": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_agent_incident_record3 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: agent_identity, escalation_cross_link, incident, mandate_hash, remediation, session_evidence. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agent_identity": {},
        +  "escalation_cross_link": {},
        +  "incident": {},
        +  "mandate_hash": {},
        +  "remediation": {},
        +  "session_evidence": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_agent_test_evidence3 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: aiuc_version, declared_prior_pack_digest, prior_quarter, quarter, subject_hash, suite, tests. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aiuc_version": {},
        +  "declared_prior_pack_digest": {},
        +  "prior_quarter": {},
        +  "quarter": {},
        +  "subject_hash": {},
        +  "suite": {},
        +  "tests": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_agent_traffic_policy3 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: agent_types, block_rules, rails. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agent_types": {},
        +  "block_rules": {},
        +  "max_daily_val_usd": {},
        +  "max_single_val_usd": {},
        +  "max_tx_per_day": {},
        +  "max_tx_per_min": {},
        +  "rails": {},
        +  "refund_posture": {},
        +  "retry_policy": {},
        +  "verification_level": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_ai_conformity_pack3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "accuracy_robustness_cyber": {},
        +  "conformity_route": {},
        +  "data_governance": {},
        +  "quality_management": {},
        +  "risk_mgmt_system": {},
        +  "system": {},
        +  "technical_documentation": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_ai_decision_log_record3 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: decision_label, human_accountability_records, input_digest, model_id, model_version, operator_id, output_digest, override_by, override_flag, sha256_prev_record, subject_hash, subject_ref, system_context. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "confidence": {
        +    "type": "number"
        +  },
        +  "decision_label": {},
        +  "human_accountability_records": {
        +    "type": "array"
        +  },
        +  "input_digest": {},
        +  "model_id": {},
        +  "model_version": {},
        +  "operator_id": {},
        +  "output_digest": {},
        +  "override_by": {},
        +  "override_flag": {},
        +  "retention_months": {
        +    "type": "number"
        +  },
        +  "sha256_prev_record": {},
        +  "subject_hash": {},
        +  "subject_ref": {},
        +  "system_context": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_ai_training_data_lineage_record3 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: collection_method, dataset_id, dataset_version, governance_notes, operator_id, referenced_receipt_execution_hash, referenced_receipt_kernel_digest, referenced_receipt_tool_id, referenced_receipt_tool_version, retention_months, sha256_prev_lineage_hash, source_dataset_ids. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "collection_method": {},
        +  "dataset_id": {},
        +  "dataset_version": {},
        +  "governance_notes": {},
        +  "operator_id": {},
        +  "referenced_receipt_execution_hash": {},
        +  "referenced_receipt_kernel_digest": {},
        +  "referenced_receipt_tool_id": {},
        +  "referenced_receipt_tool_version": {},
        +  "retention_months": {
        +    "type": "number"
        +  },
        +  "sha256_prev_lineage_hash": {},
        +  "source_dataset_ids": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_ai_workpaper_record3 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: declared_conventions, determinism_class, documentation_standard_ref, engagement_id, previous_workpaper_hash, receipt_execution_hash, receipt_generated_at, receipt_kernel_digest, receipt_tool_id, receipt_tool_version, reporting_period, reviewer_ha_role, reviewer_identity_id, reviewer_role, reviewer_statement. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "declared_conventions": {},
        +  "determinism_class": {},
        +  "documentation_standard_ref": {},
        +  "engagement_id": {},
        +  "previous_workpaper_hash": {},
        +  "receipt_execution_hash": {},
        +  "receipt_generated_at": {},
        +  "receipt_kernel_digest": {},
        +  "receipt_tool_id": {},
        +  "receipt_tool_version": {},
        +  "reporting_period": {},
        +  "reviewer_ha_role": {},
        +  "reviewer_identity_id": {},
        +  "reviewer_role": {},
        +  "reviewer_statement": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_allocation_decision_receipt3 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: allocation_chosen, eligibility_schedule, inventory_snapshot, obligation_amount, rounding. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "allocation_chosen": {
        +    "type": "array"
        +  },
        +  "as_of": {},
        +  "eligibility_schedule": {
        +    "type": "array"
        +  },
        +  "eligibility_schedule_ref": {},
        +  "haircut_table_version": {},
        +  "inventory_ref": {},
        +  "inventory_snapshot": {
        +    "type": "array"
        +  },
        +  "objective": {
        +    "type": "string"
        +  },
        +  "obligation_amount": {},
        +  "obligation_ref": {},
        +  "rounding": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_amortization_schedule3 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: buydown_schedule, buydown_type, nominal_amortization_periods, rate_changes, recast, schedule_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "buydown_schedule": {
        +    "type": "array"
        +  },
        +  "buydown_type": {},
        +  "io_periods": {
        +    "type": "number"
        +  },
        +  "lifetime_cap_pct": {
        +    "type": "number"
        +  },
        +  "lifetime_floor_pct": {
        +    "type": "number"
        +  },
        +  "loan_amount": {
        +    "type": "number"
        +  },
        +  "margin_pct": {
        +    "type": "number"
        +  },
        +  "nominal_amortization_periods": {
        +    "type": "number"
        +  },
        +  "note_rate_pct": {
        +    "type": "number"
        +  },
        +  "num_payments": {
        +    "type": "number"
        +  },
        +  "odd_days": {
        +    "type": "number"
        +  },
        +  "payment_amount": {
        +    "type": "number"
        +  },
        +  "periodic_cap_pct": {
        +    "type": "number"
        +  },
        +  "periods_per_year": {
        +    "type": "number"
        +  },
        +  "rate_changes": {
        +    "type": "array"
        +  },
        +  "recast": {
        +    "type": "boolean"
        +  },
        +  "schedule_type": {},
        +  "unit_period_days": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_ap2_cartmandate_hashchain3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agent_id": {
        +    "type": "string"
        +  },
        +  "cart_items": {
        +    "type": "array"
        +  },
        +  "claimed_links": {
        +    "type": "array"
        +  },
        +  "merchant": {
        +    "type": "string"
        +  },
        +  "stage": {
        +    "type": "string"
        +  },
        +  "subject": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_art5_diligence_evidence3 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: accountability_records, additional_duties, deal_ref, duty_declarations, investor_ref, period, period_label, position_ref. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "accountability_records": {},
        +  "additional_duties": {},
        +  "deal_ref": {},
        +  "duty_declarations": {},
        +  "investor_ref": {},
        +  "period": {},
        +  "period_label": {},
        +  "position_ref": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_bond_ladder3 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: notional, rungs. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "notional": {
        +    "type": "number"
        +  },
        +  "periods_per_year": {
        +    "type": "number"
        +  },
        +  "reinvestment_assumption": {
        +    "enum": [
        +      "hold_to_maturity",
        +      "roll_to_longest_rung"
        +    ],
        +    "type": "string"
        +  },
        +  "rungs": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_cbcr_report3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "export_mode": {
        +    "enum": [
        +      "private_filing",
        +      "eu_public",
        +      "au_public"
        +    ],
        +    "type": "string"
        +  },
        +  "reporting_entity_name": {
        +    "type": "string"
        +  },
        +  "reporting_entity_tin": {
        +    "type": "string"
        +  },
        +  "rounding_tolerance": {
        +    "type": "number"
        +  },
        +  "schema_version": {
        +    "type": "string"
        +  },
        +  "table1_jurisdictions": {
        +    "type": "array"
        +  },
        +  "table2_entities": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_claim_dispute_bundle3 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: challenge, execution_claim, warranty_kpi_breach. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "challenge": {},
        +  "execution_claim": {},
        +  "warranty_kpi_breach": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_conditional_relief_collateral_receipt3 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: as_of, asset_class, capital_charge_table, condition_set, declared_haircut_pct, declared_reporting_cadence, declared_valuation, issuer_permitted_status, last_report_ref, position_size, relied_on_version, relief_regime, revocation_charge_pct, revocation_eligible_without_relief. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "asset_class": {},
        +  "capital_charge_table": {
        +    "type": "array"
        +  },
        +  "condition_set": {},
        +  "declared_haircut_pct": {},
        +  "declared_reporting_cadence": {},
        +  "declared_valuation": {},
        +  "issuer_permitted_status": {
        +    "type": "boolean"
        +  },
        +  "last_report_ref": {},
        +  "position_size": {},
        +  "relied_on_version": {},
        +  "relief_regime": {},
        +  "revocation_charge_pct": {},
        +  "revocation_eligible_without_relief": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_conversion_receipt3 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: converter, parameters. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "converter": {},
        +  "input_filename": {},
        +  "input_sha256": {},
        +  "output_filename": {},
        +  "output_sha256": {},
        +  "parameters": {
        +    "type": "array"
        +  },
        +  "source_format": {},
        +  "target_format": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_digest_manifest3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entries": {
        +    "type": "array"
        +  },
        +  "purpose": {},
        +  "sort": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_dora_roi_register3 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: contracts, entity, functions, providers. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "contracts": {},
        +  "entity": {},
        +  "functions": {},
        +  "providers": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_dual_control_certification3 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: as_of_date, certification_ref, prepared_by, regime_label, required_role, signatory_records, subject_class, subject_hash, threshold_n. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "certification_ref": {},
        +  "prepared_by": {},
        +  "regime_label": {},
        +  "required_role": {},
        +  "signatory_records": {},
        +  "subject_class": {},
        +  "subject_hash": {},
        +  "threshold_n": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_einvoice_transmission_receipt3 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: document, format_validation, routed_mandate, vat_verification. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "document": {},
        +  "format_validation": {},
        +  "routed_mandate": {},
        +  "vat_verification": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_etr_possession_chain3 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: control_transfer_events, document_digest, initial_holder. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "control_transfer_events": {
        +    "type": "array"
        +  },
        +  "document_digest": {},
        +  "initial_holder": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_fria_monitoring_plan3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "deployment": {},
        +  "fria": {},
        +  "human_oversight": {},
        +  "incident_reporting": {},
        +  "logging": {},
        +  "monitoring_plan": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_idv_verification_incident_record3 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: escalation_cross_link, failure_classification, remediation, session_evidence, session_receipt. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "escalation_cross_link": {},
        +  "failure_classification": {},
        +  "remediation": {},
        +  "session_evidence": {},
        +  "session_receipt": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_model_inventory_entry3 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: ai_ml_model, business_purpose, complexity_score, deployment_date, development_date, last_validation_date, materiality_score, model_name, model_owner, third_party_vendor, usage_scope. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "ai_ml_model": {
        +    "type": "boolean"
        +  },
        +  "business_purpose": {},
        +  "complexity_score": {},
        +  "deployment_date": {},
        +  "development_date": {},
        +  "last_validation_date": {},
        +  "materiality_score": {},
        +  "model_name": {},
        +  "model_owner": {},
        +  "third_party_vendor": {
        +    "type": "boolean"
        +  },
        +  "usage_scope": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_no_russia_clause_pack3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "contract": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_pld_disclosure_pack3 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: anchor_document_integrity, disputed_window, receipts. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "alleged_defect": {},
        +  "anchor_document_integrity": {},
        +  "disputed_window": {},
        +  "product_ref": {},
        +  "receipts": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_product_lineage3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "product_id": {},
        +  "stages": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_public_money_settlement_receipt3 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: amount_collected, amount_credited, as_of, currency, declared_revenue_code, fees, payer_class, payment_ref, rails, reconciliation_window, revenue_code_table, treasury_account_credited. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amount_collected": {},
        +  "amount_credited": {},
        +  "as_of": {},
        +  "currency": {},
        +  "declared_revenue_code": {},
        +  "fees": {
        +    "type": "array"
        +  },
        +  "payer_class": {},
        +  "payment_ref": {},
        +  "rails": {
        +    "type": "array"
        +  },
        +  "reconciliation_window": {},
        +  "revenue_code_table": {
        +    "type": "array"
        +  },
        +  "treasury_account_credited": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_rights_record3 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: asset_ref, license_id, licensee, licensor, renewal, rights_vector, term_years, territory. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asset_ref": {},
        +  "license_id": {},
        +  "licensee": {},
        +  "licensor": {},
        +  "renewal": {
        +    "type": "string"
        +  },
        +  "rights_vector": {
        +    "type": "array"
        +  },
        +  "term_years": {},
        +  "territory": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_safeguarding_audit_evidence3 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: accountability_records, attested_subject, audit_period, firm_ref, management_responses, method_classification, reconciliation_results. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "accountability_records": {},
        +  "attested_subject": {},
        +  "audit_period": {},
        +  "firm_ref": {},
        +  "management_responses": {},
        +  "method_classification": {},
        +  "reconciliation_results": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_sanctions_screening_evidence_pack3 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: caller_computed_digest, dataset_ref, screening. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "caller_computed_digest": {},
        +  "dataset_ref": {},
        +  "screening": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_traiga_safe_harbor_pack3 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: exposure_result, rmf_mapping. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "exposure_result": {},
        +  "rmf_mapping": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_validator_change_control_receipt3 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: as_of, authorizing_identities, change_type, effective_epoch, posterior_weight, prior_weight, quorum_achieved, quorum_required, total_stake_weight, validator_ref. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "authorizing_identities": {
        +    "type": "array"
        +  },
        +  "change_type": {},
        +  "effective_epoch": {},
        +  "posterior_weight": {},
        +  "prior_weight": {},
        +  "quorum_achieved": {},
        +  "quorum_required": {},
        +  "total_stake_weight": {},
        +  "validator_ref": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_vop_session_receipt3 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: attempts, session_id. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "attempts": {
        +    "type": "array"
        +  },
        +  "session_id": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedbuild_yield_curve_gspread3 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: benchmark_points, benchmark_name, bond. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "benchmark_name": {
        +    "type": "string"
        +  },
        +  "benchmark_points": {
        +    "type": "array"
        +  },
        +  "bond": {
        +    "type": "object"
        +  },
        +  "interpolation": {
        +    "enum": [
        +      "linear",
        +      "monotone_cubic_hermite"
        +    ],
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_basis_risk_nii_shock3 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: horizon_months, index_exposures, material_threshold_pct, reference_shock_bps. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "horizon_months": {},
        +  "index_exposures": {
        +    "type": "array"
        +  },
        +  "material_threshold_pct": {},
        +  "reference_shock_bps": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_cbam_embedded_emissions3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cn_code": {},
        +  "country_of_origin": {},
        +  "direct_emissions_factor": {},
        +  "electricity_source": {},
        +  "emissions_basis": {},
        +  "good_category": {},
        +  "indirect_emissions_factor": {},
        +  "monitoring_method": {},
        +  "precursor_emissions": {},
        +  "quantity_tonnes": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_cecl_ecl_allowance3 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: constants_version, forecast_weights, method, segments. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "charge_offs_usd": {
        +    "type": "number"
        +  },
        +  "constants_version": {},
        +  "forecast_weights": {
        +    "type": "array"
        +  },
        +  "method": {},
        +  "prior_allowance_balance_usd": {
        +    "type": "number"
        +  },
        +  "recoveries_usd": {
        +    "type": "number"
        +  },
        +  "segments": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_claims_stp_economics3 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: annual_claims_volume, annual_license_cost, automated_handling_cost, average_claim_payment, current_stp_rate_pct, discount_rate_pct, implementation_cost, leakage_rate_manual_pct, leakage_rate_stp_pct, manual_handling_cost, projection_years, target_stp_rate_pct. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annual_claims_volume": {},
        +  "annual_license_cost": {},
        +  "automated_handling_cost": {},
        +  "average_claim_payment": {},
        +  "current_stp_rate_pct": {},
        +  "discount_rate_pct": {},
        +  "implementation_cost": {},
        +  "leakage_rate_manual_pct": {},
        +  "leakage_rate_stp_pct": {},
        +  "manual_handling_cost": {},
        +  "projection_years": {},
        +  "target_stp_rate_pct": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_csdr_penalty3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "fail": {},
        +  "open_fails": {},
        +  "rate_table_version": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_erc2981_royalty3 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: claimed_royalty_amount, receiver, royalty_fraction_bps, sale_price. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "claimed_royalty_amount": {},
        +  "receiver": {
        +    "type": "string"
        +  },
        +  "royalty_fraction_bps": {},
        +  "sale_price": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_irrbb_eve_shocks3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "repricing_gaps": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_mica_own_funds3 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: inputs. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "fixed_overheads_annual": {},
        +  "inputs": {},
        +  "own_funds_form": {},
        +  "own_funds_held": {},
        +  "service_class": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_nis2_penalty_exposure3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entity_classification": {},
        +  "global_annual_turnover_eur": {},
        +  "infringement_types": {},
        +  "mitigating_factors": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_repo_haircut3 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: collateral_type, notional, tenor, counterparty. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "canton_247": {
        +    "type": "boolean"
        +  },
        +  "collateral_type": {
        +    "enum": [
        +      "ust_10y",
        +      "ust_30y",
        +      "agency_mbs",
        +      "ig_corp_bond",
        +      "gilt_10y",
        +      "eu_sovereign"
        +    ],
        +    "type": "string"
        +  },
        +  "concentration_pct": {
        +    "type": "number"
        +  },
        +  "counterparty": {
        +    "enum": [
        +      "dealer_bank",
        +      "buy_side_fund",
        +      "central_bank",
        +      "hedge_fund"
        +    ],
        +    "type": "string"
        +  },
        +  "cross_border": {
        +    "type": "boolean"
        +  },
        +  "currency": {
        +    "enum": [
        +      "USD",
        +      "EUR",
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "custodied": {
        +    "type": "boolean"
        +  },
        +  "notional": {
        +    "type": "number"
        +  },
        +  "tenor": {
        +    "enum": [
        +      "overnight",
        +      "1w",
        +      "1m",
        +      "3m",
        +      "6m",
        +      "open_term"
        +    ],
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_solvency2_scr_ratio3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "capital": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcalculate_xva3 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: cpyLGD_pct, cpyPD_pct, funding_bps, instrument, maturity_years, n_paths, n_steps, notional, ownPD_pct, preset, rfr_pct, vol_pct. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cpyLGD_pct": {
        +    "type": "number"
        +  },
        +  "cpyPD_pct": {
        +    "type": "number"
        +  },
        +  "funding_bps": {
        +    "type": "number"
        +  },
        +  "instrument": {},
        +  "maturity_years": {},
        +  "n_paths": {
        +    "type": "number"
        +  },
        +  "n_steps": {
        +    "type": "number"
        +  },
        +  "notional": {},
        +  "ownPD_pct": {
        +    "type": "number"
        +  },
        +  "preset": {},
        +  "rfr_pct": {
        +    "type": "number"
        +  },
        +  "seed": {},
        +  "vol_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcertify_license_election3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asset_ref": {
        +    "type": "string"
        +  },
        +  "license_election": {
        +    "type": "array"
        +  },
        +  "licensor_did": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_agency_eligibility_matrix3 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: cltv_pct, hcltv_pct, housing_dti_pct, loan_purpose, occupancy_type, property_type, underwriting_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cltv_pct": {
        +    "type": "number"
        +  },
        +  "dti_pct": {
        +    "type": "number"
        +  },
        +  "fico_score": {
        +    "type": "number"
        +  },
        +  "hcltv_pct": {
        +    "type": "number"
        +  },
        +  "housing_dti_pct": {
        +    "type": "number"
        +  },
        +  "loan_purpose": {},
        +  "ltv_pct": {
        +    "type": "number"
        +  },
        +  "occupancy_type": {},
        +  "property_type": {},
        +  "underwriting_type": {},
        +  "units": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_agent_attestation3 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"
        -}
    • Changedcheck_agent_token_scope3 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: attenuation_chain. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "attenuation_chain": {
        +    "type": "array"
        +  },
        +  "requested_action": {},
        +  "token": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_allocation_affirmation3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cutoff_local": {},
        +  "events": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_assessor_independence3 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: architecture_type, assessment_date, assessment_route, assessor_person_ids, attestation_deadline, claimed_assessor_certifications, identity_set, implementer_person_ids, permitted_routes, required_certifications. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "architecture_type": {},
        +  "assessment_date": {},
        +  "assessment_route": {},
        +  "assessor_person_ids": {},
        +  "attestation_deadline": {},
        +  "claimed_assessor_certifications": {},
        +  "identity_set": {
        +    "type": "array"
        +  },
        +  "implementer_person_ids": {},
        +  "permitted_routes": {
        +    "type": "array"
        +  },
        +  "required_certifications": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_camera_provenance3 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: assertions, claim, claim_generator, manifest_digest, signature. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "assertions": {
        +    "type": "array"
        +  },
        +  "claim": {},
        +  "claim_generator": {},
        +  "manifest_digest": {},
        +  "signature": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_capital_adequacy_private3 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: regulatory_minimum_pct. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "regulatory_minimum_pct": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_card_act_ability_to_pay3 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: has_cosigner, method. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annual_income": {
        +    "type": "number"
        +  },
        +  "applicant_age": {
        +    "type": "number"
        +  },
        +  "has_cosigner": {
        +    "type": "boolean"
        +  },
        +  "method": {},
        +  "minimum_payment_pct": {
        +    "type": "number"
        +  },
        +  "monthly_debt_obligations": {
        +    "type": "number"
        +  },
        +  "monthly_housing_payment": {
        +    "type": "number"
        +  },
        +  "requested_credit_limit": {
        +    "type": "number"
        +  },
        +  "total_assets": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_cash_leg_finality3 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: cash_leg_type, amount, currency, finality_model, jurisdiction. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amount": {
        +    "type": "number"
        +  },
        +  "cash_leg_type": {
        +    "enum": [
        +      "usdc",
        +      "jpmd",
        +      "hsbc_deposit",
        +      "eur_emt",
        +      "custom"
        +    ],
        +    "type": "string"
        +  },
        +  "cash_pct": {
        +    "type": "number"
        +  },
        +  "currency": {
        +    "enum": [
        +      "USD",
        +      "EUR",
        +      "GBP",
        +      "HKD",
        +      "SGD"
        +    ],
        +    "type": "string"
        +  },
        +  "depeg_defined": {
        +    "type": "boolean"
        +  },
        +  "depeg_threshold": {
        +    "type": "number"
        +  },
        +  "finality_model": {
        +    "enum": [
        +      "atomic_dvp_bound",
        +      "conditional_irrevocable",
        +      "standard_blockchain",
        +      "traditional_wire"
        +    ],
        +    "type": "string"
        +  },
        +  "jurisdiction": {
        +    "enum": [
        +      "us",
        +      "eu",
        +      "hk",
        +      "sg",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "redemption_window": {
        +    "enum": [
        +      "instant",
        +      "same_day",
        +      "t1",
        +      "t2_plus"
        +    ],
        +    "type": "string"
        +  },
        +  "repo_pct": {
        +    "type": "number"
        +  },
        +  "reserve_attestation_available": {
        +    "type": "boolean"
        +  },
        +  "tbills_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_client_porting3 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: backup_member_consent_status, backup_member_id, client_ref, collateral, positions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "backup_member_consent_status": {},
        +  "backup_member_id": {
        +    "type": "string"
        +  },
        +  "client_ref": {
        +    "type": "string"
        +  },
        +  "collateral": {
        +    "type": "array"
        +  },
        +  "default_event_at": {},
        +  "evaluated_at": {},
        +  "porting_window_hours": {},
        +  "positions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_conforming_loan_limit3 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: high_cost_county, loan_program, state, year. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "county_limit_override": {
        +    "type": "number"
        +  },
        +  "high_cost_county": {
        +    "type": "boolean"
        +  },
        +  "loan_amount": {
        +    "type": "number"
        +  },
        +  "loan_program": {},
        +  "state": {},
        +  "units": {
        +    "type": "number"
        +  },
        +  "year": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_cra_annex1_completeness3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "conformity_route": {},
        +  "sbom_machine_readable": {},
        +  "sbom_present": {},
        +  "secure_by_default": {},
        +  "top_level_deps_covered": {},
        +  "vuln_handling_policy_present": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_credit_concentration_topn_sector3 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: exposures, sector_limit_pct, single_name_limit_pct, top_n. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "exposures": {
        +    "type": "array"
        +  },
        +  "sector_limit_pct": {},
        +  "single_name_limit_pct": {},
        +  "top_n": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_cscf_control_applicability3 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: architecture_type, component_inventory, control_matrix, cscf_version, implementation_status. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "architecture_type": {},
        +  "component_inventory": {
        +    "type": "array"
        +  },
        +  "control_matrix": {
        +    "type": "array"
        +  },
        +  "cscf_version": {},
        +  "implementation_status": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_debt_validation_notice3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inputs": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_digital_trade_rules3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "electronic_address_provided": {},
        +  "format_specified": {},
        +  "lc_terms": {},
        +  "presentation": {},
        +  "rule_set": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_etr_control_evidence3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "control_events": {},
        +  "document_digest": {},
        +  "original_holder": {},
        +  "platform_identity": {},
        +  "singularity_assertion": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_fatca_crs_submission_conformance3 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: certification_period, mandatory_element_rules, records, schema_version, submission_id, suppressed_rule_codes. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "certification_period": {},
        +  "mandatory_element_rules": {
        +    "type": "array"
        +  },
        +  "records": {
        +    "type": "array"
        +  },
        +  "schema_version": {},
        +  "submission_id": {},
        +  "suppressed_rule_codes": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_fido_pqc_conformance3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "authenticator": {},
        +  "target_pqc": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_force_placed_notice3 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: first_notice_date, reminder_notice_date, charge_date, charged_premium_amount, charge_coverage_start, charge_coverage_end. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "alternative_quote_amount": {
        +    "type": "number"
        +  },
        +  "borrower_coverage_end": {
        +    "type": "string"
        +  },
        +  "borrower_coverage_start": {
        +    "type": "string"
        +  },
        +  "cancellation_date": {
        +    "type": "string"
        +  },
        +  "charge_coverage_end": {
        +    "type": "string"
        +  },
        +  "charge_coverage_start": {
        +    "type": "string"
        +  },
        +  "charge_date": {
        +    "type": "string"
        +  },
        +  "charged_premium_amount": {
        +    "type": "number"
        +  },
        +  "evidence_of_continuous_coverage_date": {
        +    "type": "string"
        +  },
        +  "first_notice_content_items": {
        +    "type": "array"
        +  },
        +  "first_notice_date": {
        +    "type": "string"
        +  },
        +  "notice_mail_class": {
        +    "type": "string"
        +  },
        +  "refund_amount": {
        +    "type": "number"
        +  },
        +  "refund_date": {
        +    "type": "string"
        +  },
        +  "reminder_notice_date": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_g20_corridor_cost_gap3 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: as_of, corridor_pair, observed_cost_bps, send_amount_basis, target_year. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "corridor_pair": {
        +    "type": "boolean"
        +  },
        +  "observed_cost_bps": {},
        +  "send_amount_basis": {
        +    "enum": [
        +      "USD_200",
        +      "USD_500"
        +    ],
        +    "type": "string"
        +  },
        +  "target_year": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_genius_reserve_disclosure3 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: assets, certifying_officers, registered_examiner_named. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "assets": {},
        +  "certifying_officers": {},
        +  "examiner_name": {},
        +  "issuer_type": {},
        +  "onchain_supply_check": {},
        +  "outstanding_tokens_reported": {
        +    "type": "number"
        +  },
        +  "prior_month": {},
        +  "registered_examiner_named": {
        +    "type": "boolean"
        +  },
        +  "report_month": {},
        +  "token_price": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_genius_reserve_disclosure_conformance3 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: attestation_present, examiner_registered. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "attestation_date": {},
        +  "attestation_present": {
        +    "type": "boolean"
        +  },
        +  "examiner_name": {},
        +  "examiner_registered": {
        +    "type": "boolean"
        +  },
        +  "onchain_supply_check": {},
        +  "outstanding_tokens_reported": {
        +    "type": "number"
        +  },
        +  "period_end_date": {},
        +  "report_period": {},
        +  "token_price": {
        +    "type": "number"
        +  },
        +  "total_reserves_usd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_gpai_code_conformance3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "provider": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_icm_quorum_forgery_risk3 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: message_class, min_colluding_floor, quorum_pct, source_l1_label, validator_weights. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "message_class": {},
        +  "min_colluding_floor": {},
        +  "quorum_pct": {},
        +  "source_l1_label": {},
        +  "validator_weights": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_ifrs17_risk_adjustment3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "risk_adjustment": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_iolta_three_way_reconciliation3 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: bank, client_ledgers, outstanding_items, reconciliation_tolerance_minor, statement_period, trust_ledger. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "bank": {},
        +  "client_ledgers": {
        +    "type": "array"
        +  },
        +  "outstanding_items": {
        +    "type": "array"
        +  },
        +  "reconciliation_tolerance_minor": {},
        +  "statement_period": {},
        +  "trust_ledger": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_irrbb_csrbb_scope3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "governance": {},
        +  "instruments": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_iso20022_pqc_readiness3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "hndl_priority_ref": {},
        +  "messaging": {},
        +  "pqc_algorithm": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_jwks_pinned_directory3 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: directory_jwks, pinned_digest. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "directory_jwks": {
        +    "type": "object"
        +  },
        +  "pinned_digest": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_lei_relationship_consistency3 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: relationships, subject_lei. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "relationships": {
        +    "type": "array"
        +  },
        +  "subject_lei": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_license_compatibility3 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: child_license, parent_license. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "child_license": {
        +    "type": "string"
        +  },
        +  "parent_license": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_linea_l2_finality_window3 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: asset_type, batch_submission_status, corridor_cutoff, l1_finalization_status, l2_block. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asset_type": {},
        +  "batch_submission_status": {},
        +  "corridor_cutoff": {},
        +  "l1_finalization_status": {},
        +  "l2_block": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_mcp_registry_entry3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entry": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_mica_register_presence3 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: register_type, entity_identifier, register_extract, retrieval_date. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "case_sensitive": {
        +    "type": "boolean"
        +  },
        +  "delimiter": {
        +    "type": "string"
        +  },
        +  "entity_identifier": {
        +    "type": "string"
        +  },
        +  "header_row": {
        +    "type": "boolean"
        +  },
        +  "match_column": {
        +    "type": "string|number|null"
        +  },
        +  "register_extract": {
        +    "type": "string"
        +  },
        +  "register_source_ref": {
        +    "type": "string"
        +  },
        +  "register_type": {
        +    "type": "string"
        +  },
        +  "retrieval_date": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_mica_reserve_disclosure3 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: declared_rules, disclosure_dates, reserve_components, rounding, tokens_in_circulation, window_end, window_start. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "declared_rules": {},
        +  "disclosure_dates": {
        +    "type": "array"
        +  },
        +  "disclosure_ref": {},
        +  "issuer_id": {},
        +  "reserve_components": {
        +    "type": "array"
        +  },
        +  "rounding": {},
        +  "rules_version": {},
        +  "token_type": {
        +    "enum": [
        +      "ART",
        +      "EMT"
        +    ],
        +    "type": "string"
        +  },
        +  "tokens_in_circulation": {},
        +  "window_end": {},
        +  "window_start": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_muni_arbitrage_spending_exception3 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: as_of_date, de_minimis_minor, elected_exception, expenditure_schedule, gross_proceeds_minor, issue_date, reasonable_retainage. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "de_minimis_minor": {},
        +  "elected_exception": {},
        +  "expenditure_schedule": {
        +    "type": "array"
        +  },
        +  "gross_proceeds_minor": {},
        +  "issue_date": {},
        +  "reasonable_retainage": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_nis2_art21_measures3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "measures": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_nway_balance_closure3 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: authoritative_system_id, closure_tolerance_minor, declared_differences, measure_label, systems. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "authoritative_system_id": {},
        +  "closure_tolerance_minor": {},
        +  "declared_differences": {
        +    "type": "array"
        +  },
        +  "measure_label": {},
        +  "systems": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_official_statement_completeness3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inputs": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_operator_exit_portability3 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: as_of, contractual_operator, data_categories, declared_components, dependencies, escrow_arrangements, notice_period_days, transition_assistance_terms. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "contractual_operator": {},
        +  "data_categories": {
        +    "type": "array"
        +  },
        +  "declared_components": {
        +    "type": "array"
        +  },
        +  "dependencies": {
        +    "type": "array"
        +  },
        +  "escrow_arrangements": {},
        +  "notice_period_days": {
        +    "type": "number"
        +  },
        +  "transition_assistance_terms": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_private_student_loan_disclosures3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inputs": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_producer_license_reciprocity3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "loa_codes": {},
        +  "resident_state": {},
        +  "target_states": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_purpose_code_requirement3 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: beneficiary_country, category_purpose_code, payment_amount_usd, purpose_code. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "beneficiary_country": {},
        +  "category_purpose_code": {},
        +  "payment_amount_usd": {
        +    "type": "number"
        +  },
        +  "purpose_code": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_qm_points_and_fees3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "loan_amount": {
        +    "type": "number"
        +  },
        +  "points_and_fees": {
        +    "type": "number"
        +  },
        +  "year": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_reg_e_remittance_disclosure3 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: amount_recipient_disclosed_cents, as_of, exchange_rate_disclosed_e6, send_amount_cents, total_fees_disclosed_cents. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amount_recipient_disclosed_cents": {},
        +  "as_of": {},
        +  "exchange_rate_disclosed_e6": {},
        +  "send_amount_cents": {},
        +  "total_fees_disclosed_cents": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_retail_installment_disclosures3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inputs": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_safeguarding_reconciliation3 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: as_of_date, component_breakdown, currency, reconciliation_type, relevant_funds_total, relevant_funds_total_minor_units, safeguarding_requirement_minor_units, safeguarding_resource_components, tolerance_minor_units. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "component_breakdown": {
        +    "type": "array"
        +  },
        +  "currency": {
        +    "type": "string"
        +  },
        +  "reconciliation_type": {},
        +  "relevant_funds_total": {},
        +  "relevant_funds_total_minor_units": {},
        +  "safeguarding_requirement_minor_units": {},
        +  "safeguarding_resource_components": {
        +    "type": "array"
        +  },
        +  "tolerance_minor_units": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_sb53_frontier_scope3 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: annual_revenue_usd, compute_flops. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annual_revenue_usd": {},
        +  "compute_flops": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_screening_list_coverage3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "config": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_securitization_risk_retention3 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: all_exposures_qrm_qualified, jurisdiction, retained_interest_hedged_or_sold, retainer_is_sole_purpose_entity, retention_method. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "all_exposures_qrm_qualified": {
        +    "type": "boolean"
        +  },
        +  "jurisdiction": {},
        +  "retained_amount_musd": {
        +    "type": "number"
        +  },
        +  "retained_interest_hedged_or_sold": {
        +    "type": "boolean"
        +  },
        +  "retainer_is_sole_purpose_entity": {
        +    "type": "boolean"
        +  },
        +  "retention_method": {},
        +  "total_securitized_exposure_musd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_sod_matrix3 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: assignments, conflict_ruleset, ruleset_version. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "assignments": {
        +    "type": "array"
        +  },
        +  "conflict_ruleset": {
        +    "type": "array"
        +  },
        +  "ruleset_version": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_ssi_conformance3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "ssi_records": {},
        +  "staleness_threshold_days": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_tokenized_collateral_eligibility3 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: asset_type, notional, currency. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asset_type": {
        +    "enum": [
        +      "ust",
        +      "agency_mbs",
        +      "ig_corp_bond",
        +      "equity",
        +      "tokenized_deposit",
        +      "stablecoin",
        +      "mmf_fund_share",
        +      "gilt",
        +      "eu_sovereign",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "currency": {
        +    "enum": [
        +      "USD",
        +      "EUR",
        +      "GBP",
        +      "JPY"
        +    ],
        +    "type": "string"
        +  },
        +  "custody_linkage": {
        +    "enum": [
        +      "dtc_custodied",
        +      "fed_eligible",
        +      "third_party_custodian",
        +      "self_custodied"
        +    ],
        +    "type": "string"
        +  },
        +  "notional": {
        +    "type": "number"
        +  },
        +  "platform": {
        +    "enum": [
        +      "canton_dtc",
        +      "canton_standalone",
        +      "other_dlt",
        +      "traditional"
        +    ],
        +    "type": "string"
        +  },
        +  "transfer_restrictions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_tsv_stoppage_concurrency3 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: stoppages, tsv_trades, tsv_halt_records, participant_notices. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "concurrency_tolerance_ms": {
        +    "type": "integer"
        +  },
        +  "participant_notices": {
        +    "type": "array"
        +  },
        +  "stoppages": {
        +    "type": "array"
        +  },
        +  "tsv_halt_records": {
        +    "type": "array"
        +  },
        +  "tsv_trades": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_tsv_tier_cap_ladder3 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: tsv_id, stocks, as_of_date. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "affiliated_tsv_ids": {
        +    "type": "array"
        +  },
        +  "as_of_date": {
        +    "type": "string"
        +  },
        +  "daily_volume": {
        +    "type": "array"
        +  },
        +  "prior_breaches": {
        +    "type": "array"
        +  },
        +  "stocks": {
        +    "type": "array"
        +  },
        +  "symbols_traded": {
        +    "type": "array"
        +  },
        +  "tsv_id": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_v4_hook_fee_conformance3 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: protocol_fee, pool_fee, declared_lp_fee_bounds, declared_hook_charge, swaps. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "declared_hook_charge": {
        +    "type": "object"
        +  },
        +  "declared_lp_fee_bounds": {
        +    "type": "object"
        +  },
        +  "declared_total_fee_cap_pips": {
        +    "type": "integer"
        +  },
        +  "pool_fee": {
        +    "type": "integer"
        +  },
        +  "protocol_fee": {
        +    "type": "integer"
        +  },
        +  "swaps": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_webbotauth_nonce_replay3 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: nonce, created, expires, now_unix. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "created": {
        +    "type": "number"
        +  },
        +  "expires": {
        +    "type": "number"
        +  },
        +  "max_age_s": {
        +    "type": "number"
        +  },
        +  "nonce": {
        +    "type": "string"
        +  },
        +  "nonce_already_used": {
        +    "type": "boolean"
        +  },
        +  "now_unix": {
        +    "type": "number"
        +  },
        +  "seen_nonces": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcheck_x402_domain_nonce_window3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chainId": {
        +    "type": "number"
        +  },
        +  "expected_chain_id": {
        +    "type": "number"
        +  },
        +  "expected_verifying_contract": {
        +    "type": "string"
        +  },
        +  "nonce": {
        +    "type": "string"
        +  },
        +  "nonce_already_used": {
        +    "type": "boolean"
        +  },
        +  "now_unix": {
        +    "type": "number"
        +  },
        +  "validAfter": {
        +    "type": "number"
        +  },
        +  "validBefore": {
        +    "type": "number"
        +  },
        +  "verifyingContract": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedchoose_cc_license3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "allow_adaptations": {},
        +  "allow_commercial": {},
        +  "waive_all_rights": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_agentic_ai_risk3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agent": {},
        +  "downstream_highrisk": {},
        +  "model": {},
        +  "obligations": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_ai_system_governance3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "system": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_annex3_decisioning_obligations3 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: annex3_category, db_registered, deployer_role, fria_completed, has_human_oversight, is_high_risk, logging_implemented. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annex3_category": {},
        +  "db_registered": {},
        +  "deployer_role": {},
        +  "fria_completed": {},
        +  "has_human_oversight": {},
        +  "is_high_risk": {},
        +  "logging_implemented": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_avax_permissioning_controls3 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: application_controls, precompiles, validator_manager_mode. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "application_controls": {},
        +  "precompiles": {},
        +  "validator_manager_mode": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_blockchain_quantum_risk3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asset_type": {},
        +  "chain": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_bold_challenge_finality3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "assertion_created": {},
        +  "assertion_created_timestamp": {},
        +  "batch_posted_to_l1": {},
        +  "challenge_window_seconds": {},
        +  "current_time": {},
        +  "finality_claim": {},
        +  "l2_inclusion_timestamp": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_carf_reportable3 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: due_diligence_rules, judgment_owner_role, records, reportable_residence_jurisdictions, reportable_transaction_classes, reporting_jurisdiction, reporting_period, schema_version, suppressed_rule_codes. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "due_diligence_rules": {
        +    "type": "array"
        +  },
        +  "judgment_owner_role": {},
        +  "records": {
        +    "type": "array"
        +  },
        +  "reportable_residence_jurisdictions": {},
        +  "reportable_transaction_classes": {},
        +  "reporting_jurisdiction": {},
        +  "reporting_period": {},
        +  "schema_version": {},
        +  "suppressed_rule_codes": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_codm_expense_significance3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "assessed_significant": {
        +    "type": "boolean"
        +  },
        +  "easily_computable_from_codm_information": {
        +    "type": "boolean"
        +  },
        +  "included_in_segment_profit_measure": {
        +    "type": "boolean"
        +  },
        +  "regularly_provided_to_codm": {
        +    "type": "boolean"
        +  },
        +  "specified_item_50_22": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_digital_asset_regulatory3 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: asset_name, asset_type, issuer_jurisdiction. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asset_name": {
        +    "type": "string"
        +  },
        +  "asset_type": {
        +    "enum": [
        +      "tokenized_security",
        +      "stablecoin_usd",
        +      "stablecoin_eur",
        +      "deposit_token",
        +      "utility_token",
        +      "nft_financial",
        +      "cbdc",
        +      "crypto_native",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "dlt_type": {
        +    "enum": [
        +      "canton",
        +      "ethereum",
        +      "other_permissioned",
        +      "other_public",
        +      "none"
        +    ],
        +    "type": "string"
        +  },
        +  "economic_rights": {
        +    "type": "boolean"
        +  },
        +  "issuer_jurisdiction": {
        +    "enum": [
        +      "us",
        +      "eu",
        +      "uk",
        +      "sg",
        +      "hk",
        +      "jp",
        +      "ch",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "issuer_type": {
        +    "enum": [
        +      "bank",
        +      "payment_institution",
        +      "investment_firm",
        +      "fund",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "market_cap_eur": {
        +    "type": "number"
        +  },
        +  "on_dlt": {
        +    "type": "boolean"
        +  },
        +  "redeemable_par": {
        +    "type": "boolean"
        +  },
        +  "transfer_value": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_dora_ict_incident_and_clock_deadlines3 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: classification_at, clients_affected_pct, critical_services_affected, data_losses, duration_minutes, economic_impact_amount, geographical_spread_countries_count, incident_id, reputational_impact. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "classification_at": {},
        +  "clients_affected_pct": {},
        +  "critical_services_affected": {
        +    "type": "boolean"
        +  },
        +  "data_losses": {
        +    "type": "boolean"
        +  },
        +  "duration_minutes": {},
        +  "economic_impact_amount": {},
        +  "geographical_spread_countries_count": {},
        +  "incident_id": {},
        +  "reputational_impact": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_dora_incident3 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: detection_datetime, clients_affected, total_clients, outage_duration_minutes. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "clients_affected": {
        +    "type": "integer"
        +  },
        +  "critical_function_affected": {
        +    "type": "boolean"
        +  },
        +  "cross_border_payment": {
        +    "type": "boolean"
        +  },
        +  "data_loss_occurred": {
        +    "type": "boolean"
        +  },
        +  "detection_datetime": {
        +    "type": "string"
        +  },
        +  "eu_member_states_affected": {
        +    "type": "integer"
        +  },
        +  "incident_type": {
        +    "enum": [
        +      "ict_outage",
        +      "cyber_attack",
        +      "data_breach",
        +      "third_party_failure",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "outage_duration_minutes": {
        +    "type": "integer"
        +  },
        +  "total_clients": {
        +    "type": "integer"
        +  },
        +  "transaction_value_eur_millions": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_eccn_dual_use3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "product": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_emir3_active_account_status3 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: active_account, as_of_date, clearing_threshold_exceeded, counterparty_ref, notional_clearing_volume_minor_units, reference_period_months, reporting_submission_date, subcategory_designations, trades. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "active_account": {},
        +  "as_of_date": {},
        +  "clearing_threshold_exceeded": {},
        +  "counterparty_ref": {},
        +  "notional_clearing_volume_minor_units": {},
        +  "reference_period_months": {
        +    "type": "number"
        +  },
        +  "reporting_submission_date": {},
        +  "subcategory_designations": {},
        +  "trades": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_emir3_simm_approval_scope3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "competent_authority_declared": {},
        +  "counterparty_type": {},
        +  "model_status": {},
        +  "model_type": {},
        +  "subject_to_bilateral_im": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_erc1967_proxy_slot3 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: declared_slot, storage_value. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "declared_slot": {},
        +  "storage_value": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_eudr_commodity_scope3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entity": {},
        +  "hs_code": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_ifrs17_measurement_model3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "contract": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_ledger_consensus_finality3 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: as_of_ts, chain_label, claimed_outcome, claimed_tier, continuous_history_ok, externalized, highest_validated_ledger, included_in_ledger, issuer_clawback_enabled, last_ledger_sequence, ledger_validated, quorum_slice_trust_ok, required_tier, result_class, settlement_model, submitted_at_ledger, time_bounds_max. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_ts": {},
        +  "chain_label": {},
        +  "claimed_outcome": {},
        +  "claimed_tier": {},
        +  "continuous_history_ok": {},
        +  "externalized": {},
        +  "highest_validated_ledger": {},
        +  "included_in_ledger": {},
        +  "issuer_clawback_enabled": {},
        +  "last_ledger_sequence": {},
        +  "ledger_validated": {},
        +  "quorum_slice_trust_ok": {},
        +  "required_tier": {},
        +  "result_class": {},
        +  "settlement_model": {},
        +  "submitted_at_ledger": {},
        +  "time_bounds_max": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_mla_charge_inclusion3 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: charge_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "charge_type": {
        +    "type": "string"
        +  },
        +  "is_credit_card_account": {
        +    "type": "boolean"
        +  },
        +  "short_term_exception_claimed": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_nis2_entity3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annual_turnover_eur": {},
        +  "employee_count": {},
        +  "is_dns_provider": {},
        +  "is_public_electronic_comms_network": {},
        +  "is_qualified_trust_service_provider": {},
        +  "sector_code": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_qm_apr_apor_spread3 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: is_manufactured_housing, lien_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "apor_pct": {
        +    "type": "number"
        +  },
        +  "apr_pct": {
        +    "type": "number"
        +  },
        +  "is_manufactured_housing": {
        +    "type": "boolean"
        +  },
        +  "lien_type": {},
        +  "loan_amount": {
        +    "type": "number"
        +  },
        +  "year": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_rate_rec_5pct_threshold3 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: reconciling_item_amount, pretax_income, statutory_rate_pct. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entity_is_public_business_entity": {
        +    "type": "boolean"
        +  },
        +  "pretax_income": {
        +    "type": "number"
        +  },
        +  "reconciling_item_amount": {
        +    "type": "number"
        +  },
        +  "reconciling_item_category": {
        +    "type": "string"
        +  },
        +  "statutory_rate_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_redline_round_changes3 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: document_id, prior_round_digest, round, segments. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "document_id": {
        +    "type": "string"
        +  },
        +  "prior_round_digest": {
        +    "type": "string"
        +  },
        +  "round": {},
        +  "segments": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_reward_flow_related_party3 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: as_of, consortium_member_refs, currency, issuer_ref, issuer_ultimate_parent_ref, materiality_threshold, ownership_map, period_ref, recipients, ruleset_version. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "consortium_member_refs": {
        +    "type": "array"
        +  },
        +  "currency": {},
        +  "issuer_ref": {},
        +  "issuer_ultimate_parent_ref": {},
        +  "materiality_threshold": {},
        +  "ownership_map": {
        +    "type": "array"
        +  },
        +  "period_ref": {},
        +  "recipients": {
        +    "type": "array"
        +  },
        +  "ruleset_version": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_safeguarding_method3 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: as_of_date, relevant_funds_high_water_minor_units, streams, weeks_observed. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "relevant_funds_high_water_minor_units": {},
        +  "streams": {
        +    "type": "array"
        +  },
        +  "weeks_observed": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_sco60_exposure3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "position": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_sco60_exposure_v23 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: bank_tier1_capital, group2_positions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "bank_tier1_capital": {
        +    "type": "integer"
        +  },
        +  "group2_positions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_settlement_asset_finality3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "finality_designation": {},
        +  "governing_law": {},
        +  "issuer": {},
        +  "jurisdiction": {},
        +  "settlement_asset": {},
        +  "singleness_test": {},
        +  "transfer_mechanism": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_settlement_finality3 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: as_of_ts, assertion_created_at, batch_committed_at, batch_posted, chain_label, challenge_window_seconds, claimed_tier, expected_proof_cadence_seconds, included_in_block, l1_finality_seconds, l1_finalized, proof_accepted, proof_submitted_at, quorum_committed, quorum_pct_of_stake, required_tier, settlement_model. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_ts": {},
        +  "assertion_created_at": {},
        +  "batch_committed_at": {},
        +  "batch_posted": {},
        +  "chain_label": {},
        +  "challenge_window_seconds": {},
        +  "claimed_tier": {},
        +  "expected_proof_cadence_seconds": {},
        +  "included_in_block": {},
        +  "l1_finality_seconds": {},
        +  "l1_finalized": {},
        +  "proof_accepted": {},
        +  "proof_submitted_at": {},
        +  "quorum_committed": {},
        +  "quorum_pct_of_stake": {},
        +  "required_tier": {},
        +  "settlement_model": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedclassify_t1_posttrade_timing3 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: at_risk_margin_seconds, baseline_cycle, steps, target_cycle, time_zone_offset_minutes, trade_ref, trade_timestamp, venue_cutoff. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "at_risk_margin_seconds": {},
        +  "baseline_cycle": {
        +    "type": "string"
        +  },
        +  "steps": {
        +    "type": "array"
        +  },
        +  "target_cycle": {
        +    "type": "string"
        +  },
        +  "time_zone_offset_minutes": {},
        +  "trade_ref": {},
        +  "trade_timestamp": {},
        +  "venue_cutoff": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompare_agentic_rail_protocols3 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: protocols. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "protocols": {
        +    "type": "array"
        +  },
        +  "scenario": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompare_basel_2023_vs_20263 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: business_indicator, exposures. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "business_indicator": {},
        +  "exposures": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompare_corridor_cost3 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: from_country, fx_rate_mid, fx_rate_used, provider_fee, send_amount, service_name, to_country. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "from_country": {
        +    "type": "string"
        +  },
        +  "fx_rate_mid": {},
        +  "fx_rate_used": {},
        +  "provider_fee": {},
        +  "send_amount": {},
        +  "service_name": {},
        +  "to_country": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompare_cross_ccp_pqd_fields3 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: entity_a, entity_b, threshold. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entity_a": {},
        +  "entity_b": {},
        +  "fields": {
        +    "type": "array"
        +  },
        +  "threshold": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompare_model_outcome_analysis3 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: error_threshold_pct, max_breach_rate_pct, observations. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "error_threshold_pct": {},
        +  "max_breach_rate_pct": {},
        +  "observations": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompare_pension_lump_sum_annuity3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "election": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompare_receivables_finance_economics3 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: currency, factoring_advance_rate_pct, factoring_finance_charge_pct, factoring_service_fee_pct, forfaiting_arrangement_fee_pct, forfaiting_discount_rate_pct, id_advance_rate_pct, id_discount_charge_pct, id_service_fee_pct, invoice_value, nr_factoring_advance_rate_pct, nr_factoring_finance_charge_pct, nr_factoring_service_fee_pct, num_debtors, obligor_quality, tenor_days. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "currency": {},
        +  "factoring_advance_rate_pct": {},
        +  "factoring_finance_charge_pct": {},
        +  "factoring_service_fee_pct": {},
        +  "forfaiting_arrangement_fee_pct": {},
        +  "forfaiting_discount_rate_pct": {},
        +  "id_advance_rate_pct": {},
        +  "id_discount_charge_pct": {},
        +  "id_service_fee_pct": {},
        +  "invoice_value": {},
        +  "nr_factoring_advance_rate_pct": {},
        +  "nr_factoring_finance_charge_pct": {},
        +  "nr_factoring_service_fee_pct": {},
        +  "num_debtors": {},
        +  "obligor_quality": {},
        +  "tenor_days": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompare_rights_matrix3 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: license_ref_a, license_ref_b. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "license_ref_a": {},
        +  "license_ref_b": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompile_nav_error_evidence_pack3 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: affected_period, correction, detection_date, fund_id, materiality_ref, nav_ref, notification, supplementary_receipts. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "affected_period": {},
        +  "correction": {},
        +  "detection_date": {},
        +  "fund_id": {},
        +  "materiality_ref": {},
        +  "nav_ref": {},
        +  "notification": {},
        +  "supplementary_receipts": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompile_rebalance_evidence_pack3 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: current, prior. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "current": {},
        +  "index_id": {},
        +  "prior": {},
        +  "rebalance_date": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompile_work_mandate3 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: mandate. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "mandate": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompose_ap2_prompt3 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: task, audience. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "artifact_json": {
        +    "type": "string"
        +  },
        +  "audience": {
        +    "enum": [
        +      "board",
        +      "risk_committee",
        +      "regulator",
        +      "quant",
        +      "ops"
        +    ],
        +    "type": "string"
        +  },
        +  "include_citations": {
        +    "type": "boolean"
        +  },
        +  "task": {
        +    "enum": [
        +      "board_memo",
        +      "regulatory_submission",
        +      "risk_memo",
        +      "remediation_plan",
        +      "plain_english_summary",
        +      "period_comparison",
        +      "top_3_risks"
        +    ],
        +    "type": "string"
        +  },
        +  "tone": {
        +    "enum": [
        +      "formal",
        +      "technical",
        +      "plain"
        +    ],
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompose_control_test_evidence3 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: control_id, population_hash, reporting_period, sample, test_results, tester_id, tolerable_exception_count. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "control_id": {},
        +  "population_hash": {},
        +  "reporting_period": {},
        +  "sample": {
        +    "type": "array"
        +  },
        +  "test_results": {
        +    "type": "array"
        +  },
        +  "tester_id": {},
        +  "tolerable_exception_count": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompose_eval_attestation_receipt3 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: eval_log, mandate_reference. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "eval_log": {},
        +  "mandate_reference": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompose_globe_gir3 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: fiscal_year, gir_schema_version, jurisdictions, mne_group_name. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "fiscal_year": {},
        +  "gir_schema_version": {},
        +  "jurisdictions": {
        +    "type": "array"
        +  },
        +  "mne_group_name": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompose_workpaper_bundle3 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: exceptions, kernel_artifacts, partner, population_hash, preparer, procedure_id, reviewer. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "exceptions": {},
        +  "kernel_artifacts": {},
        +  "partner": {},
        +  "population_hash": {},
        +  "preparer": {},
        +  "procedure_id": {},
        +  "reviewer": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_15c3_3_reserve3 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: credit_items, debit_items, pab_variant. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "credit_items": {},
        +  "debit_items": {},
        +  "pab_variant": {
        +    "type": "boolean"
        +  },
        +  "reserve_account_balance_musd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_aca_affordability_safe_harbor3 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: fpl_mainland_annual, hourly_rate, lowest_cost_self_only_monthly_premium, tax_year, w2_box1_wages_annual. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "fpl_mainland_annual": {},
        +  "hourly_rate": {},
        +  "lowest_cost_self_only_monthly_premium": {},
        +  "tax_year": {},
        +  "w2_box1_wages_annual": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_annuity3 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: due, solve_for. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "due": {
        +    "type": "boolean"
        +  },
        +  "fv": {
        +    "type": "number"
        +  },
        +  "nper": {
        +    "type": "number"
        +  },
        +  "pmt": {
        +    "type": "number"
        +  },
        +  "pv": {
        +    "type": "number"
        +  },
        +  "rate_pct": {
        +    "type": "number"
        +  },
        +  "solve_for": {
        +    "enum": [
        +      "fv",
        +      "pmt",
        +      "pv"
        +    ],
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_asset_liability_coverage3 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: assets, liabilities. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "assets": {},
        +  "liabilities": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_authzen_conformance_fixture3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "requests": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_basel_haircut_adjusted_exposure3 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: collateral_items, exposure, haircut_table, haircut_table_version. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "collateral_items": {},
        +  "exposure": {},
        +  "fx_haircut_pct": {
        +    "type": "number"
        +  },
        +  "haircut_table": {},
        +  "haircut_table_version": {},
        +  "holding_period_days": {
        +    "type": "number"
        +  },
        +  "min_haircut_floor_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_bond_duration3 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: day_count_convention. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "coupon_rate_pct": {
        +    "type": "number"
        +  },
        +  "day_count_convention": {},
        +  "face_value": {
        +    "type": "number"
        +  },
        +  "periods_per_year": {
        +    "type": "number"
        +  },
        +  "years_to_maturity": {
        +    "type": "number"
        +  },
        +  "ytm_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_breakeven3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "current_units": {
        +    "type": "number"
        +  },
        +  "fixed_costs": {
        +    "type": "number"
        +  },
        +  "price_per_unit": {
        +    "type": "number"
        +  },
        +  "variable_cost_per_unit": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_canton_app_reward_estimate3 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: protocol_version. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "app_reward_pool_share": {
        +    "type": "number"
        +  },
        +  "confirmed_envelope_bytes": {
        +    "type": "number"
        +  },
        +  "protocol_version": {},
        +  "round_total_envelope_bytes": {
        +    "type": "number"
        +  },
        +  "round_total_mint_cc": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_canton_traffic_cost3 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: is_transfer_preapproval, protocol_version. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cc_usd_price": {
        +    "type": "number"
        +  },
        +  "envelope_mb": {
        +    "type": "number"
        +  },
        +  "is_transfer_preapproval": {
        +    "type": "boolean"
        +  },
        +  "preapproval_age_days": {
        +    "type": "number"
        +  },
        +  "protocol_version": {},
        +  "rate_usd_per_mb": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_cdd_ownership_25pct3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "natural_persons": {},
        +  "ownership_tiers": {},
        +  "target_entity_id": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_cfpb_1071_coverage3 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: required_sblar_fields, sblar_records. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "originations_year1_count": {
        +    "type": "number"
        +  },
        +  "originations_year2_count": {
        +    "type": "number"
        +  },
        +  "required_sblar_fields": {},
        +  "sblar_records": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_convexity3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "coupon_rate_pct": {
        +    "type": "number"
        +  },
        +  "face_value": {
        +    "type": "number"
        +  },
        +  "periods_per_year": {
        +    "type": "number"
        +  },
        +  "years_to_maturity": {
        +    "type": "number"
        +  },
        +  "yield_shock_bp": {
        +    "type": "number"
        +  },
        +  "ytm_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_counterparty_limit_check3 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: counterparties. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "counterparties": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_cross_border_fees3 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: dest_country, origin_country. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "dest_country": {},
        +  "doc_cost": {
        +    "type": "number"
        +  },
        +  "fx_spread_bps": {
        +    "type": "number"
        +  },
        +  "invoice_amount": {
        +    "type": "number"
        +  },
        +  "method_fee": {
        +    "type": "number"
        +  },
        +  "origin_country": {},
        +  "recon_cost": {
        +    "type": "number"
        +  },
        +  "vat_rate": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_custody_segregation_ratio3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "customer_claims": {
        +    "type": "array"
        +  },
        +  "over_segregation_ceiling": {
        +    "type": "number"
        +  },
        +  "segregated_assets": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_cyber_incident_notification_clock3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "banking_notification_completed_at": {},
        +  "determination_at": {},
        +  "determination_evidence_hash": {},
        +  "evaluated_at": {},
        +  "incident_id": {},
        +  "is_bank_holding_company": {},
        +  "is_national_bank": {},
        +  "is_state_member_bank": {},
        +  "nydfs_covered_entity": {},
        +  "nydfs_notification_completed_at": {},
        +  "sec_8k_filed_at": {},
        +  "sec_reporting_company": {},
        +  "sec_rescission_petition_pending": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_deterministic_amortization_schedule3 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: principal, convention, periods. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annual_rate": {
        +    "type": "number"
        +  },
        +  "apply_final_plug": {
        +    "type": "boolean"
        +  },
        +  "convention": {
        +    "enum": [
        +      "UNIT_PERIOD",
        +      "30_360_US",
        +      "30E_360",
        +      "30E_360_ISDA",
        +      "ACT_360",
        +      "ACT_365F",
        +      "ACT_ACT_ISDA"
        +    ],
        +    "type": "string"
        +  },
        +  "max_plug": {
        +    "type": "number"
        +  },
        +  "periods": {
        +    "type": "array"
        +  },
        +  "periods_per_year": {
        +    "type": "number"
        +  },
        +  "principal": {
        +    "type": "number"
        +  },
        +  "remeasurement": {
        +    "type": "object"
        +  },
        +  "solve_rate": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_discount_window_capacity3 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: collateral_positions, margin_table_version, runnable_liabilities. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "collateral_positions": {},
        +  "coverage_target_pct": {
        +    "type": "number"
        +  },
        +  "margin_table_version": {},
        +  "runnable_liabilities": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_disparity_metrics3 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: group_a_label, group_b_label. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "group_a_approvals": {
        +    "type": "number"
        +  },
        +  "group_a_label": {},
        +  "group_a_total": {
        +    "type": "number"
        +  },
        +  "group_b_approvals": {
        +    "type": "number"
        +  },
        +  "group_b_label": {},
        +  "group_b_total": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_dora_roi_gleif_preflight_pack3 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: attestation, counterparties, dora_roi_artifact. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "attestation": {},
        +  "counterparties": {
        +    "type": "array"
        +  },
        +  "dora_roi_artifact": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_dscr3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amortization_musd": {
        +    "type": "number"
        +  },
        +  "capex_musd": {
        +    "type": "number"
        +  },
        +  "cash_musd": {
        +    "type": "number"
        +  },
        +  "ebit_musd": {
        +    "type": "number"
        +  },
        +  "ebitda_musd": {
        +    "type": "number"
        +  },
        +  "interest_musd": {
        +    "type": "number"
        +  },
        +  "leases_musd": {
        +    "type": "number"
        +  },
        +  "principal_musd": {
        +    "type": "number"
        +  },
        +  "revolver_draw_musd": {
        +    "type": "number"
        +  },
        +  "taxes_musd": {
        +    "type": "number"
        +  },
        +  "total_debt_musd": {
        +    "type": "number"
        +  },
        +  "working_capital_change_musd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_dti_ratios3 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: underwriting_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "gross_monthly_income": {
        +    "type": "number"
        +  },
        +  "housing_payment_pitia": {
        +    "type": "number"
        +  },
        +  "other_monthly_debts": {
        +    "type": "number"
        +  },
        +  "underwriting_type": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_dv013 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "basis_points": {
        +    "type": "number"
        +  },
        +  "coupon_rate_pct": {
        +    "type": "number"
        +  },
        +  "face_value": {
        +    "type": "number"
        +  },
        +  "periods_per_year": {
        +    "type": "number"
        +  },
        +  "years_to_maturity": {
        +    "type": "number"
        +  },
        +  "ytm_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_escrow_analysis3 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: cushion_fraction, disbursements. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cushion_fraction": {
        +    "type": "number"
        +  },
        +  "disbursements": {},
        +  "monthly_escrow_payment": {
        +    "type": "number"
        +  },
        +  "starting_balance": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_esrp_exposure3 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: fulltime_count, offered_mec_count, ptc_employee_count, tax_year. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "fulltime_count": {},
        +  "offered_mec_count": {},
        +  "ptc_employee_count": {},
        +  "tax_year": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_experience_mod3 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: claims. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "ballast_value": {
        +    "type": "number"
        +  },
        +  "claims": {
        +    "type": "array"
        +  },
        +  "expected_losses": {
        +    "type": "number"
        +  },
        +  "expected_primary_losses": {
        +    "type": "number"
        +  },
        +  "split_point": {
        +    "type": "number"
        +  },
        +  "weighting_value": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_fdic_assessment_rate3 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: rate_brackets, rate_cap_bp, rate_schedule_version. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "assessment_base_musd": {
        +    "type": "number"
        +  },
        +  "brokered_deposit_adjustment_bp": {
        +    "type": "number"
        +  },
        +  "rate_brackets": {},
        +  "rate_cap_bp": {
        +    "type": "number"
        +  },
        +  "rate_floor_bp": {
        +    "type": "number"
        +  },
        +  "rate_schedule_version": {},
        +  "total_score": {
        +    "type": "number"
        +  },
        +  "unsecured_debt_adjustment_bp": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_federal_withholding3 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: filing_status, pay_frequency, tax_year. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "filing_status": {},
        +  "gross_wages_per_period": {
        +    "type": "number"
        +  },
        +  "pay_frequency": {},
        +  "step3_dependents_credit_annual": {
        +    "type": "number"
        +  },
        +  "step4a_other_income_annual": {
        +    "type": "number"
        +  },
        +  "step4b_deductions_annual": {
        +    "type": "number"
        +  },
        +  "step4c_extra_withholding_per_period": {
        +    "type": "number"
        +  },
        +  "tax_year": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_fha_mip_eligibility3 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: loan_purpose. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "back_end_dti_pct": {
        +    "type": "number"
        +  },
        +  "base_loan_amount": {
        +    "type": "number"
        +  },
        +  "fico_score": {
        +    "type": "number"
        +  },
        +  "front_end_dti_pct": {
        +    "type": "number"
        +  },
        +  "loan_purpose": {},
        +  "ltv_pct": {
        +    "type": "number"
        +  },
        +  "term_years": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_flsa_regular_rate3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "discretionary_bonus_excluded": {
        +    "type": "number"
        +  },
        +  "hourly_rate": {
        +    "type": "number"
        +  },
        +  "hours_worked_week": {
        +    "type": "number"
        +  },
        +  "nondiscretionary_bonus_amount": {
        +    "type": "number"
        +  },
        +  "other_includable_pay": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_forecast_accuracy_score3 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: forecasts. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "forecasts": {
        +    "type": "array"
        +  },
        +  "reference_probability": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_fr2052a_inflow_outflow_classification3 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: boundary_table_version, bucket_boundaries, rows. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "boundary_table_version": {},
        +  "bucket_boundaries": {},
        +  "rows": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_fund_expense_ratios3 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: average_net_assets, gross_expense_components, rounding, waivers. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "average_net_assets": {},
        +  "fund_id": {},
        +  "gross_expense_components": {
        +    "type": "array"
        +  },
        +  "period_end": {},
        +  "period_start": {},
        +  "rounding": {},
        +  "waivers": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_fx_netting_positions3 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: positions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "positions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_globe_jurisdictional_etr3 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: aggregate_deferred_tax_adjustment, de_minimis_election, entities, jurisdiction_name, minimum_rate, stock_based_comp_election. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aggregate_deferred_tax_adjustment": {
        +    "type": "boolean"
        +  },
        +  "de_minimis_election": {
        +    "type": "boolean"
        +  },
        +  "entities": {
        +    "type": "array"
        +  },
        +  "jurisdiction_name": {},
        +  "minimum_rate": {
        +    "type": "number"
        +  },
        +  "stock_based_comp_election": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_globe_sbie_topup3 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: globe_income, payroll_costs, policy_rate_table, qdmtt_paid, tangible_asset_carrying_value, target_year, top_up_tax_percentage. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "globe_income": {},
        +  "payroll_costs": {},
        +  "policy_rate_table": {
        +    "type": "array"
        +  },
        +  "qdmtt_paid": {},
        +  "tangible_asset_carrying_value": {},
        +  "target_year": {},
        +  "top_up_tax_percentage": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_globe_topup_tax3 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: central_record_sbs, fy, jurisdictions, parent_hq, sbs_election. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "central_record_sbs": {
        +    "type": "array"
        +  },
        +  "fy": {
        +    "type": "number"
        +  },
        +  "jurisdictions": {
        +    "type": "array"
        +  },
        +  "parent_hq": {},
        +  "sbs_election": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_gross_to_net3 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: tax_year. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "federal_withholding_per_period": {
        +    "type": "number"
        +  },
        +  "gross_wages_per_period": {
        +    "type": "number"
        +  },
        +  "post_tax_other_deductions": {
        +    "type": "number"
        +  },
        +  "pretax_reduces_fica_and_fit": {
        +    "type": "number"
        +  },
        +  "tax_year": {},
        +  "ytd_fica_wages_before_period": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_hmda_rate_spread3 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: lien_type, lock_date, product_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "apor_pct": {
        +    "type": "number"
        +  },
        +  "apr_pct": {
        +    "type": "number"
        +  },
        +  "lien_type": {},
        +  "lock_date": {},
        +  "product_type": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_identity_proofing_assurance_level3 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: as_of, declared_target_level, evidence_items, level_definition. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "declared_target_level": {},
        +  "evidence_items": {},
        +  "level_definition": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_index_weights3 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: constituents_ref, inputs. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "constituents_ref": {},
        +  "index_id": {},
        +  "inputs": {
        +    "type": "array"
        +  },
        +  "weighting_methodology": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_intraday_liquidity_monitoring3 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: available_intraday_sources, time_specific_obligations, transactions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "available_intraday_sources": {},
        +  "start_of_day_available_musd": {
        +    "type": "number"
        +  },
        +  "time_specific_obligations": {},
        +  "transactions": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_ipfs_cid3 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: codec, text. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "codec": {},
        +  "text": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_irr3 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: cash_flows, tolerance. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "bracket_hi": {
        +    "type": "number"
        +  },
        +  "bracket_lo": {
        +    "type": "number"
        +  },
        +  "cash_flows": {
        +    "type": "array"
        +  },
        +  "max_iterations": {
        +    "type": "number"
        +  },
        +  "tolerance": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_isa530_audit_sampling_mus3 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: method. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amounts": {
        +    "type": "array"
        +  },
        +  "book_value": {
        +    "type": "number"
        +  },
        +  "confidence_factor": {
        +    "type": "number"
        +  },
        +  "expected_misstatement": {
        +    "type": "number"
        +  },
        +  "method": {
        +    "enum": [
        +      "monetary_unit_sampling",
        +      "misstatement_projection",
        +      "benford_screen"
        +    ],
        +    "type": "string"
        +  },
        +  "performance_materiality": {
        +    "type": "number"
        +  },
        +  "sampled_items": {
        +    "type": "array"
        +  },
        +  "sampling_interval": {
        +    "type": "integer"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_large_exposures_limit3 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: caller_is_gsib, counterparties. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "caller_is_gsib": {
        +    "type": "boolean"
        +  },
        +  "counterparties": {},
        +  "tier1_capital_musd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_lcm_rate_derivation3 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: complement_loss_cost, credibility_z, current_rate, fixed_expense_pct, lae_pct, profit_pct, pure_loss_cost, variable_exp_pct. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "complement_loss_cost": {},
        +  "credibility_z": {},
        +  "current_rate": {},
        +  "fixed_expense_pct": {},
        +  "lae_pct": {},
        +  "profit_pct": {},
        +  "pure_loss_cost": {},
        +  "variable_exp_pct": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_lcr_nsfr_leverage3 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: lcr, leverage, nsfr. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "lcr": {},
        +  "leverage": {},
        +  "nsfr": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_llpa_stack3 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: first_time_buyer, loan_purpose, occupancy_type, property_type, subordinate_financing. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "ami_pct": {
        +    "type": "number"
        +  },
        +  "fico_score": {
        +    "type": "number"
        +  },
        +  "first_time_buyer": {
        +    "type": "boolean"
        +  },
        +  "loan_purpose": {},
        +  "ltv_pct": {
        +    "type": "number"
        +  },
        +  "occupancy_type": {},
        +  "property_type": {},
        +  "subordinate_financing": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_loan_servicing_waterfall_recompute3 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: application_order, bucket_balances, payment_amount. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "application_order": {
        +    "type": "array"
        +  },
        +  "bucket_balances": {
        +    "type": "object"
        +  },
        +  "core_applied": {
        +    "type": "object"
        +  },
        +  "payment_amount": {
        +    "type": "integer"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_ltv_ratios3 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: transaction_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "appraised_value": {
        +    "type": "number"
        +  },
        +  "first_lien_amount": {
        +    "type": "number"
        +  },
        +  "heloc_credit_limit": {
        +    "type": "number"
        +  },
        +  "sales_price": {
        +    "type": "number"
        +  },
        +  "subordinate_lien_amount": {
        +    "type": "number"
        +  },
        +  "transaction_type": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_mla_mapr3 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: ancillary_product_fee_total, application_fee, application_fee_once_in_rolling_12_months, bona_fide_fee_claimed_total, credit_class, credit_insurance_premium_total, creditor_is_fcu_or_idi, debt_cancellation_fee_total, debt_suspension_fee_total, finance_charge_total, is_credit_card, is_short_term_small_amount_loan, loan_amount, participation_fee_annual, payment_amount, payment_structure. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "ancillary_product_fee_total": {},
        +  "application_fee": {},
        +  "application_fee_once_in_rolling_12_months": {
        +    "type": "boolean"
        +  },
        +  "bona_fide_fee_claimed_total": {},
        +  "credit_class": {},
        +  "credit_insurance_premium_total": {},
        +  "creditor_is_fcu_or_idi": {
        +    "type": "boolean"
        +  },
        +  "debt_cancellation_fee_total": {},
        +  "debt_suspension_fee_total": {},
        +  "finance_charge_total": {},
        +  "is_credit_card": {
        +    "type": "boolean"
        +  },
        +  "is_short_term_small_amount_loan": {
        +    "type": "boolean"
        +  },
        +  "loan_amount": {},
        +  "participation_fee_annual": {},
        +  "payment_amount": {},
        +  "payment_count": {
        +    "type": "number"
        +  },
        +  "payment_structure": {},
        +  "payments_per_year": {
        +    "type": "number"
        +  },
        +  "term_days": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_mlr_rebate3 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: market. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "earned_premium": {
        +    "type": "number"
        +  },
        +  "federal_taxes_fees": {
        +    "type": "number"
        +  },
        +  "incurred_claims": {
        +    "type": "number"
        +  },
        +  "market": {},
        +  "member_life_years": {
        +    "type": "number"
        +  },
        +  "prior_year_1_adjusted_mlr_pct": {
        +    "type": "number"
        +  },
        +  "prior_year_1_earned_premium": {
        +    "type": "number"
        +  },
        +  "prior_year_2_adjusted_mlr_pct": {
        +    "type": "number"
        +  },
        +  "prior_year_2_earned_premium": {
        +    "type": "number"
        +  },
        +  "quality_improvement_expenditures": {
        +    "type": "number"
        +  },
        +  "reinsurance_recoveries": {
        +    "type": "number"
        +  },
        +  "reporting_year": {
        +    "type": "number"
        +  },
        +  "risk_adjustment_net": {
        +    "type": "number"
        +  },
        +  "risk_corridors_net": {
        +    "type": "number"
        +  },
        +  "state_taxes_fees": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_multilateral_netting3 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: base_currency, entities, fx_rates, gross_positions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "base_currency": {},
        +  "entities": {
        +    "type": "array"
        +  },
        +  "fx_rates": {},
        +  "gross_positions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_note_h_margin_debit3 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: broker_dealer_ref, clearing_agency_conditions, clearing_agency_name, computation_date_label, currency, customer_insufficient_assets_declared, margin_called_and_received_next_business_day, margin_on_deposit_minor_units, margin_required_minor_units, margin_source. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "broker_dealer_ref": {},
        +  "clearing_agency_conditions": {},
        +  "clearing_agency_name": {},
        +  "computation_date_label": {},
        +  "currency": {
        +    "type": "string"
        +  },
        +  "customer_insufficient_assets_declared": {},
        +  "margin_called_and_received_next_business_day": {},
        +  "margin_on_deposit_minor_units": {},
        +  "margin_required_minor_units": {},
        +  "margin_source": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_npv3 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: cash_flows, day_count_convention, mode, valuation_date. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cash_flows": {
        +    "type": "array"
        +  },
        +  "day_count_convention": {},
        +  "discount_rate_pct": {
        +    "type": "number"
        +  },
        +  "mode": {},
        +  "valuation_date": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_oprisk_sma_20263 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: annual_op_losses, use_us_ilm_neutralization. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annual_op_losses": {
        +    "type": "array"
        +  },
        +  "fc_avg": {
        +    "type": "number"
        +  },
        +  "ildc_avg": {
        +    "type": "number"
        +  },
        +  "sc_avg": {
        +    "type": "number"
        +  },
        +  "use_us_ilm_neutralization": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_options_greeks3 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: div_yield, expiry_days, rate, spot, strike, type, vol. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "div_yield": {
        +    "type": "number"
        +  },
        +  "expiry_days": {
        +    "type": "number"
        +  },
        +  "rate": {
        +    "type": "number"
        +  },
        +  "spot": {
        +    "type": "number"
        +  },
        +  "strike": {
        +    "type": "number"
        +  },
        +  "type": {},
        +  "vol": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_parametric_trigger_payout3 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: coverage_amount, index_value, max_index, parametric_limit, threshold, tier_table, trigger_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "coverage_amount": {},
        +  "index_value": {},
        +  "max_index": {},
        +  "parametric_limit": {},
        +  "threshold": {},
        +  "tier_table": {
        +    "type": "array"
        +  },
        +  "trigger_type": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_perp_funding3 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: asset, basis_perp_price, cadence_hours, defi_yield_pct_annual, taker_fee_pct, venue, venue2, venue2_cadence_hours, venue2_taker_fee_pct. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asset": {},
        +  "basis_perp_price": {
        +    "type": "number"
        +  },
        +  "basis_spot_price": {
        +    "type": "number"
        +  },
        +  "cadence_hours": {
        +    "type": "number"
        +  },
        +  "defi_yield_pct_annual": {
        +    "type": "number"
        +  },
        +  "funding_rate_pct_per_period": {
        +    "type": "number"
        +  },
        +  "taker_fee_pct": {
        +    "type": "number"
        +  },
        +  "venue": {},
        +  "venue2": {},
        +  "venue2_cadence_hours": {
        +    "type": "number"
        +  },
        +  "venue2_funding_rate_pct_per_period": {
        +    "type": "number"
        +  },
        +  "venue2_taker_fee_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_perp_funding_implied_yield3 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: clamp_pct, funding_mechanism, index_price, interest_rate_pct, interval_hours, mark_price, position_notional, position_side, premium_index_pct, prev_funding_hash, venue. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "clamp_pct": {
        +    "type": "number"
        +  },
        +  "funding_mechanism": {},
        +  "index_price": {
        +    "type": "number"
        +  },
        +  "interest_rate_pct": {
        +    "type": "number"
        +  },
        +  "interval_hours": {
        +    "type": "number"
        +  },
        +  "mark_price": {
        +    "type": "number"
        +  },
        +  "position_notional": {
        +    "type": "number"
        +  },
        +  "position_side": {},
        +  "premium_index_pct": {
        +    "type": "number"
        +  },
        +  "prev_funding_hash": {},
        +  "venue": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_perp_margin3 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: mark_price, mmr_pct, mode, side, venue. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "correlation": {
        +    "type": "number"
        +  },
        +  "entry_price": {
        +    "type": "number"
        +  },
        +  "leverage": {
        +    "type": "number"
        +  },
        +  "mark_price": {
        +    "type": "number"
        +  },
        +  "mmr_pct": {
        +    "type": "number"
        +  },
        +  "mode": {},
        +  "position_size": {
        +    "type": "number"
        +  },
        +  "side": {},
        +  "spot_offset_usd": {
        +    "type": "number"
        +  },
        +  "venue": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_por_liabilities_composite3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "liabilities_attestation_source": {
        +    "type": "string"
        +  },
        +  "por_input": {
        +    "type": "object"
        +  },
        +  "reported_total_liabilities_musd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_portfolio_var3 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: avg_correlation, confidence_level, holding_period_days, mc_sims, seed. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "avg_correlation": {},
        +  "conf_level": {},
        +  "confidence_level": {},
        +  "correlation": {},
        +  "holding_period": {},
        +  "holding_period_days": {},
        +  "mc_sims": {
        +    "type": "number"
        +  },
        +  "n_assets": {
        +    "type": "number"
        +  },
        +  "n_paths": {},
        +  "portfolio_value_mm": {},
        +  "seed": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_pqc_deadline_ladder3 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: inventory, policy_deadlines, reference_date. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inventory": {
        +    "type": "array"
        +  },
        +  "policy_deadlines": {},
        +  "reference_date": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_pt_yt_yield3 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: yt_price. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "days_to_maturity": {
        +    "type": "number"
        +  },
        +  "investment_usd": {
        +    "type": "number"
        +  },
        +  "pt_price": {
        +    "type": "number"
        +  },
        +  "underlying_apy_pct": {
        +    "type": "number"
        +  },
        +  "yt_price": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_pta_verifier3 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: journal_text. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "journal_text": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_raroc_loan_price3 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: capital_approach. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "arrangement_fee_bps": {
        +    "type": "number"
        +  },
        +  "benchmark_rate_pct": {
        +    "type": "number"
        +  },
        +  "capital_approach": {},
        +  "capital_buffer_bps": {
        +    "type": "number"
        +  },
        +  "commitment_fee_bps": {
        +    "type": "number"
        +  },
        +  "cost_of_funds_pct": {
        +    "type": "number"
        +  },
        +  "ead_musd": {
        +    "type": "number"
        +  },
        +  "hurdle_rate_pct": {
        +    "type": "number"
        +  },
        +  "lgd_pct": {
        +    "type": "number"
        +  },
        +  "margin_bps": {
        +    "type": "number"
        +  },
        +  "operating_cost_kusd": {
        +    "type": "number"
        +  },
        +  "pd_pct": {
        +    "type": "number"
        +  },
        +  "tax_rate_pct": {
        +    "type": "number"
        +  },
        +  "tenor_years": {
        +    "type": "number"
        +  },
        +  "utilization_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_rbc_action_level3 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: authorized_control_level, insurer_type, prior_year_rbc_ratio, total_adjusted_capital, two_year_rbc_ratio. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "authorized_control_level": {},
        +  "insurer_type": {},
        +  "prior_year_rbc_ratio": {},
        +  "total_adjusted_capital": {},
        +  "two_year_rbc_ratio": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_rbc_action_level_private3 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: table_version. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "table_version": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_reg_z_appendix_j_apr3 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: advances, payments. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "advances": {
        +    "type": "array"
        +  },
        +  "loan_amount": {
        +    "type": "number"
        +  },
        +  "num_payments": {
        +    "type": "number"
        +  },
        +  "odd_days": {
        +    "type": "number"
        +  },
        +  "payment_amount": {
        +    "type": "number"
        +  },
        +  "payments": {
        +    "type": "array"
        +  },
        +  "periods_per_year": {
        +    "type": "number"
        +  },
        +  "unit_period_days": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_regulatory_obligations_register3 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: input_parameters. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "input_parameters": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_remittance_disclosure3 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: destination_country, destination_currency, estimate_permissible, exchange_rate, provider_fee, send_amount, taxes, third_party_fees. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "destination_country": {},
        +  "destination_currency": {},
        +  "estimate_permissible": {
        +    "type": "boolean"
        +  },
        +  "exchange_rate": {},
        +  "provider_fee": {},
        +  "send_amount": {},
        +  "taxes": {},
        +  "third_party_fees": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_rwa_erba_20263 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: exposures, rule_set. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "exposures": {
        +    "type": "array"
        +  },
        +  "rule_set": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_rwa_scenarios3 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: mc_scenarios, mix. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "airb_lgd_pct": {},
        +  "airb_pd_pct": {},
        +  "ead_bn": {},
        +  "firb_lgd_pct": {},
        +  "firb_pd_pct": {},
        +  "mc_n": {},
        +  "mc_scenarios": {
        +    "type": "number"
        +  },
        +  "mix": {},
        +  "mix_preset": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_scra_rate_cap3 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: is_pre_service_obligation, servicemember_notified. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "covered_months": {
        +    "type": "number"
        +  },
        +  "is_pre_service_obligation": {
        +    "type": "boolean"
        +  },
        +  "loan_balance": {
        +    "type": "number"
        +  },
        +  "original_rate_pct": {
        +    "type": "number"
        +  },
        +  "servicemember_notified": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_settlement_efficiency_kpi3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "instructions": {},
        +  "period_label": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_stock_token_collateral_haircut3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "base_haircut": {},
        +  "current_time": {},
        +  "feed_round": {},
        +  "position_value": {},
        +  "sequencer_uptime": {},
        +  "underlying_market_state": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_stress_test_scenarios3 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: confidence_level, credit_sensitivity, equity_beta, mc_paths, portfolio_vol, preset, rate_duration_yrs, seed. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "confidence_level": {},
        +  "credit_sensitivity": {},
        +  "equity_beta": {},
        +  "mc_paths": {
        +    "type": "number"
        +  },
        +  "portfolio_vol": {},
        +  "preset": {},
        +  "rate_duration_yrs": {},
        +  "seed": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_tempo_mainnet_fee_capacity3 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: block_time_seconds, payment_mix, protocol_parameters. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "block_time_seconds": {
        +    "type": "number"
        +  },
        +  "payment_mix": {
        +    "type": "array"
        +  },
        +  "protocol_parameters": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_trid_tolerance_cure3 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: fees. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "fees": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_va_funding_fee_residual3 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: funding_fee_exempt, loan_purpose, state, va_use_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "base_loan_amount": {
        +    "type": "number"
        +  },
        +  "down_payment_pct": {
        +    "type": "number"
        +  },
        +  "dti_pct": {
        +    "type": "number"
        +  },
        +  "family_size": {
        +    "type": "number"
        +  },
        +  "funding_fee_exempt": {
        +    "type": "boolean"
        +  },
        +  "gross_monthly_income": {
        +    "type": "number"
        +  },
        +  "loan_purpose": {},
        +  "monthly_shelter_expenses": {
        +    "type": "number"
        +  },
        +  "state": {},
        +  "va_use_type": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_var_backtest_traffic_light3 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: observations. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "observations": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_verify_receipt3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "previous_receipt": {},
        +  "receipt": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_wash_sale_window_guard3 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: sale, replacement_purchases. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "replacement_purchases": {
        +    "type": "array"
        +  },
        +  "sale": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcompute_xirr3 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: cash_flows, tolerance. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "bracket_hi": {
        +    "type": "number"
        +  },
        +  "bracket_lo": {
        +    "type": "number"
        +  },
        +  "cash_flows": {
        +    "type": "array"
        +  },
        +  "max_iterations": {
        +    "type": "number"
        +  },
        +  "tolerance": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedconvert_markdown_document3 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: options. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "markdown": {},
        +  "options": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedconvert_tabular_data3 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: options. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "data": {},
        +  "options": {},
        +  "source_format": {},
        +  "target_format": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedconvert_tempo_fee_amm3 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: fee_token, max_pool_utilization_bps, pool_reserves, user_token_in, validator_token. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "fee_token": {},
        +  "max_pool_utilization_bps": {},
        +  "pool_reserves": {},
        +  "user_token_in": {},
        +  "validator_token": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcorrelate_ap2_cartmandate_x4023 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cart_items": {
        +    "type": "array"
        +  },
        +  "cart_root": {
        +    "type": "string"
        +  },
        +  "merchant": {
        +    "type": "string"
        +  },
        +  "token_decimals": {
        +    "type": "integer"
        +  },
        +  "x402_spend_evidence": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcurrency_basket_index3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amount_scale": {
        +    "type": "number"
        +  },
        +  "as_of_date": {
        +    "type": "string"
        +  },
        +  "basket_id": {
        +    "type": "string"
        +  },
        +  "components": {
        +    "type": "array"
        +  },
        +  "index_value_at_rebase": {
        +    "type": "number"
        +  },
        +  "mode": {
        +    "enum": [
        +      "fixed_amount_valuation",
        +      "derive_amounts_from_target_weights"
        +    ],
        +    "type": "string"
        +  },
        +  "parent_print_hashes": {
        +    "type": "array"
        +  },
        +  "prior_index_value": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changeddecode_c2pa_aiml_assertions3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "assertions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changeddecode_eip7702_authorization_tuple3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "address": {
        +    "type": "string"
        +  },
        +  "chainId": {
        +    "type": "number"
        +  },
        +  "nonce": {
        +    "type": "number"
        +  },
        +  "r": {
        +    "type": "string"
        +  },
        +  "s": {
        +    "type": "string"
        +  },
        +  "signature": {
        +    "type": "string"
        +  },
        +  "v": {
        +    "type": "number"
        +  },
        +  "yParity": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changeddecode_mpp_session3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agentDid": {},
        +  "cadence": {},
        +  "duration": {},
        +  "merchant": {},
        +  "rail": {},
        +  "spendCap": {},
        +  "stablecoin": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedderive_beacon_fair_sample3 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: algorithm_id, beacon_randomness, beacon_round, beacon_source, item_count, item_manifest_hash, sample_size. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "algorithm_id": {},
        +  "beacon_randomness": {},
        +  "beacon_round": {},
        +  "beacon_source": {},
        +  "item_count": {},
        +  "item_manifest_hash": {},
        +  "sample_size": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedderive_parametric_index_from_receipts3 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: index_def, receipts. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "index_def": {},
        +  "receipts": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changeddetect_timeseries_anomalies3 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: nAnomalies, nPeriods, seasonPeriod, seed, trendType, windowSize, zThreshold. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "nAnomalies": {
        +    "type": "number"
        +  },
        +  "nPeriods": {
        +    "type": "number"
        +  },
        +  "seasonPeriod": {
        +    "type": "number"
        +  },
        +  "seed": {
        +    "type": "number"
        +  },
        +  "trendType": {},
        +  "windowSize": {
        +    "type": "number"
        +  },
        +  "zThreshold": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changeddetect_transaction_anomalies3 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: contamination_rate, n_transactions, n_trees, seed, subsample_size, threshold. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "contamination_rate": {
        +    "type": "number"
        +  },
        +  "n_transactions": {
        +    "type": "number"
        +  },
        +  "n_trees": {
        +    "type": "number"
        +  },
        +  "seed": {
        +    "type": "number"
        +  },
        +  "subsample_size": {
        +    "type": "number"
        +  },
        +  "threshold": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changeddetermine_deposit_insurance_coverage3 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: account_records, as_of_date, certification_assertion, covered_institution_declared, currency, declared_deposit_account_count, institution_ref, minor_unit_scale, smdia. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "account_records": {},
        +  "as_of_date": {},
        +  "certification_assertion": {},
        +  "covered_institution_declared": {},
        +  "currency": {},
        +  "declared_deposit_account_count": {},
        +  "institution_ref": {},
        +  "minor_unit_scale": {},
        +  "smdia": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changeddigest_gleif_snapshot3 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: captured_at, golden_copy_as_of, last_update_date, lei, source_format, source_text. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "captured_at": {},
        +  "golden_copy_as_of": {},
        +  "last_update_date": {},
        +  "lei": {},
        +  "source_format": {},
        +  "source_text": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changeddispose_carf_status_message3 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: cycle_ref, dispositions, prior_dispositions, reporting_jurisdiction, schema_version, status_message, status_message_channel, status_message_return_declared, submission_ref, submitted_records, suppressed_error_codes. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cycle_ref": {},
        +  "dispositions": {
        +    "type": "array"
        +  },
        +  "prior_dispositions": {
        +    "type": "array"
        +  },
        +  "reporting_jurisdiction": {},
        +  "schema_version": {},
        +  "status_message": {},
        +  "status_message_channel": {},
        +  "status_message_return_declared": {
        +    "type": "boolean"
        +  },
        +  "submission_ref": {},
        +  "submitted_records": {
        +    "type": "array"
        +  },
        +  "suppressed_error_codes": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedestimate_ai_token_spend3 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: as_of, usage, price_table, compare. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {
        +    "type": "string"
        +  },
        +  "compare": {
        +    "type": "array"
        +  },
        +  "price_table": {
        +    "type": "object"
        +  },
        +  "usage": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedestimate_cross_margin_benefit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "account_type": {},
        +  "cme_positions": {},
        +  "confidence_level": {},
        +  "mpor_days": {},
        +  "ust_positions": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedestimate_cross_venue_margin_capital3 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: constants_version, custody_model, leverage_program_name, venue_positions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "constants_version": {},
        +  "cross_margin_offset_pct": {
        +    "type": "number"
        +  },
        +  "custody_model": {},
        +  "financing_apr_pct": {
        +    "type": "number"
        +  },
        +  "financing_horizon_days": {
        +    "type": "number"
        +  },
        +  "leverage_multiple": {
        +    "type": "number"
        +  },
        +  "leverage_program_cap_multiple": {
        +    "type": "number"
        +  },
        +  "leverage_program_name": {},
        +  "venue_positions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedestimate_ficc_margin_netting3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "clearing_model": {},
        +  "confidence_level": {},
        +  "include_cross_product": {},
        +  "mpor_days": {},
        +  "positions": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedevaluate_decision_tree3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "facts": {
        +    "type": "object"
        +  },
        +  "tree": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedevaluate_globe_de_minimis_exclusion3 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: de_minimis_parameters, election_made, fiscal_year, jurisdiction, max_years, stateless_and_investment_entities_excluded, years, years_jurisdiction_in_scope. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "de_minimis_parameters": {},
        +  "election_made": {},
        +  "fiscal_year": {
        +    "type": "number"
        +  },
        +  "jurisdiction": {},
        +  "max_years": {
        +    "type": "number"
        +  },
        +  "stateless_and_investment_entities_excluded": {
        +    "type": "boolean"
        +  },
        +  "years": {
        +    "type": "array"
        +  },
        +  "years_jurisdiction_in_scope": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedevaluate_globe_safe_harbour_tests3 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: de_minimis_profit_threshold_eur, de_minimis_revenue_threshold_eur, fiscal_year, profit_before_tax_eur, revenue_eur, sbie_amount, simplified_covered_taxes, simplified_etr_rate_table. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "de_minimis_profit_threshold_eur": {},
        +  "de_minimis_revenue_threshold_eur": {},
        +  "fiscal_year": {},
        +  "profit_before_tax_eur": {},
        +  "revenue_eur": {},
        +  "sbie_amount": {},
        +  "simplified_covered_taxes": {},
        +  "simplified_etr_rate_table": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedevaluate_irrbb_sot_eve3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "capital": {},
        +  "eve_shock": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedevaluate_irrbb_sot_nii3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "baseline": {},
        +  "nii_shock": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedexamine_lc_document_presentation3 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: bank_holidays, documents, examination_date, goods_description_conforms, lc, presentation_date. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "bank_holidays": {
        +    "type": "array"
        +  },
        +  "documents": {},
        +  "examination_date": {},
        +  "goods_description_conforms": {},
        +  "lc": {},
        +  "presentation_date": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedexplain_regrpt_variance3 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: explanations, instance_pair, materiality_policy. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "explanations": {},
        +  "instance_pair": {},
        +  "materiality_policy": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedfind_prediction_arbitrage3 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: venue_a, venue_b. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "no_price_b": {
        +    "type": "number"
        +  },
        +  "payout": {
        +    "type": "number"
        +  },
        +  "stake_total": {
        +    "type": "number"
        +  },
        +  "venue_a": {},
        +  "venue_b": {},
        +  "yes_price_a": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedfind_runway_goal_path3 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: cash_minor, monthly_revenue_minor, monthly_burn_minor, revenue_growth_bp, horizon_months, goal, levers, effort_weights, max_candidates. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cash_minor": {
        +    "type": "integer"
        +  },
        +  "effort_weights": {
        +    "type": "object"
        +  },
        +  "goal": {
        +    "type": "object"
        +  },
        +  "horizon_months": {
        +    "type": "integer"
        +  },
        +  "levers": {
        +    "type": "object"
        +  },
        +  "max_candidates": {
        +    "type": "integer"
        +  },
        +  "monthly_burn_minor": {
        +    "type": "integer"
        +  },
        +  "monthly_revenue_minor": {
        +    "type": "integer"
        +  },
        +  "revenue_growth_bp": {
        +    "type": "integer"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedgenerate_attribution_string3 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: creator, license, source_url, title, work_url. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "creator": {},
        +  "license": {},
        +  "source_url": {},
        +  "title": {},
        +  "work_url": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedgenerate_iscc_code3 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: content, creator, title. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "content": {},
        +  "creator": {},
        +  "title": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedgenerate_zk_compliance_proof3 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: data. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "data": {},
        +  "predicate_type": {},
        +  "seed": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedinspect_visa_trusted_agent_protocol3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "signature": {},
        +  "signature_input": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlink_eudr_supply_chain_traceability3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "supply_chain": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlink_traceability_lot_code3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "events": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_ab2013_training_data_disclosure3 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: disclosure. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "disclosure": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_aiuc1_control_evidence3 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: aiuc1_version, control_evidence. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aiuc1_version": {},
        +  "control_evidence": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_arc_xreserve_config3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "attestation_cadence": {},
        +  "cctp_domains": {},
        +  "is_eu_emt": {},
        +  "is_us_ppsi": {},
        +  "mint_role_segregated": {},
        +  "other_pct": {},
        +  "reserve_segregated": {},
        +  "us_issuers_only": {},
        +  "usdc_pct": {},
        +  "usyc_pct": {},
        +  "yield_enabled": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_authorization_payload3 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: mode. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "display_hints": {
        +    "type": "object"
        +  },
        +  "mode": {
        +    "enum": [
        +      "typed_data",
        +      "eip7702_tuple",
        +      "raw_hash"
        +    ],
        +    "type": "string"
        +  },
        +  "policy": {
        +    "type": "object"
        +  },
        +  "raw_hash": {
        +    "type": "string"
        +  },
        +  "signature": {
        +    "type": "string|object"
        +  },
        +  "tuple": {
        +    "type": "object"
        +  },
        +  "typed_data": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_besu_settlement_contract3 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: artifact_kind, ruleset_profile, source. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "artifact_kind": {},
        +  "ruleset_profile": {},
        +  "source": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_cbom_structure3 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: cbom. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cbom": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_cbpr_structured_address3 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: address_lines, building_number, country, country_subdivision, post_code, street_name, town_name. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "address_lines": {},
        +  "building_number": {},
        +  "country": {},
        +  "country_subdivision": {},
        +  "post_code": {},
        +  "street_name": {},
        +  "town_name": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_compelling_evidence_ce30_agentic3 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: dispute, evidence. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "dispute": {},
        +  "evidence": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_crypto_asset_whitepaper3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inputs": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_fedwire_structured_address3 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: address_lines, building_number, country, country_subdivision, network, post_code, street_name, town_name. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "address_lines": {},
        +  "building_number": {},
        +  "country": {},
        +  "country_subdivision": {},
        +  "network": {},
        +  "post_code": {},
        +  "street_name": {},
        +  "town_name": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_insurance_evidence_freshness3 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: as_of, cert_anniversary, controls. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "cert_anniversary": {},
        +  "controls": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_lei_payment_binding3 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: beneficiary_account, beneficiary_lei, beneficiary_name, originator_account, originator_lei, originator_name. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "beneficiary_account": {},
        +  "beneficiary_lei": {},
        +  "beneficiary_name": {},
        +  "originator_account": {},
        +  "originator_lei": {},
        +  "originator_name": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_mcp_server_conformance3 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: oauth_flags, security_flags, server_json, tool_definition. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "oauth_flags": {},
        +  "security_flags": {},
        +  "server_json": {},
        +  "tool_definition": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_metro2_record3 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: account_status, account_type, amount_past_due, current_balance, date_of_first_delinquency, date_opened, date_reported, has_j1_segment, has_j2_segment, has_k_segment, payment_rating. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "account_status": {},
        +  "account_type": {},
        +  "amount_past_due": {},
        +  "current_balance": {},
        +  "date_of_first_delinquency": {},
        +  "date_opened": {},
        +  "date_reported": {},
        +  "has_j1_segment": {
        +    "type": "boolean"
        +  },
        +  "has_j2_segment": {
        +    "type": "boolean"
        +  },
        +  "has_k_segment": {
        +    "type": "boolean"
        +  },
        +  "payment_rating": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_mismo_uldd_ulad3 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: loan_data. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "loan_data": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_securities_settlement_message3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "messages": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_settlement_orchestrator_conformance3 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: decision_policy_ref, kernel_bindings, orchestrator_manifest, transport. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "decision_policy_ref": {},
        +  "kernel_bindings": {},
        +  "orchestrator_manifest": {},
        +  "transport": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_stock_token_valuation3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "applied_multiplier_in_expression": {},
        +  "chainlink_price_usd": {},
        +  "computed_usd_value_under_test": {},
        +  "raw_balance": {},
        +  "ui_multiplier": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_trace_cat_reports3 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: calendar, cat_events, execution_timestamp, report_timestamp, trading_hours. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "calendar": {},
        +  "cat_events": {},
        +  "execution_timestamp": {},
        +  "report_timestamp": {},
        +  "report_window_minutes": {
        +    "type": "number"
        +  },
        +  "trading_hours": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_ucp_checkout_payload3 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: payload. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "payload": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlint_x12_claim_records3 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: claims, envelope, message_type, remittance. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "claims": {},
        +  "envelope": {},
        +  "message_type": {},
        +  "remittance": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlookup_mletr_jurisdiction_adoption3 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: destination_jurisdiction, origin_jurisdiction. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "destination_jurisdiction": {},
        +  "origin_jurisdiction": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedlookup_reg_z_thresholds3 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: table. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "table": {},
        +  "year": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_agent_payment_mandate3 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: source_mandate, source_protocol, target_protocol. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "source_mandate": {},
        +  "source_protocol": {},
        +  "target_protocol": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_ai_act_procurement_clauses3 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: deployment_context, risk_tier. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "deployment_context": {},
        +  "risk_tier": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_bhc_schedule_hc3 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: entity_id, reporting_period. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entity_id": {},
        +  "reporting_period": {},
        +  "rounding_tolerance_usd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_bhc_schedule_hcr3 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: constants_version, entity_id, is_gsib, reporting_period, tier1_capital_usd. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "additional_tier1_capital_usd": {
        +    "type": "number"
        +  },
        +  "cet1_capital_usd": {
        +    "type": "number"
        +  },
        +  "cet1_min_pct": {
        +    "type": "number"
        +  },
        +  "constants_version": {},
        +  "entity_id": {},
        +  "eslr_buffer_pct": {
        +    "type": "number"
        +  },
        +  "is_gsib": {
        +    "type": "boolean"
        +  },
        +  "reporting_period": {},
        +  "slr_min_pct": {
        +    "type": "number"
        +  },
        +  "tier1_capital_usd": {
        +    "type": "number"
        +  },
        +  "tier1_min_pct": {
        +    "type": "number"
        +  },
        +  "tier2_capital_usd": {
        +    "type": "number"
        +  },
        +  "total_capital_min_pct": {
        +    "type": "number"
        +  },
        +  "total_leverage_exposure_usd": {
        +    "type": "number"
        +  },
        +  "total_rwa_usd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_call_report_schedule_rc3 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: entity_id, reporting_period. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entity_id": {},
        +  "reporting_period": {},
        +  "rounding_tolerance_usd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_call_report_schedule_rcr3 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: constants_version, entity_id, is_gsib, reporting_period, tier1_capital_usd. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "additional_tier1_capital_usd": {
        +    "type": "number"
        +  },
        +  "cet1_capital_usd": {
        +    "type": "number"
        +  },
        +  "cet1_min_pct": {
        +    "type": "number"
        +  },
        +  "constants_version": {},
        +  "entity_id": {},
        +  "eslr_buffer_pct": {
        +    "type": "number"
        +  },
        +  "is_gsib": {
        +    "type": "boolean"
        +  },
        +  "reporting_period": {},
        +  "slr_min_pct": {
        +    "type": "number"
        +  },
        +  "tier1_capital_usd": {
        +    "type": "number"
        +  },
        +  "tier1_min_pct": {
        +    "type": "number"
        +  },
        +  "tier2_capital_usd": {
        +    "type": "number"
        +  },
        +  "total_capital_min_pct": {
        +    "type": "number"
        +  },
        +  "total_leverage_exposure_usd": {
        +    "type": "number"
        +  },
        +  "total_rwa_usd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_irrbb_standardised_approach3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "positions": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_iso20022_to_evm_calldata3 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: contract_abi_fragment, iso_fields, iso_message_type, mapping_profile. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "contract_abi_fragment": {},
        +  "iso_fields": {},
        +  "iso_message_type": {},
        +  "mapping_profile": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_mt9xx_to_camt3 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: declared_mt_type, message_text, target. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "declared_mt_type": {},
        +  "message_text": {},
        +  "target": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_nist_ai_rmf_functions3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "evidence": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_nmd_behavioral_repricing3 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: nmd_segments. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "nmd_segments": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_pil_flavor3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "commercial_use": {},
        +  "derivatives_allowed": {},
        +  "minting_fee": {},
        +  "rev_share_pct": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_robinhood_chain_regime3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "holder_of_record": {},
        +  "instrument_type": {},
        +  "issuer_entity": {},
        +  "target_jurisdictions": {},
        +  "voting_rights": {},
        +  "wrapper": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmap_tempo_settlement3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amount": {},
        +  "creditorBic": {},
        +  "protocol": {},
        +  "rawRef": {},
        +  "receiverLei": {},
        +  "receiverName": {},
        +  "senderLei": {},
        +  "senderName": {},
        +  "settlementDate": {},
        +  "stablecoin": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmatch_confirmations3 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: confirmations, ledger_balances, tolerance_abs, tolerance_pct. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "confirmations": {},
        +  "ledger_balances": {},
        +  "tolerance_abs": {},
        +  "tolerance_pct": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmatch_invoice_three_way3 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: currency, invoice, vendor_terms, duplicate_window_days. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "currency": {
        +    "type": "string"
        +  },
        +  "duplicate_window_days": {
        +    "type": "integer"
        +  },
        +  "goods_receipt": {
        +    "type": "object"
        +  },
        +  "invoice": {
        +    "type": "object"
        +  },
        +  "prior_invoices": {
        +    "type": "array"
        +  },
        +  "purchase_order": {
        +    "type": "object"
        +  },
        +  "vendor_terms": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmobilize_margin_collateral3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aana": {},
        +  "ccp_cleared": {},
        +  "collateral_rows": {},
        +  "instrument_type": {},
        +  "mta": {},
        +  "on_chain": {},
        +  "portfolio_mtm": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_agent_service_metering3 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: pricing. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "marketplace": {},
        +  "pricing": {
        +    "type": "boolean"
        +  },
        +  "settlement": {},
        +  "usage": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_arc_cpn_economics3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cpn_fee_usd": {},
        +  "fx_spread_bps": {},
        +  "impl_months": {},
        +  "monthly_volume": {},
        +  "notional_usd": {},
        +  "rail": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_arc_paymaster_economics3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "arc_usdc_per_gas_unit": {},
        +  "eth_price_usd": {},
        +  "gas_per_uop": {},
        +  "gas_price_gwei": {},
        +  "impl_months": {},
        +  "merchant_sponsorship_pct": {},
        +  "monthly_uops": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_arc_stablefx_rfq3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cls_annual_fee_usd": {},
        +  "daily_fx_volume_usd": {},
        +  "herstatt_spread_bps": {},
        +  "impl_months": {},
        +  "non_cls_bilateral_bps": {},
        +  "stablefx_fee_bps": {},
        +  "trading_days": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_buy_in_exposure3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "buyin_markup_pct": {},
        +  "cash_comp_premium_pct": {},
        +  "delegated_acts_in_force": {},
        +  "fails": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_cbam_certificate_cost3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annual_imported_net_mass_t": {},
        +  "cbam_factor_year": {},
        +  "cbam_sector": {},
        +  "embedded_emissions_tco2e": {},
        +  "eua_quarter_avg_prices": {},
        +  "eua_reference_price": {},
        +  "import_schedule": {},
        +  "origin_carbon_price_eur_per_t": {},
        +  "threshold_exceeded_quarter": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_clearing_access_economics3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "capital_charge_rate": {},
        +  "capital_constrained": {},
        +  "cash_notional_annual": {},
        +  "collateral_in_lieu_eligible": {},
        +  "current_access": {},
        +  "firm_type": {},
        +  "im_funding_rate": {},
        +  "margin_segregation_pref": {},
        +  "num_executing_dealers": {},
        +  "pledged_collateral_value": {},
        +  "repo_notional_daily": {},
        +  "want_execution_flexibility": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_l1_fee_runway3 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: as_of, current_balance, fee_growth_rate_annual_pct, fee_rate_avax_per_validator_month, horizon_months, infra_cost_annual, target_runway_months, validator_count. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "current_balance": {},
        +  "fee_growth_rate_annual_pct": {},
        +  "fee_rate_avax_per_validator_month": {},
        +  "horizon_months": {},
        +  "infra_cost_annual": {},
        +  "target_runway_months": {},
        +  "validator_count": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_perp_position3 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: close_fee_type, close_ts, mmr_pct, open_fee_type, open_ts, side, venue. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "close_fee_type": {},
        +  "close_ts": {},
        +  "entry_price": {
        +    "type": "number"
        +  },
        +  "exit_price": {
        +    "type": "number"
        +  },
        +  "funding_rate_per_interval": {
        +    "type": "number"
        +  },
        +  "leverage": {
        +    "type": "number"
        +  },
        +  "maker_fee_pct": {
        +    "type": "number"
        +  },
        +  "mmr_pct": {
        +    "type": "number"
        +  },
        +  "n_intervals": {
        +    "type": "number"
        +  },
        +  "open_fee_type": {},
        +  "open_ts": {},
        +  "position_size": {
        +    "type": "number"
        +  },
        +  "side": {},
        +  "taker_fee_pct": {
        +    "type": "number"
        +  },
        +  "venue": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_scorp_break_even3 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: net_se_income. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annual_admin_cost": {
        +    "type": "number"
        +  },
        +  "filing_status": {
        +    "enum": [
        +      "single",
        +      "mfj"
        +    ],
        +    "type": "string"
        +  },
        +  "net_se_income": {
        +    "type": "number"
        +  },
        +  "owner_health_premium_annual": {
        +    "type": "number"
        +  },
        +  "reasonable_salary_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_stablecoin_corridor_economics3 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: chain_fee_usd, correspondent_cost_pct, float_days, float_savings_rate_pct, fx_spread_pct, off_ramp_fee_pct, on_ramp_fee_pct, send_amount_usd. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chain_fee_usd": {},
        +  "correspondent_cost_pct": {},
        +  "float_days": {},
        +  "float_savings_rate_pct": {},
        +  "fx_spread_pct": {},
        +  "off_ramp_fee_pct": {},
        +  "on_ramp_fee_pct": {},
        +  "send_amount_usd": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_tempo_gas_economics3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amm_slippage": {},
        +  "baseline_rail": {},
        +  "fee_mix": {},
        +  "impl_months": {},
        +  "monthly_volume": {},
        +  "server_paid_pct": {},
        +  "tx_amount_usd": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_tempo_payment_economics3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "impl_months": {},
        +  "monthly_volume": {},
        +  "rail": {},
        +  "stablecoin": {},
        +  "tx_amount_usd": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedmodel_x402_settlement3 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: amount_usd. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amount_usd": {
        +    "type": "number"
        +  },
        +  "finality_requirement": {
        +    "enum": [
        +      "instant",
        +      "fast",
        +      "minutes",
        +      "hours",
        +      "days"
        +    ],
        +    "type": "string"
        +  },
        +  "monthly_volume": {
        +    "type": "number"
        +  },
        +  "payment_type": {
        +    "enum": [
        +      "micropayment",
        +      "retail",
        +      "b2b",
        +      "cross_border"
        +    ],
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedoptimize_settlement_capital3 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: cet1_ratio, cost_of_capital, positions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cet1_ratio": {
        +    "type": "number"
        +  },
        +  "cost_of_capital": {
        +    "type": "number"
        +  },
        +  "positions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedoptimize_social_security_claim_age3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "claimant": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedoracle_price_aggregation3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "currency_pair": {
        +    "type": "string"
        +  },
        +  "epoch": {
        +    "type": "number"
        +  },
        +  "mode": {
        +    "enum": [
        +      "median_filtered_confidence_weighted_mean",
        +      "stake_weighted_median_frequency",
        +      "three_vote_confidence_median",
        +      "plain_median"
        +    ],
        +    "type": "string"
        +  },
        +  "outlier_threshold_pct": {
        +    "type": "number"
        +  },
        +  "prev_print_hash": {
        +    "type": "string"
        +  },
        +  "stale_after_seconds": {
        +    "type": "number"
        +  },
        +  "submissions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedparse_camt053_reconciliation3 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: closing_balance, day_count_convention, opening_balance, transactions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "closing_balance": {},
        +  "day_count_convention": {},
        +  "opening_balance": {},
        +  "transactions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedplan_aml_disposition_sample3 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: confidence_level, disposition_population_hash, disposition_population_size, expected_deviation_rate, population_hash, population_size, reviewer_roster, tolerable_deviation_rate. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "confidence_level": {},
        +  "disposition_population_hash": {},
        +  "disposition_population_size": {},
        +  "expected_deviation_rate": {},
        +  "population_hash": {},
        +  "population_size": {},
        +  "reviewer_roster": {
        +    "type": "array"
        +  },
        +  "tolerable_deviation_rate": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedplan_attribute_sample3 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: confidence_level, expected_deviation_rate, population_hash, population_size, tolerable_deviation_rate. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "confidence_level": {},
        +  "expected_deviation_rate": {},
        +  "population_hash": {},
        +  "population_size": {},
        +  "tolerable_deviation_rate": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedplan_tls_pki_migration3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "interop_constraints": {},
        +  "inventory_ref": {},
        +  "migration_strategy": {},
        +  "pki": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedprecheck_reserve_attestation3 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: aicpa_answers, assets, outstanding_tokens. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aicpa_answers": {},
        +  "assets": {
        +    "type": "array"
        +  },
        +  "issuer_type": {},
        +  "outstanding_tokens": {
        +    "type": "number"
        +  },
        +  "token_price": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedpredict_settlement_fail3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "trades": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedprevalidation_readiness_scorer3 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: address_building_number, address_country, address_lines, address_post_code, address_street_name, address_town_name, bic, iban, lei, uetr. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "address_building_number": {},
        +  "address_country": {},
        +  "address_lines": {
        +    "type": "array"
        +  },
        +  "address_post_code": {},
        +  "address_street_name": {},
        +  "address_town_name": {},
        +  "bic": {},
        +  "iban": {},
        +  "lei": {},
        +  "uetr": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedprice_embedded_insurance3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "attach_rate_pct": {
        +    "type": "number"
        +  },
        +  "commission_pct": {
        +    "type": "number"
        +  },
        +  "item_value": {
        +    "type": "number"
        +  },
        +  "loss_ratio_pct": {
        +    "type": "number"
        +  },
        +  "monthly_tx": {
        +    "type": "number"
        +  },
        +  "opex_pct": {
        +    "type": "number"
        +  },
        +  "premium_pct": {
        +    "type": "number"
        +  },
        +  "reins_pct": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedprove_metadata_sanitization3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "bytes_after": {},
        +  "bytes_before": {},
        +  "file_type": {},
        +  "findings": {
        +    "type": "array"
        +  },
        +  "original_sha256": {},
        +  "sanitized_sha256": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedpublish_fund_nav_head3 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: chain_verification, head, prior_head, signature_verification. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chain_verification": {
        +    "type": "array"
        +  },
        +  "head": {},
        +  "prior_head": {},
        +  "signature_verification": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedpublish_index_head3 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: chain_verification, head, prior_head, signature_verification. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chain_verification": {
        +    "type": "array"
        +  },
        +  "head": {},
        +  "prior_head": {},
        +  "signature_verification": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedpublish_market_mark_head3 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: chain_verification, head, prior_head, signature_verification. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chain_verification": {
        +    "type": "array"
        +  },
        +  "head": {},
        +  "prior_head": {},
        +  "signature_verification": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedpublish_model_risk_head3 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: chain_verification, head, prior_head, signature_verification. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chain_verification": {
        +    "type": "array"
        +  },
        +  "head": {},
        +  "prior_head": {},
        +  "signature_verification": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrdarr_aggregation_recompute3 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: aggregation_policy, extract, hierarchy, reported_figure. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aggregation_policy": {},
        +  "base_currency": {},
        +  "extract": {
        +    "type": "array"
        +  },
        +  "hierarchy": {
        +    "type": "array"
        +  },
        +  "reported_figure": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrdarr_quality_scorecard3 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: extract, hierarchy_node_ids, mandatory_attributes, prerequisite_areas, thresholds. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cutoff_date": {},
        +  "extract": {
        +    "type": "array"
        +  },
        +  "guide_version": {},
        +  "hierarchy_node_ids": {
        +    "type": "array"
        +  },
        +  "mandatory_attributes": {
        +    "type": "array"
        +  },
        +  "prerequisite_areas": {},
        +  "thresholds": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_best_execution3 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: fills. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "fills": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_ccd2_aprc_annex33 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: drawdowns, repayments. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "drawdowns": {
        +    "type": "array"
        +  },
        +  "repayments": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_ccp_default_waterfall3 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: loss_amount_minor_units. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "loss_amount_minor_units": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_certified_payroll_pwa3 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: apprentice_program, currency, intentional_disregard, irc_6621_underpayment_rate_percent, payroll_rows, project_ref, pwa_mode, submitted_payroll, underpayment_days, wage_determination, week_ending_label. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "apprentice_program": {},
        +  "currency": {
        +    "type": "string"
        +  },
        +  "intentional_disregard": {
        +    "type": "boolean"
        +  },
        +  "irc_6621_underpayment_rate_percent": {},
        +  "payroll_rows": {},
        +  "project_ref": {},
        +  "pwa_mode": {
        +    "type": "boolean"
        +  },
        +  "submitted_payroll": {},
        +  "underpayment_days": {
        +    "type": "number"
        +  },
        +  "wage_determination": {},
        +  "week_ending_label": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_corporate_action_entitlement3 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: corporate_action_type, position_qty, ratio_or_rate, record_date, reference_id. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "corporate_action_type": {},
        +  "position_qty": {},
        +  "ratio_or_rate": {},
        +  "record_date": {},
        +  "reference_id": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_csdr_penalty3 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: open_fails, rate_table_version, recompute_id. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "open_fails": {
        +    "type": "array"
        +  },
        +  "rate_table_version": {
        +    "type": "string"
        +  },
        +  "recompute_id": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_erc4337_userop_math3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "callData": {
        +    "type": "string"
        +  },
        +  "callGasLimit": {
        +    "type": "number"
        +  },
        +  "chainId": {
        +    "type": "number"
        +  },
        +  "declaredActualGasCostWei": {
        +    "type": "string"
        +  },
        +  "declaredActualGasUsed": {
        +    "type": "number"
        +  },
        +  "declaredBaseFeePerGas": {
        +    "type": "number"
        +  },
        +  "declaredL1DataFeeWei": {
        +    "type": "string"
        +  },
        +  "entryPoint": {
        +    "type": "string"
        +  },
        +  "entryPointVersion": {
        +    "type": "string"
        +  },
        +  "initCode": {
        +    "type": "string"
        +  },
        +  "maxFeePerGas": {
        +    "type": "number"
        +  },
        +  "maxPriorityFeePerGas": {
        +    "type": "number"
        +  },
        +  "nonce": {
        +    "type": "number"
        +  },
        +  "paymasterAndData": {
        +    "type": "string"
        +  },
        +  "preVerificationGas": {
        +    "type": "number"
        +  },
        +  "reconciliationToleranceWei": {
        +    "type": "string"
        +  },
        +  "sender": {
        +    "type": "string"
        +  },
        +  "verificationGasLimit": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_erc4626_vault_share_math3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chain_id": {
        +    "type": "string"
        +  },
        +  "decimals_offset": {
        +    "type": "string"
        +  },
        +  "fee_basis": {
        +    "type": "string"
        +  },
        +  "fee_bps": {
        +    "type": "string"
        +  },
        +  "network_label": {
        +    "type": "string"
        +  },
        +  "operations": {
        +    "type": "array"
        +  },
        +  "round_trip_assets": {
        +    "type": "string"
        +  },
        +  "snapshot_b": {
        +    "type": "object"
        +  },
        +  "total_assets": {
        +    "type": "string"
        +  },
        +  "total_supply": {
        +    "type": "string"
        +  },
        +  "virtual_amounts": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_erc7540_request_accounting3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chain_id": {
        +    "type": "string"
        +  },
        +  "claim_rounding": {
        +    "type": "string"
        +  },
        +  "claims": {
        +    "type": "array"
        +  },
        +  "deposit": {
        +    "type": "object"
        +  },
        +  "network_label": {
        +    "type": "string"
        +  },
        +  "redeem": {
        +    "type": "object"
        +  },
        +  "request_id": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_exchange_fee_tier_invoice3 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: claimed_invoice_micros, fee_schedule, invoice_period, prior_period_adv_shares, recompute_tolerance_micros, volume_lines. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "claimed_invoice_micros": {},
        +  "fee_schedule": {},
        +  "invoice_period": {},
        +  "prior_period_adv_shares": {},
        +  "recompute_tolerance_micros": {},
        +  "volume_lines": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_fund_fees3 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: management_fee, nav, performance_fee, period_days, rounding. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agreement_ref": {},
        +  "as_of": {},
        +  "charged_amounts": {},
        +  "fund_id": {},
        +  "management_fee": {},
        +  "nav": {},
        +  "performance_fee": {},
        +  "period_days": {
        +    "type": "number"
        +  },
        +  "period_end": {},
        +  "period_start": {},
        +  "rounding": {},
        +  "terms_version": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_fund_nav3 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: accruals, holdings, liabilities, rounding, shares_outstanding. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "accruals": {
        +    "type": "array"
        +  },
        +  "base_currency": {},
        +  "fund_id": {},
        +  "holdings": {
        +    "type": "array"
        +  },
        +  "liabilities": {
        +    "type": "array"
        +  },
        +  "rounding": {},
        +  "shares_outstanding": {},
        +  "valuation_date": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_garnishment_stack3 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: currency, employee_ref, federal_minimum_wage_dated, federal_minimum_wage_minor_units, gross_minor_units, legally_required_deductions, noticed_amounts, orders, period_label, state_overlay. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "currency": {
        +    "type": "string"
        +  },
        +  "employee_ref": {},
        +  "federal_minimum_wage_dated": {},
        +  "federal_minimum_wage_minor_units": {},
        +  "gross_minor_units": {},
        +  "legally_required_deductions": {},
        +  "noticed_amounts": {},
        +  "orders": {},
        +  "period_label": {},
        +  "state_overlay": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_lease_schedule_asc842_ifrs163 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: classification_inputs, compare_regime, diff_tolerance_minor, discount_rate_annual, initial_direct_costs_minor, lease_incentives_minor, lease_term, payment_schedule, preparer_schedule, timing. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "classification_inputs": {},
        +  "compare_regime": {
        +    "enum": [
        +      "asc842",
        +      "ifrs16"
        +    ],
        +    "type": "string"
        +  },
        +  "diff_tolerance_minor": {},
        +  "discount_rate_annual": {
        +    "type": "number"
        +  },
        +  "initial_direct_costs_minor": {},
        +  "lease_incentives_minor": {},
        +  "lease_term": {},
        +  "payment_schedule": {
        +    "type": "array"
        +  },
        +  "preparer_schedule": {
        +    "type": "array"
        +  },
        +  "timing": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_mla_mapr_actuarial3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "advances": {
        +    "type": "array"
        +  },
        +  "loan_amount": {
        +    "type": "number"
        +  },
        +  "mla_charges": {
        +    "type": "array"
        +  },
        +  "num_payments": {
        +    "type": "number"
        +  },
        +  "odd_days": {
        +    "type": "number"
        +  },
        +  "payment_amount": {
        +    "type": "number"
        +  },
        +  "payments": {
        +    "type": "array"
        +  },
        +  "periods_per_year": {
        +    "type": "number"
        +  },
        +  "unit_period_days": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_payment_waterfall3 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: asserted_allocations, available_funds, available_funds_minor_units, currency, deal_ref, ladder_ref, period_label, priority_ladder, tests. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asserted_allocations": {},
        +  "available_funds": {},
        +  "available_funds_minor_units": {},
        +  "currency": {
        +    "type": "string"
        +  },
        +  "deal_ref": {},
        +  "ladder_ref": {},
        +  "period_label": {},
        +  "priority_ladder": {},
        +  "tests": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_pe_waterfall_lp3 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: cashflows, gp_reported_allocation, waterfall. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "cashflows": {
        +    "type": "array"
        +  },
        +  "deal_id": {},
        +  "fund_id": {},
        +  "gp_reported_allocation": {},
        +  "waterfall": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_section16b_profit3 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: currency, demand_letter_claimed_profit_minor_units, insider_ref, insider_status, issuer_ref, transactions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "currency": {
        +    "type": "string"
        +  },
        +  "demand_letter_claimed_profit_minor_units": {},
        +  "insider_ref": {},
        +  "insider_status": {},
        +  "issuer_ref": {},
        +  "transactions": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_stablecoin_reserve_3source3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "leg_a": {
        +    "type": "object|null"
        +  },
        +  "leg_b": {
        +    "type": "object|null"
        +  },
        +  "leg_c": {
        +    "type": "object|null"
        +  },
        +  "max_as_of_skew_days": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_stock_loan_rebate_fee3 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: diff_tolerance_minor, loans, required_margin_pct, statement_period. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "diff_tolerance_minor": {},
        +  "loans": {
        +    "type": "array"
        +  },
        +  "required_margin_pct": {
        +    "type": "number"
        +  },
        +  "statement_period": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_tmpg_fails_charge3 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: diff_tolerance_minor, fails. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "diff_tolerance_minor": {},
        +  "fails": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_trustee_report_waterfall3 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: currency, deal_ref, indenture_ref, period_collections, period_label, tiers, triggers, trustee_reported_distribution. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "currency": {
        +    "type": "string"
        +  },
        +  "deal_ref": {},
        +  "indenture_ref": {},
        +  "period_collections": {},
        +  "period_label": {},
        +  "tiers": {},
        +  "triggers": {},
        +  "trustee_reported_distribution": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_x402_eip712_digest3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chainId": {
        +    "type": "number"
        +  },
        +  "from": {
        +    "type": "string"
        +  },
        +  "name": {
        +    "type": "string"
        +  },
        +  "nonce": {
        +    "type": "string"
        +  },
        +  "to": {
        +    "type": "string"
        +  },
        +  "validAfter": {
        +    "type": "number"
        +  },
        +  "validBefore": {
        +    "type": "number"
        +  },
        +  "value": {
        +    "type": "number"
        +  },
        +  "verifyingContract": {
        +    "type": "string"
        +  },
        +  "version": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecompute_x402_permit2_digest3 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: chainId, deadline, details, domain, eip2612GasSponsoring, from, nonce, nonce_already_used, now_unix, permitted, requirement, sigDeadline, signature, spender, variant, verifyingContract, version, witness. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chainId": {},
        +  "deadline": {},
        +  "details": {},
        +  "domain": {},
        +  "eip2612GasSponsoring": {},
        +  "from": {},
        +  "nonce": {},
        +  "nonce_already_used": {},
        +  "now_unix": {},
        +  "permitted": {},
        +  "requirement": {},
        +  "sigDeadline": {},
        +  "signature": {},
        +  "spender": {},
        +  "variant": {},
        +  "verifyingContract": {},
        +  "version": {},
        +  "witness": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreconcile_aml_lookback_completeness3 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: periods. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "periods": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreconcile_commission_statement3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "statement_lines": {},
        +  "tolerance_pct": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreconcile_erc8056_multiplier3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "current_multiplier": {},
        +  "declared_action": {},
        +  "event_log": {},
        +  "prior_multiplier": {},
        +  "raw_balance_after": {},
        +  "raw_balance_before": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreconcile_mpp_subscription3 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: draws, envelope. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "draws": {
        +    "type": "array"
        +  },
        +  "envelope": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreconcile_report_to_general_ledger3 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: accounts, appendix_schedule_source, appendix_schedule_version, as_of, currency, gl_as_of, gl_closed, tolerance_minor_units. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "accounts": {
        +    "type": "array"
        +  },
        +  "appendix_schedule_source": {
        +    "type": "string"
        +  },
        +  "appendix_schedule_version": {
        +    "type": "string"
        +  },
        +  "as_of": {},
        +  "currency": {
        +    "type": "string"
        +  },
        +  "gl_as_of": {},
        +  "gl_closed": {
        +    "type": "boolean"
        +  },
        +  "reporting_cadence": {},
        +  "schedule_cadence": {},
        +  "tolerance_minor_units": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreconcile_sii_ifrs173 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "provisions": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreconcile_token2022_transfer_fee3 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: older_transfer_fee, newer_transfer_fee, amount, execution_epoch, instruction, credited_amount. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amount": {
        +    "type": "string"
        +  },
        +  "credited_amount": {
        +    "type": "string"
        +  },
        +  "declared_fee": {
        +    "type": "string"
        +  },
        +  "execution_epoch": {
        +    "type": "string"
        +  },
        +  "instruction": {
        +    "enum": [
        +      "TransferChecked",
        +      "TransferCheckedWithFee"
        +    ],
        +    "type": "string"
        +  },
        +  "newer_transfer_fee": {
        +    "type": "object"
        +  },
        +  "older_transfer_fee": {
        +    "type": "object"
        +  },
        +  "required_amount": {
        +    "type": "string"
        +  },
        +  "verifier_epoch": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreconcile_v4_hook_permissions3 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: hook_address, declared_permissions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "declaration_source": {
        +    "type": "string"
        +  },
        +  "declared_permissions": {
        +    "type": "object"
        +  },
        +  "hook_address": {
        +    "type": "string"
        +  },
        +  "pool_fee": {
        +    "type": "integer"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreconcile_x402_batch_settlement3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "batch": {},
        +  "finality_threshold": {},
        +  "tolerance_minor_units": {},
        +  "vouchers": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecord_fund_positions3 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: holdings, shares_outstanding. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "fund_id": {},
        +  "holdings": {
        +    "type": "array"
        +  },
        +  "shares_outstanding": {
        +    "type": "number"
        +  },
        +  "valuation_date": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecord_index_constituents3 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: constituents, selection_universe_size. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "constituents": {
        +    "type": "array"
        +  },
        +  "eligibility_criteria_ref": {},
        +  "index_id": {},
        +  "selection_universe_size": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrecord_model_input_lineage3 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: as_of_date, attributes, model_id, run_ref. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "attributes": {
        +    "type": "array"
        +  },
        +  "model_id": {},
        +  "run_ref": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedregister_mra_remediation_closure3 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: evaluated_at, issue_id_commitment_scheme, issues, overdue_grace_days, register_id, remediation_status. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "evaluated_at": {},
        +  "issue_id_commitment_scheme": {
        +    "type": "string"
        +  },
        +  "issues": {
        +    "type": "array"
        +  },
        +  "overdue_grace_days": {},
        +  "register_id": {
        +    "type": "string"
        +  },
        +  "remediation_status": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedregister_source_arrival_freshness3 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: expected_sources, observed_arrivals, reference_as_of. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "expected_sources": {
        +    "type": "array"
        +  },
        +  "observed_arrivals": {
        +    "type": "array"
        +  },
        +  "reference_as_of": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreplay_supervisory_scenario3 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: loss_function, ppnr_function, quarterly_distribution_mn, rwa_mn, scenario, starting_capital_mn, tax_rate. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "loss_function": {},
        +  "ppnr_function": {},
        +  "quarterly_distribution_mn": {},
        +  "rwa_mn": {},
        +  "scenario": {},
        +  "starting_capital_mn": {},
        +  "tax_rate": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedreplicate_model_outputs3 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: model_spec, records, tolerance. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "model_spec": {},
        +  "records": {
        +    "type": "array"
        +  },
        +  "tolerance": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedresolve_cbam_default_value3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "actual_data_available": {},
        +  "cn_code": {},
        +  "country_of_origin": {},
        +  "good_category": {},
        +  "reporting_year": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedresolve_recall_trace3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "contaminated_tlc": {},
        +  "direction": {},
        +  "edges": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedresolve_rule_version3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "query": {
        +    "type": "object"
        +  },
        +  "registry_slice": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedroll_up_aml_lookback_disposition3 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: as_of, lookback_close_date, lookback_id, population_size, sample_frame_population_size, sample_frame_size, sampled_items, sampling_frame_discrepancy_flag. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "lookback_close_date": {},
        +  "lookback_id": {
        +    "type": "string"
        +  },
        +  "population_size": {},
        +  "sample_frame_population_size": {},
        +  "sample_frame_size": {},
        +  "sampled_items": {
        +    "type": "array"
        +  },
        +  "sampling_frame_discrepancy_flag": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrollforward_y14_capital_worksheet3 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: additions, beginning_balances, constants_version, cross_check, deductions, entity_id, published_scenario, reporting_period. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "additions": {
        +    "type": "number"
        +  },
        +  "beginning_balances": {
        +    "type": "number"
        +  },
        +  "constants_version": {},
        +  "cross_check": {},
        +  "deductions": {
        +    "type": "number"
        +  },
        +  "entity_id": {},
        +  "published_scenario": {
        +    "type": "number"
        +  },
        +  "reporting_period": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedroute_einvoice_jurisdiction_mandate3 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: buyer_country, supplier_country, transaction_date, transaction_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "buyer_country": {
        +    "type": "string"
        +  },
        +  "supplier_country": {
        +    "type": "string"
        +  },
        +  "transaction_date": {},
        +  "transaction_type": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedroute_partner_stablecoin_jurisdiction3 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: corridor_legs. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "corridor_legs": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_401k_adp_acp_test3 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: acp_hce_pct, acp_nhce_pct, adp_hce_pct, adp_nhce_pct, method. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "acp_hce_pct": {},
        +  "acp_nhce_pct": {},
        +  "adp_hce_pct": {},
        +  "adp_nhce_pct": {},
        +  "method": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_agent_economy_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agent_volume_txns_per_day": {},
        +  "batch_settlement": {},
        +  "dispute_path": {},
        +  "hnp_autonomy": {},
        +  "mandate_binding": {},
        +  "metering_basis": {},
        +  "operator_type": {},
        +  "receipt_standard": {},
        +  "recon_model": {},
        +  "runtime_fraud_controls": {},
        +  "settlement_protocol": {},
        +  "spend_controls": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_ai_act_highrisk_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "actor_role": {},
        +  "ai_literacy_programme": {},
        +  "annex_iii_match": {},
        +  "data_governance": {},
        +  "eu_nexus": {},
        +  "foundation_model_dependency": {},
        +  "fria_status": {},
        +  "logging_oversight": {},
        +  "model_risk_framework": {},
        +  "post_market_monitoring": {},
        +  "prohibited_practice_exposure": {},
        +  "risk_mgmt_system": {},
        +  "system_name": {},
        +  "technical_documentation": {},
        +  "use_case": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_ai_governance_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entity": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_audit_recalc_suite3 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: amortization, depreciation, eps, interest_accrual, prepaid_rollforward, tolerance. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amortization": {},
        +  "depreciation": {},
        +  "eps": {},
        +  "interest_accrual": {},
        +  "prepaid_rollforward": {},
        +  "tolerance": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_call_report_edit_checks3 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: rc_output_payload, rcr_output_payload. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "rc_output_payload": {
        +    "type": "boolean"
        +  },
        +  "rcr_output_payload": {
        +    "type": "boolean"
        +  },
        +  "rounding_tolerance_usd": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_carbon_compliance_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cbam_good_categories": {},
        +  "climate_stress_applicable": {},
        +  "declarant_status": {},
        +  "emissions_data_basis": {},
        +  "entity_name": {},
        +  "eu_nexus": {},
        +  "eugb_intent": {},
        +  "imports_cbam_goods": {},
        +  "origin_carbon_price": {},
        +  "reporting_year": {},
        +  "taxonomy_objectives_assessed": {},
        +  "taxonomy_scope": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_digital_trade_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annual_trade_docs": {},
        +  "api_readiness": {},
        +  "counterparty_type": {},
        +  "dest_jurisdiction": {},
        +  "doc_set_scope": {},
        +  "ebl_platform": {},
        +  "ebl_usage": {},
        +  "finance_mode": {},
        +  "origin_jurisdiction": {},
        +  "party_screening": {},
        +  "rule_basis": {},
        +  "tbml_controls": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_dora_readiness_diagnostic3 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: answers. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "answers": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_eudr_readiness_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entity": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_illustration_selfsupport_test3 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: account_values, cost_of_insurance, credited_interest, expense_charges, face_amount, lapse_rates, premium_payments. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "account_values": {},
        +  "cost_of_insurance": {},
        +  "credited_interest": {},
        +  "expense_charges": {},
        +  "face_amount": {},
        +  "lapse_rates": {},
        +  "premium_payments": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_insurance_reporting_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entity": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_irrbb_disclosure_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "entity": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_liquidity_stress_test3 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: asf_cap, hqla_l1, hqla_l2a, hqla_l2b, inflows, preset, retail_outflow, rsf_loans, rsf_other, rsf_securities, scenario, secured_outflow, wholesale_outflow. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asf_cap": {},
        +  "hqla_l1": {},
        +  "hqla_l2a": {},
        +  "hqla_l2b": {},
        +  "inflows": {},
        +  "n_paths": {
        +    "type": "number"
        +  },
        +  "preset": {},
        +  "retail_outflow": {},
        +  "rsf_loans": {},
        +  "rsf_other": {},
        +  "rsf_securities": {},
        +  "scenario": {},
        +  "secured_outflow": {},
        +  "seed": {},
        +  "wholesale_outflow": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_mica_casp_fit3 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: inputs. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "current_status": {},
        +  "custody_segregation": {},
        +  "governance_maturity": {},
        +  "inputs": {},
        +  "mar_arrangements": {},
        +  "member_state": {},
        +  "own_funds_status": {},
        +  "services": {},
        +  "travel_rule_status": {},
        +  "whitepaper_required": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_model_test_battery3 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: as_of_date, backtest, discrimination, stability, threshold_version, thresholds. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "backtest": {},
        +  "discrimination": {},
        +  "stability": {},
        +  "threshold_version": {},
        +  "thresholds": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_pqc_timeline_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agility_maturity": {},
        +  "cnsa_applicability": {},
        +  "crypto_inventory_status": {},
        +  "hndl_data_shelf_life": {},
        +  "hndl_long_shelf_flag": {},
        +  "inventory_complete": {},
        +  "notes": {},
        +  "protocol_estate": {},
        +  "regulatory_drivers": {},
        +  "sector": {},
        +  "sector_preset": {},
        +  "vendor_pqc_roadmap": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_rate_shock_ladder3 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: nii_12m_gap, shock_presets. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "nii_12m_gap": {},
        +  "repricing_gaps": {},
        +  "shock_presets": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_regrpt_edit_checks3 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: report_instance, rule_set, suppressions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "report_instance": {},
        +  "rule_set": {},
        +  "suppressions": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_sanctions_screening_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "adverse_media": {},
        +  "alert_review_sla": {},
        +  "business_model": {},
        +  "circumvention_controls": {},
        +  "export_control_exposure": {},
        +  "fuzzy_match_governance": {},
        +  "jurisdictional_nexus": {},
        +  "ownership_screening": {},
        +  "pep_screening": {},
        +  "sanctions_lists_screened": {},
        +  "screening_frequency": {},
        +  "sectoral_screening": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_section125_ndt3 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: hce_avg_benefit_pct, hce_eligible_count, hce_total_count, key_employee_elected_total, nhce_avg_benefit_pct, nhce_eligible_count, nhce_total_count, total_elected_all_participants. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "hce_avg_benefit_pct": {},
        +  "hce_eligible_count": {},
        +  "hce_total_count": {},
        +  "key_employee_elected_total": {},
        +  "nhce_avg_benefit_pct": {},
        +  "nhce_eligible_count": {},
        +  "nhce_total_count": {},
        +  "total_elected_all_participants": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_slate_reporting_fit3 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: field_spec_mapping_complete, recordkeeping_retention_configured, reporting_agent_registered, same_day_capture_configured, unique_loan_identifier_scheme. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "field_spec_mapping_complete": {
        +    "type": "boolean"
        +  },
        +  "recordkeeping_retention_configured": {
        +    "type": "boolean"
        +  },
        +  "reporting_agent_registered": {
        +    "type": "boolean"
        +  },
        +  "same_day_capture_configured": {
        +    "type": "boolean"
        +  },
        +  "unique_loan_identifier_scheme": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_t1_readiness_diagnostic3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "allocation_confirmation_timing": {},
        +  "corporate_actions_readiness": {},
        +  "csd_participations": {},
        +  "firm_type": {},
        +  "fx_funding_compression": {},
        +  "instrument_classes": {},
        +  "jurisdictions": {},
        +  "matching_method": {},
        +  "partial_settlement_enabled": {},
        +  "penalty_exposure_monitoring": {},
        +  "ssi_automation": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_tokenized_settlement_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "annual_settlement_value_usd": {},
        +  "asset_leg_type": {},
        +  "atomicity_mechanism": {},
        +  "cash_leg_asset": {},
        +  "deposit_token_issuer": {},
        +  "finality_regime": {},
        +  "intraday_liquidity": {},
        +  "network_model": {},
        +  "operating_hours": {},
        +  "participant_eligibility": {},
        +  "participant_type": {},
        +  "reconciliation_model": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_treasury_clearing_fit3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "activity_cash": {},
        +  "activity_repo": {},
        +  "agreements_status": {},
        +  "capital_constrained": {},
        +  "connectivity": {},
        +  "cross_product_hedges": {},
        +  "current_access": {},
        +  "execution_breadth": {},
        +  "exemption_claimed": {},
        +  "hqla_inventory_pct": {},
        +  "im_funding_ready": {},
        +  "intraday_liquidity": {},
        +  "primary_product": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_umr_aana_readiness3 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: counterparties. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aana_group_eur": {
        +    "type": "number"
        +  },
        +  "counterparties": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedrun_vop_readiness_diagnostic3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "psp_vop_response_code": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscope_mica_token_and_service3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inputs": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_agent_insurability_evidence3 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: execution_claims, incident_history, receipts, reputation, underwriter_profile. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "execution_claims": {},
        +  "incident_history": {},
        +  "receipts": {},
        +  "reputation": {},
        +  "underwriter_profile": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_aml_typologies3 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: transactions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "round_trip_window_hours": {},
        +  "scenario": {},
        +  "structuring_threshold": {},
        +  "transactions": {},
        +  "velocity_window_hours": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_cash_forecast_accuracy3 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: forecasts. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "forecasts": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_credit_default_risk3 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: asset_class, lgd, maturity_yrs, n_loans, pd_threshold, preset, seed, target_default_rate. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asset_class": {},
        +  "lgd": {},
        +  "maturity_yrs": {},
        +  "n_loans": {
        +    "type": "number"
        +  },
        +  "pd_threshold": {},
        +  "preset": {},
        +  "seed": {},
        +  "target_default_rate": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_credit_model_quantized3 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: normalized_fixp16. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "normalized_fixp16": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_eudr_country_risk3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "country_code": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_mcp_server_readiness3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "answers": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_mt_mx_translation_fidelity3 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: mt_f20, mt_f23b, mt_f32a, mt_f50, mt_f52a, mt_f57a, mt_f59, mt_f70, mt_f71a, mx_cdtr_agt, mx_cdtr_nm, mx_chrg_br, mx_dbtr_agt, mx_dbtr_nm, mx_rmt_ustrd, mx_uetr. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "mt_f20": {},
        +  "mt_f23b": {},
        +  "mt_f32a": {},
        +  "mt_f50": {},
        +  "mt_f52a": {},
        +  "mt_f57a": {},
        +  "mt_f59": {},
        +  "mt_f70": {},
        +  "mt_f71a": {},
        +  "mx_cdtr_agt": {},
        +  "mx_cdtr_nm": {},
        +  "mx_chrg_br": {},
        +  "mx_dbtr_agt": {},
        +  "mx_dbtr_nm": {},
        +  "mx_rmt_ustrd": {},
        +  "mx_uetr": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_nis2_incident_significance3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cross_border_impact": {},
        +  "entity_classification": {},
        +  "estimated_affected_users": {},
        +  "estimated_financial_loss_eur": {},
        +  "involves_malicious_act": {},
        +  "service_disruption_hours": {},
        +  "third_party_cascade_impact": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_nis2_supply_chain_diligence3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "audit_clause_in_contract": {},
        +  "breach_notification_sla_hours": {},
        +  "data_residency_eu_only": {},
        +  "service_availability_pct": {},
        +  "sub_contractor_count": {},
        +  "vendor_incident_history_12mo": {},
        +  "vendor_iso27001_certified": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_partner_stablecoin_readiness3 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: issuer_profile. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "issuer_profile": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_payee_name_match3 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: close_match_threshold, match_threshold. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "account_name": {},
        +  "close_match_threshold": {},
        +  "match_threshold": {},
        +  "reference_name": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_sanctions_screening_quality3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inputs": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscore_taxonomy_alignment3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "activity": {},
        +  "criterion_refs": {},
        +  "dnsh": {},
        +  "minimum_safeguards": {},
        +  "substantial_contribution": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscreen_je_ruleset3 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: active_rules, entries, extract_population_hash, rule_params, rule_severity, ruleset_version. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "active_rules": {},
        +  "entries": {},
        +  "extract_population_hash": {},
        +  "rule_params": {},
        +  "rule_severity": {},
        +  "ruleset_version": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscreen_onledger_transfer_batch3 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: profile, screening_lists_meta, transfers. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "profile": {},
        +  "screening_lists_meta": {},
        +  "transfers": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscreen_sanctions_private3 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: list_version. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "list_version": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedscreen_tip20_transfer_batch3 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: sar_threshold, tr_threshold, transfers. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "sar_threshold": {
        +    "type": "number"
        +  },
        +  "tr_threshold": {
        +    "type": "number"
        +  },
        +  "transfers": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedselect_agentic_checkout_protocol3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agent_appetite": {},
        +  "aov": {},
        +  "buyer_type": {},
        +  "geo": {},
        +  "platform": {},
        +  "stack_card": {},
        +  "stack_crypto": {},
        +  "tech_cap": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedselect_cbe_license3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "commercial": {},
        +  "exclusive": {},
        +  "hate_speech_termination": {},
        +  "waive_all": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedselect_embedded_license3 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: allow_sharing, commercial_use, public_display. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "allow_sharing": {},
        +  "commercial_use": {},
        +  "public_display": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedservicing_compliance_clock3 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: events. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "events": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsimulate_agent_spend_policy3 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: activeMCCs, allowWeekend, approvalTimeout, blockHoliday, boardSig, capDaily, capFlag, capMonthly, capSingle, destJurisdiction, dualSig, kycCheck, ofacCheck, origJurisdiction, rail, singleSig, timeEnd, timeStart, velCooldown, velDay, velHour. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "activeMCCs": {
        +    "type": "array"
        +  },
        +  "allowWeekend": {},
        +  "approvalTimeout": {},
        +  "blockHoliday": {},
        +  "boardSig": {},
        +  "capDaily": {},
        +  "capFlag": {},
        +  "capMonthly": {},
        +  "capSingle": {},
        +  "destJurisdiction": {},
        +  "dualSig": {},
        +  "kycCheck": {},
        +  "ofacCheck": {},
        +  "origJurisdiction": {},
        +  "rail": {},
        +  "singleSig": {},
        +  "timeEnd": {},
        +  "timeStart": {},
        +  "velCooldown": {},
        +  "velDay": {},
        +  "velHour": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsimulate_consent_stress3 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: nConsents, pAuthFail, pExpiry, pRedirectFail, pRevoke, pTokenFail, regime, seed. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "nConsents": {
        +    "type": "number"
        +  },
        +  "pAuthFail": {
        +    "type": "number"
        +  },
        +  "pExpiry": {
        +    "type": "number"
        +  },
        +  "pRedirectFail": {
        +    "type": "number"
        +  },
        +  "pRevoke": {
        +    "type": "number"
        +  },
        +  "pTokenFail": {
        +    "type": "number"
        +  },
        +  "regime": {},
        +  "seed": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsimulate_frtb_es3 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: confidenceLevel, nPositions, nRiskClasses, nScenarios, nmrfRate, seed. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "confidenceLevel": {
        +    "type": "number"
        +  },
        +  "nPositions": {
        +    "type": "number"
        +  },
        +  "nRiskClasses": {
        +    "type": "number"
        +  },
        +  "nScenarios": {
        +    "type": "number"
        +  },
        +  "nmrfRate": {
        +    "type": "number"
        +  },
        +  "seed": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsimulate_gpi_tracker_lifecycle3 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: amount_usd, current_status, hours_elapsed, next_status. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amount_usd": {
        +    "type": "number"
        +  },
        +  "current_status": {},
        +  "hours_elapsed": {
        +    "type": "number"
        +  },
        +  "next_status": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsimulate_output_floor3 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: phase_in_schedule, rule_status. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "internal_model_rwa": {
        +    "type": "number"
        +  },
        +  "phase_in_schedule": {
        +    "type": "array"
        +  },
        +  "rule_status": {},
        +  "standardized_rwa": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsimulate_spend_policy3 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: blocked_categories, blocked_merchants, chaos, daily_limit, drip_freq, hnp_ratio, monthly_limit, n_txns, per_tx_limit, seed. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "allowed_methods": {},
        +  "blocked_categories": {},
        +  "blocked_merchants": {},
        +  "chaos": {},
        +  "daily_limit": {},
        +  "drip_freq": {},
        +  "hnp_ratio": {},
        +  "hour_restriction": {},
        +  "monthly_limit": {},
        +  "n_txns": {},
        +  "per_tx_limit": {},
        +  "seed": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsimulate_stablecoin_reserve3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "art36_buffer": {},
        +  "horizon_days": {},
        +  "n_paths": {
        +    "type": "number"
        +  },
        +  "reserve_ratio_init": {},
        +  "scenario": {},
        +  "seed": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsimulate_var_monte_carlo3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "conf_level": {
        +    "type": "number"
        +  },
        +  "correlation": {
        +    "type": "number"
        +  },
        +  "holding_period": {
        +    "type": "integer"
        +  },
        +  "n_assets": {
        +    "type": "integer"
        +  },
        +  "n_paths": {
        +    "type": "integer"
        +  },
        +  "portfolio_value_mm": {
        +    "type": "number"
        +  },
        +  "seed": {
        +    "type": "integer"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsimulate_vop_matching3 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: close_match_threshold, match_threshold, payees. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "close_match_threshold": {},
        +  "match_threshold": {},
        +  "payees": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsimulate_x402_flow3 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: header_or_payload. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "header_or_payload": {},
        +  "payload": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsize_ccp_default_fund_cover23 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: as_of, fund_size_minor_units, members, stress_scenarios. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "fund_size_minor_units": {},
        +  "members": {
        +    "type": "array"
        +  },
        +  "stress_scenarios": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedstress_test_ap_redemption_path3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "authorised_participants": {},
        +  "issuer_credit": {},
        +  "secondary_market_depth": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsweep_docket_deadlines3 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: as_of_date, due_soon_days_threshold, records, roll_rule. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "due_soon_days_threshold": {
        +    "type": "number"
        +  },
        +  "records": {
        +    "type": "array"
        +  },
        +  "roll_rule": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedsweep_fedwire_addresses3 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: as_of_date, file_content, records. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "file_content": {},
        +  "records": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedtest_asc280_reportable_segment3 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: segment_revenue_external, combined_revenue_all_reported_segments, segment_profit_or_loss, combined_profit_of_profitable_segments, combined_loss_of_loss_segments, segment_assets, combined_assets_all_segments, reportable_external_revenue, total_consolidated_revenue. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aggregation_similar_customer_type": {
        +    "type": "boolean|null"
        +  },
        +  "aggregation_similar_distribution_methods": {
        +    "type": "boolean|null"
        +  },
        +  "aggregation_similar_production_processes": {
        +    "type": "boolean|null"
        +  },
        +  "aggregation_similar_products_services": {
        +    "type": "boolean|null"
        +  },
        +  "aggregation_similar_regulatory_environment": {
        +    "type": "boolean|null"
        +  },
        +  "combined_assets_all_segments": {
        +    "type": "number"
        +  },
        +  "combined_loss_of_loss_segments": {
        +    "type": "number"
        +  },
        +  "combined_profit_of_profitable_segments": {
        +    "type": "number"
        +  },
        +  "combined_revenue_all_reported_segments": {
        +    "type": "number"
        +  },
        +  "reportable_external_revenue": {
        +    "type": "number"
        +  },
        +  "reportable_segment_count": {
        +    "type": "number|null"
        +  },
        +  "segment_assets": {
        +    "type": "number"
        +  },
        +  "segment_profit_or_loss": {
        +    "type": "number"
        +  },
        +  "segment_revenue_external": {
        +    "type": "number"
        +  },
        +  "segment_revenue_intersegment": {
        +    "type": "number"
        +  },
        +  "total_consolidated_revenue": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedtest_bifsg_bias_thresholds3 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: model_type, test_context. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "attestation_year": {
        +    "type": "number"
        +  },
        +  "marginal_effect_pct": {
        +    "type": "number"
        +  },
        +  "model_type": {},
        +  "p_value": {
        +    "type": "number"
        +  },
        +  "premium_per_1000_above_avg_pct": {
        +    "type": "number"
        +  },
        +  "test_context": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedtest_hedge_effectiveness3 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: effectiveness_standard, hedge_ratio, hedged_item_changes, hedging_instrument_changes, method. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "effectiveness_standard": {},
        +  "hedge_ratio": {},
        +  "hedged_item_changes": {
        +    "type": "array"
        +  },
        +  "hedging_instrument_changes": {
        +    "type": "array"
        +  },
        +  "method": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedtest_hoepa_high_cost3 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: has_prepayment_penalty, is_small_dwelling, lien_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "apor_pct": {
        +    "type": "number"
        +  },
        +  "apr_pct": {
        +    "type": "number"
        +  },
        +  "has_prepayment_penalty": {
        +    "type": "boolean"
        +  },
        +  "is_small_dwelling": {
        +    "type": "boolean"
        +  },
        +  "lien_type": {},
        +  "loan_amount": {
        +    "type": "number"
        +  },
        +  "points_and_fees": {
        +    "type": "number"
        +  },
        +  "prepayment_penalty_pct": {
        +    "type": "number"
        +  },
        +  "prepayment_penalty_period_months": {
        +    "type": "number"
        +  },
        +  "year": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedtest_nav_error_materiality3 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: affected_period, corrected_nav_per_share, erroneous_nav_per_share, materiality_policy, shares_outstanding. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "affected_period": {},
        +  "corrected_nav_per_share": {},
        +  "erroneous_nav_per_share": {},
        +  "fund_id": {},
        +  "materiality_policy": {},
        +  "shares_outstanding": {},
        +  "valuation_date": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedtest_reg_w_affiliate_transactions3 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: aggregate_affiliate_limit_pct, capital_base, collateral_coverage_required_pct, policy_vintage, single_affiliate_limit_pct, transactions. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "aggregate_affiliate_limit_pct": {},
        +  "capital_base": {},
        +  "collateral_coverage_required_pct": {},
        +  "policy_vintage": {},
        +  "single_affiliate_limit_pct": {},
        +  "transactions": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedtrack_fatca_crs_ro_remediation_closure3 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: certification_period, cutoff_at, evaluated_at, notifications, remediation_records. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "certification_period": {},
        +  "cutoff_at": {},
        +  "evaluated_at": {},
        +  "notifications": {
        +    "type": "array"
        +  },
        +  "remediation_records": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedtrack_globe_transition_deferred_tax3 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: minimum_rate, cutoff_date, exclusion_rules, items. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "constants_version": {
        +    "type": "string"
        +  },
        +  "cutoff_date": {
        +    "type": "string"
        +  },
        +  "exclusion_rules": {
        +    "type": "array"
        +  },
        +  "items": {
        +    "type": "array"
        +  },
        +  "minimum_rate": {
        +    "type": "number"
        +  },
        +  "transition_year_start_date": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedtrack_ifrs17_loss_component_rollforward3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "loss_component": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_a2a_trust_chain3 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: agent_card, delegation_chain, spend_policy. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agent_card": {},
        +  "delegation_chain": {
        +    "type": "array"
        +  },
        +  "spend_policy": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_a2a_x402_mandate3 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: agent_card, mandate_cap, payment_payload. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agent_card": {},
        +  "mandate_cap": {},
        +  "payment_payload": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_acp_checkout3 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: payload. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "message_type_override": {},
        +  "payload": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_adverse_action_notice3 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: action_taken, credit_score_used, notice_includes_action_taken, notice_includes_credit_bureau_info, notice_includes_creditor_name, notice_includes_date, notice_includes_dispute_right, notice_includes_fcra_rights, notice_includes_right_to_copy, reason_code_source, reasons. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "action_taken": {},
        +  "credit_score_used": {},
        +  "notice_includes_action_taken": {},
        +  "notice_includes_credit_bureau_info": {},
        +  "notice_includes_creditor_name": {},
        +  "notice_includes_date": {},
        +  "notice_includes_dispute_right": {},
        +  "notice_includes_fcra_rights": {},
        +  "notice_includes_right_to_copy": {},
        +  "reason_code_source": {},
        +  "reasons": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_agent_audit_trail3 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: action_class, action_detail, agent_identity, ecdsa_present, outcome, record_id, sha256_prev_record, trust_level. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "action_class": {},
        +  "action_detail": {},
        +  "agent_identity": {},
        +  "ecdsa_present": {
        +    "type": "boolean"
        +  },
        +  "outcome": {},
        +  "record_id": {},
        +  "sha256_prev_record": {},
        +  "trust_level": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_agent_commerce_conformance3 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: acp_payload, ap2_mandate_trio, mpp_session, tap_headers, x402_payload. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "acp_payload": {},
        +  "ap2_mandate_trio": {},
        +  "mpp_session": {},
        +  "tap_headers": {},
        +  "x402_payload": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_agent_obo_mandate3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "mandate": {},
        +  "now_unix": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_ai_impact_assessment3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "assessment": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_ap2_mandate_chain3 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: validate_at. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cart": {},
        +  "hnp_mode": {},
        +  "intent": {},
        +  "payment": {},
        +  "validate_at": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_audit_trail_completeness3 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: chain_links, continuity_mechanism, declared_retention_period_days, gap_candidates, observed_event_counts_by_type, observed_sequence_numbers, periods, required_retention_period_days, sequence_end, sequence_start, window_end, window_start. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chain_links": {},
        +  "continuity_mechanism": {},
        +  "declared_retention_period_days": {},
        +  "gap_candidates": {},
        +  "observed_event_counts_by_type": {},
        +  "observed_sequence_numbers": {},
        +  "periods": {},
        +  "required_retention_period_days": {},
        +  "sequence_end": {},
        +  "sequence_start": {},
        +  "window_end": {},
        +  "window_start": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_canton_dvp_atomicity3 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: trade_id, notional, atomicity, finality, platform. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "atomicity": {
        +    "enum": [
        +      "atomic_dvp",
        +      "sequential_with_lock",
        +      "free_delivery"
        +    ],
        +    "type": "string"
        +  },
        +  "cash_amount": {
        +    "type": "number"
        +  },
        +  "cash_currency": {
        +    "enum": [
        +      "USD",
        +      "EUR",
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "cash_type": {
        +    "enum": [
        +      "usdc",
        +      "deposit_token",
        +      "wire",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "custodian": {
        +    "enum": [
        +      "dtc_custodied",
        +      "fed_eligible",
        +      "third_party",
        +      "self_custodied"
        +    ],
        +    "type": "string"
        +  },
        +  "dtc_fed_eligible": {
        +    "type": "boolean"
        +  },
        +  "finality": {
        +    "enum": [
        +      "irrevocable_realtime",
        +      "irrevocable_eod",
        +      "provisional",
        +      "undefined"
        +    ],
        +    "type": "string"
        +  },
        +  "instrument": {
        +    "type": "string"
        +  },
        +  "netting_enabled": {
        +    "type": "boolean"
        +  },
        +  "notional": {
        +    "type": "number"
        +  },
        +  "platform": {
        +    "enum": [
        +      "canton_daml",
        +      "canton_composerx",
        +      "other_dlt",
        +      "traditional_csd"
        +    ],
        +    "type": "string"
        +  },
        +  "securities_currency": {
        +    "enum": [
        +      "USD",
        +      "EUR",
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "trade_id": {
        +    "type": "string"
        +  },
        +  "unwind_procedure": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_canton_party_allowlist3 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: parties. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "parties": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_canton_selective_disclosure3 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: dvp_structure. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "dvp_structure": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_cat_bond_trigger_terms3 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: attachment_point, coverage_amount, exhaustion_point, pro_rata_enabled, reported_loss, second_loss_amount. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "attachment_point": {},
        +  "coverage_amount": {},
        +  "exhaustion_point": {},
        +  "pro_rata_enabled": {
        +    "type": "boolean"
        +  },
        +  "reported_loss": {},
        +  "second_loss_amount": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_cctp_v2_transfer3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "dest_domain": {},
        +  "hook_payload": {},
        +  "notional_usd": {},
        +  "source_domain": {},
        +  "transfer_mode": {},
        +  "using_v1": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_collateral_swap_eligibility3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "asset_a": {},
        +  "asset_b": {},
        +  "counterparty_jurisdiction": {},
        +  "declared_direction": {},
        +  "governing_agreement": {},
        +  "haircut_a": {},
        +  "haircut_b": {},
        +  "notional_a": {},
        +  "notional_b": {},
        +  "provider_informed": {},
        +  "reuse_flag": {},
        +  "sftr_consent": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_commission_hierarchy3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "hierarchy": {},
        +  "max_levels": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_cross_network_settlement3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "coordination_mechanism": {},
        +  "legs": {},
        +  "networks": {},
        +  "pvp_required": {},
        +  "rollback_supported": {},
        +  "timeout_window_sec": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_cyclonedx_sbom3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "sbom": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_deposit_token_compliance3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "deposit_insurance": {},
        +  "governing_law": {},
        +  "holder_eligibility": {},
        +  "interoperability": {},
        +  "issuer_type": {},
        +  "jurisdiction": {},
        +  "liability_treatment": {},
        +  "redemption_basis": {},
        +  "token_class": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_dpp_data_carrier3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "data_carrier_type": {},
        +  "elements": {},
        +  "ontology_version": {},
        +  "product_id": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_dtc_tokenized_treasury3 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: tokenized_ust_config. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "tokenized_ust_config": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_dtcc_ca_iso20022_message3 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: allocated_quantity, allocation_date, cusip, dtc_participant_number, election_deadline, election_option, event_type, message_function, payable_date, record_date, reference_id. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "allocated_quantity": {},
        +  "allocation_date": {},
        +  "cusip": {},
        +  "dtc_participant_number": {},
        +  "election_deadline": {},
        +  "election_option": {},
        +  "event_type": {},
        +  "message_function": {},
        +  "payable_date": {},
        +  "record_date": {},
        +  "reference_id": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_ebam_acmt_flow3 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: acmt_messages, strict_order. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "acmt_messages": {
        +    "type": "array"
        +  },
        +  "strict_order": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_einvoice_format3 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: document. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "document": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_eudr_due_diligence_statement3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "dds": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_eudr_geolocation3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "geo": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_eugb_factsheet3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "allocation_report": {},
        +  "external_reviewer": {},
        +  "factsheet": {},
        +  "use_of_proceeds": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_fdic370_output_file3 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: art507_result, as_of_date, file_records, institution_ref. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "art507_result": {},
        +  "as_of_date": {},
        +  "file_records": {},
        +  "institution_ref": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_form5500_schedules3 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: extension_filed, has_insurance_contracts, has_party_in_interest_transactions, is_multiemployer, participant_count, plan_type, plan_year_end, schedule_h_beginning_assets, schedule_h_distributions, schedule_h_ending_assets, schedule_h_net_income, service_provider_comp_over_5000. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "extension_filed": {
        +    "type": "boolean"
        +  },
        +  "has_insurance_contracts": {
        +    "type": "boolean"
        +  },
        +  "has_party_in_interest_transactions": {
        +    "type": "boolean"
        +  },
        +  "is_multiemployer": {
        +    "type": "boolean"
        +  },
        +  "participant_count": {
        +    "type": "number"
        +  },
        +  "plan_type": {},
        +  "plan_year_end": {},
        +  "schedule_h_beginning_assets": {
        +    "type": "number"
        +  },
        +  "schedule_h_distributions": {
        +    "type": "number"
        +  },
        +  "schedule_h_ending_assets": {
        +    "type": "number"
        +  },
        +  "schedule_h_net_income": {
        +    "type": "number"
        +  },
        +  "service_provider_comp_over_5000": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_fsma204_cte3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cte_type": {},
        +  "ftl_food": {},
        +  "kdes": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_fund_collateral3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "collateral_use": {},
        +  "cp_jurisdiction": {},
        +  "daily_liquid_assets_pct": {},
        +  "fund_type": {},
        +  "nav": {},
        +  "platform": {},
        +  "reuse_flag": {},
        +  "sftr_consent": {},
        +  "total_fund_value": {},
        +  "weekly_liquid_assets_pct": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_ifrs17_csm_rollforward3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "csm": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_mcp_authorization_metadata3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "metadata": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_mcp_server_identity3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "identity": {},
        +  "signature_valid": {},
        +  "well_known_path": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_mcp_task_lifecycle3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "transitions": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_mletr_record3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "control_method": {},
        +  "dest_jurisdiction": {},
        +  "governing_law": {},
        +  "integrity_method": {},
        +  "origin_jurisdiction": {},
        +  "platform": {},
        +  "record_type": {},
        +  "reliability_standard": {},
        +  "singularity_mechanism": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_mt700_lc_fields3 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: as_of_date, fields. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "fields": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_nft_metadata_art2093 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: metadata. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "metadata": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_openids_homeowners_record3 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: record. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "record": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_openvex_statement3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "vex": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_pacs008_party_completeness3 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: creditor_agent_bic, creditor_lei, creditor_name, debtor_agent_bic, debtor_lei, debtor_name, purpose_code, uetr. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "creditor_agent_bic": {},
        +  "creditor_lei": {},
        +  "creditor_name": {},
        +  "debtor_agent_bic": {},
        +  "debtor_lei": {},
        +  "debtor_name": {},
        +  "purpose_code": {},
        +  "uetr": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_pvp_settlement3 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: atomicity_type, canton_leg, finality_type, has_unwind_procedure, legs. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "atomicity_type": {},
        +  "canton_leg": {
        +    "type": "boolean"
        +  },
        +  "finality_type": {},
        +  "has_unwind_procedure": {
        +    "type": "boolean"
        +  },
        +  "legs": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_qfc_recordkeeping_file3 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: as_of_date, control_totals, file_records, institution_ref. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of_date": {},
        +  "control_totals": {},
        +  "file_records": {},
        +  "institution_ref": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_regf_call_frequency3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inputs": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_royalty_split3 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: cap_bps, config, entries. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "cap_bps": {},
        +  "config": {},
        +  "entries": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_slate_report_fields3 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: reports. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "reports": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_spdx_sbom3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "sbom": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_tempo_token_compliance3 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: allowlistEnabled, blocklistEnabled, freezeEnabled, ofacEnabled, roleBurnBlocked, roleIssuer, rolePause, yieldEnabled. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "allowlistEnabled": {
        +    "type": "boolean"
        +  },
        +  "blocklistEnabled": {
        +    "type": "boolean"
        +  },
        +  "currencyCode": {},
        +  "freezeEnabled": {
        +    "type": "boolean"
        +  },
        +  "issuerLei": {},
        +  "memoPolicy": {},
        +  "ofacEnabled": {
        +    "type": "boolean"
        +  },
        +  "roleBurnBlocked": {
        +    "type": "boolean"
        +  },
        +  "roleIssuer": {
        +    "type": "boolean"
        +  },
        +  "rolePause": {
        +    "type": "boolean"
        +  },
        +  "supplyCap": {},
        +  "tokenName": {},
        +  "yieldEnabled": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_tempo_zone_disclosure3 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: amlAudit, amlOFAC, amlSAR, amlTravel, opSeesAll, outsidersZK, tip403Allow, tip403Block, tip403Freeze, tip403Mainnet, userSeesOwn. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "amlAudit": {
        +    "type": "boolean"
        +  },
        +  "amlOFAC": {
        +    "type": "boolean"
        +  },
        +  "amlSAR": {
        +    "type": "boolean"
        +  },
        +  "amlTravel": {
        +    "type": "boolean"
        +  },
        +  "opSeesAll": {
        +    "type": "boolean"
        +  },
        +  "operatorName": {},
        +  "outsidersZK": {
        +    "type": "boolean"
        +  },
        +  "tip403Allow": {
        +    "type": "boolean"
        +  },
        +  "tip403Block": {
        +    "type": "boolean"
        +  },
        +  "tip403Freeze": {
        +    "type": "boolean"
        +  },
        +  "tip403Mainnet": {
        +    "type": "boolean"
        +  },
        +  "useCase": {},
        +  "userSeesOwn": {
        +    "type": "boolean"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_tfr_travel_rule_batch3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "inputs": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_tip20_memo_commitment3 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: invoice_id, invoice_locator_template, memo_hex, payload. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "invoice_id": {},
        +  "invoice_locator_template": {},
        +  "memo_hex": {},
        +  "payload": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_tokenized_security_lifecycle3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "covered_events": {},
        +  "custodian_type": {},
        +  "daml_lifecycle_defined": {},
        +  "isin_assigned": {},
        +  "issuance_amount": {},
        +  "jurisdiction": {},
        +  "prospectus_filed": {},
        +  "security_type": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_w8_series_structural3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chapter3_status": {},
        +  "chapter4_fatca_status": {},
        +  "form_date": {},
        +  "form_type": {},
        +  "income_type": {},
        +  "reference_date": {},
        +  "treaty_country": {},
        +  "treaty_rate_pct": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedvalidate_x402_deferred_handshake3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "covered_components": {},
        +  "id_continuity": {},
        +  "offer": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_a2a_agent_card3 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: agent_card. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "agent_card": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_acdc_delegation_chain3 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: credentials, max_chain_depth. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "credentials": {
        +    "type": "array"
        +  },
        +  "expected_root_aid": {},
        +  "max_chain_depth": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_address_migration_batch3 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: records. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "records": {},
        +  "strictness": {},
        +  "trunc_threshold": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_anchored_extract3 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: anchor_evidence, extract. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "anchor_evidence": {},
        +  "claimed_root": {},
        +  "extract": {},
        +  "source_class": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_ap2_payment_receipt3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "hnp_policy": {},
        +  "mandate_chain": {},
        +  "payment_receipt": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_close_posting_lineage3 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: coding_entries, accrual_entries. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "accrual_entries": {
        +    "type": "array"
        +  },
        +  "as_of": {
        +    "type": "string"
        +  },
        +  "coding_entries": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_conversion_receipt3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "receipt": {},
        +  "recomputed_input_sha256": {},
        +  "recomputed_output_sha256": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_did_webvh_log3 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: did_log, max_entries. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "did": {},
        +  "did_log": {
        +    "type": "array"
        +  },
        +  "expected_document": {},
        +  "max_entries": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_dscsa_transaction_statement3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "epcis_event_type": {},
        +  "expiry": {},
        +  "gln_buyer": {},
        +  "gln_seller": {},
        +  "lot": {},
        +  "product_identifier": {},
        +  "th_present": {},
        +  "ti_present": {},
        +  "transaction_date": {},
        +  "ts_present": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_einvoice_vat_calc3 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: document, rounding. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "document": {},
        +  "rounding": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_erc165_interface_id3 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: claimed_interface_id, function_signatures. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "claimed_interface_id": {
        +    "type": "string"
        +  },
        +  "function_signatures": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_erc2612_permit_binding3 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: chainId, deadline, name, nonce, owner, r, s, signature, spender, v, value, verifyingContract, version, yParity. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chainId": {},
        +  "deadline": {},
        +  "name": {},
        +  "nonce": {},
        +  "owner": {},
        +  "r": {},
        +  "s": {},
        +  "signature": {
        +    "type": "string"
        +  },
        +  "spender": {},
        +  "v": {},
        +  "value": {},
        +  "verifyingContract": {},
        +  "version": {},
        +  "yParity": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_erc8004_registry_entry3 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: chain_id, claimed_entry, onchain_record, registry_address, registry_type. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chain_id": {},
        +  "claimed_entry": {
        +    "type": "array"
        +  },
        +  "onchain_record": {
        +    "type": "array"
        +  },
        +  "registry_address": {
        +    "type": "string"
        +  },
        +  "registry_type": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_etf_pcf_basket3 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: basket, cash_tolerance_minor, creation_unit_size, pcf, transaction_type, units_requested. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "basket": {},
        +  "cash_tolerance_minor": {},
        +  "creation_unit_size": {},
        +  "pcf": {},
        +  "transaction_type": {
        +    "enum": [
        +      "create",
        +      "redeem"
        +    ],
        +    "type": "string"
        +  },
        +  "units_requested": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_eth_state_proof3 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: account_proof, storage_slots. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "account_proof": {
        +    "type": "array"
        +  },
        +  "address": {},
        +  "block_state_root": {},
        +  "storage_slots": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_finp2p_ledger_proof3 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: proof, receipt. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "proof": {},
        +  "receipt": {},
        +  "verification_public_key": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_input_attestations3 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: target_policy_parameters, input_attestations. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "input_attestations": {
        +    "type": "array"
        +  },
        +  "target_policy_parameters": {
        +    "type": "object"
        +  },
        +  "tsa_root_pem": {
        +    "type": "string"
        +  },
        +  "verification_time": {
        +    "type": "string"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_ipe_integrity3 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: report_control_total, report_hash, report_row_count, source_control_total, source_extract_hash, source_row_count, tolerance. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "report_control_total": {},
        +  "report_hash": {},
        +  "report_row_count": {},
        +  "source_control_total": {},
        +  "source_extract_hash": {},
        +  "source_row_count": {},
        +  "tolerance": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_kya_x402_scope3 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: kya_credential, x402_payload. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "kya_credential": {},
        +  "x402_payload": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_license_election3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "certificate": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_merkle_airdrop_proof3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "address": {
        +    "type": "string"
        +  },
        +  "amount": {
        +    "type": "string"
        +  },
        +  "claimed_path": {
        +    "type": "array"
        +  },
        +  "claimed_root": {
        +    "type": "string"
        +  },
        +  "encoding_variant": {
        +    "type": "string"
        +  },
        +  "pair_sort": {
        +    "type": "boolean"
        +  },
        +  "proof": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_merkle_batch3 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: merkle_root, proof_entries. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "merkle_root": {},
        +  "proof_entries": {
        +    "type": "array"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_migration_completeness3 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: as_of, currency, declared_transformation_rules, migration_id, observed_changed_fields, partitions, reconciliation_tolerance_minor_units. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "currency": {
        +    "type": "string"
        +  },
        +  "declared_transformation_rules": {
        +    "type": "array"
        +  },
        +  "migration_id": {
        +    "type": "string"
        +  },
        +  "observed_changed_fields": {
        +    "type": "array"
        +  },
        +  "partitions": {
        +    "type": "array"
        +  },
        +  "reconciliation_tolerance_minor_units": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_product_authenticity3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "claimed_root_hash": {},
        +  "ownership_transfers": {},
        +  "presented_lineage_hashes": {},
        +  "product_id": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_proof_of_reserves_consistency3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "liability_branch": {
        +    "type": "object"
        +  },
        +  "published_reserve_figures": {
        +    "type": "object"
        +  },
        +  "reserve_proof": {
        +    "type": "object"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_reserve_proof3 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: merkle_proof. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "exchange": {},
        +  "merkle_proof": {},
        +  "por_round": {},
        +  "storage_proof_composition": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_revocation_status3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "credential_status": {},
        +  "status_list_credential": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_saleable_return3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "original_lot": {},
        +  "original_sgtin": {},
        +  "original_txn_hash": {},
        +  "returned_lot": {},
        +  "returned_sgtin": {},
        +  "seller_authorized": {},
        +  "within_resale_window": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_settlement_asset_backing3 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: as_of, backing_model, backing_ratio_bps, buffers, cost_per_crossing_minor_units, idle_cost_bps, movements, value_in_circulation_minor_units. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "as_of": {},
        +  "backing_model": {},
        +  "backing_ratio_bps": {},
        +  "buffers": {
        +    "type": "array"
        +  },
        +  "cost_per_crossing_minor_units": {},
        +  "idle_cost_bps": {},
        +  "movements": {
        +    "type": "array"
        +  },
        +  "value_in_circulation_minor_units": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_slsa_provenance3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "artifact_digest_sha256": {},
        +  "claimed_build_level": {},
        +  "statement": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_tempo_mpp_voucher3 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: challengeAmount, challengeChainId, challengeChannelId, challengeCurrency, challengeEscrowContract, challengeExpires, challengeId, challengeIntent, challengeMethod, challengeMinVoucherDelta, challengeRealm, challengeRecipient, channelAuthorizedSigner, channelCloseRequestedAt, channelDeposit, channelId, channelPayer, channelSettled, cumulativeAmount, domainChainId, domainName, domainVerifyingContract, domainVersion, memoExpectedEncoding, memoExpectedReferenceHash, memoValue, minVoucherDelta, now, protocolVersion, r, s, signature, subjectExecutionHash, v, yParity. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "challengeAmount": {},
        +  "challengeChainId": {},
        +  "challengeChannelId": {},
        +  "challengeCurrency": {},
        +  "challengeEscrowContract": {},
        +  "challengeExpires": {},
        +  "challengeId": {},
        +  "challengeIntent": {},
        +  "challengeMethod": {},
        +  "challengeMinVoucherDelta": {},
        +  "challengeRealm": {},
        +  "challengeRecipient": {},
        +  "channelAuthorizedSigner": {},
        +  "channelCloseRequestedAt": {},
        +  "channelDeposit": {},
        +  "channelId": {},
        +  "channelPayer": {},
        +  "channelSettled": {},
        +  "cumulativeAmount": {},
        +  "domainChainId": {},
        +  "domainName": {},
        +  "domainVerifyingContract": {},
        +  "domainVersion": {},
        +  "memoExpectedEncoding": {},
        +  "memoExpectedReferenceHash": {},
        +  "memoValue": {},
        +  "minVoucherDelta": {},
        +  "now": {},
        +  "protocolVersion": {},
        +  "r": {},
        +  "s": {},
        +  "signature": {},
        +  "subjectExecutionHash": {},
        +  "v": {},
        +  "yParity": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_timestamp_attestation3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "document_hash": {},
        +  "expected_algorithm": {},
        +  "presented_anchor": {},
        +  "presented_timestamp": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_trade_document_set3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "documents": {},
        +  "expected_route": {},
        +  "hash_alg": {},
        +  "reference_market_price": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_trid_apr_accuracy3 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: has_demand_feature, irregular_payment_amounts, irregular_payment_periods. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "actual_apr_pct": {
        +    "type": "number"
        +  },
        +  "disclosed_apr_pct": {
        +    "type": "number"
        +  },
        +  "has_demand_feature": {
        +    "type": "boolean"
        +  },
        +  "irregular_payment_amounts": {
        +    "type": "boolean"
        +  },
        +  "irregular_payment_periods": {
        +    "type": "boolean"
        +  },
        +  "num_advances": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_witness_cosignatures3 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: anchored_hash, checkpoint_note, consistency_proof, log_origin, mode, new_checkpoint_note, old_checkpoint_note, threshold, witness_keys. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "anchored_hash": {},
        +  "checkpoint_note": {},
        +  "consistency_proof": {},
        +  "log_origin": {},
        +  "mode": {},
        +  "new_checkpoint_note": {},
        +  "old_checkpoint_note": {},
        +  "threshold": {},
        +  "witness_keys": {}
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedverify_x402_signer_recovery3 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\". Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "chainId": {
        +    "type": "number"
        +  },
        +  "claimedFrom": {
        +    "type": "string"
        +  },
        +  "digest": {
        +    "type": "string"
        +  },
        +  "r": {
        +    "type": "string"
        +  },
        +  "s": {
        +    "type": "string"
        +  },
        +  "signature": {
        +    "type": "string"
        +  },
        +  "v": {
        +    "type": "number"
        +  },
        +  "yParity": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
    • Changedworkforce_board_roi_report3 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: program_type, sector, total_budget, participants_enrolled. Unknown keys are refused."
      • addedInput schema / properties / policy_parameters / properties
        Added value: +{
        +  "avg_training_weeks": {
        +    "type": "number"
        +  },
        +  "credential_rate": {
        +    "type": "number"
        +  },
        +  "emp_rate_q2": {
        +    "type": "number"
        +  },
        +  "emp_rate_q4": {
        +    "type": "number"
        +  },
        +  "median_earnings_q2": {
        +    "type": "number"
        +  },
        +  "participants_enrolled": {
        +    "type": "integer"
        +  },
        +  "participants_exited": {
        +    "type": "integer"
        +  },
        +  "program_name": {
        +    "type": "string"
        +  },
        +  "program_type": {
        +    "enum": [
        +      "adult",
        +      "dislocated_worker",
        +      "youth"
        +    ],
        +    "type": "string"
        +  },
        +  "program_year": {
        +    "enum": [
        +      "PY 2023",
        +      "PY 2022",
        +      "PY 2021"
        +    ],
        +    "type": "string"
        +  },
        +  "sector": {
        +    "enum": [
        +      "healthcare",
        +      "manufacturing",
        +      "construction",
        +      "it_tech",
        +      "retail",
        +      "transportation",
        +      "finance",
        +      "education",
        +      "hospitality",
        +      "professional",
        +      "public_admin",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "skill_gains_rate": {
        +    "type": "number"
        +  },
        +  "total_budget": {
        +    "type": "number"
        +  }
        +}
      • removedInput schema / properties / policy_parameters / propertyNames
        Removed value: -{
        -  "type": "string"
        -}

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.