Skip to main content
Glama

Agent Passport System -- MCP Server

Enforcement and accountability layer for AI agents. Bring your own identity. 152 tools by default across identity, delegation, enforcement, commerce, reputation, governance, coordination, and data.

npx agent-passport-system-mcp

agent-passport-system-mcp 8.0.0 and 7.0.0 target SDK 8.x. The 6.x line targets SDK 6.x, and 5.0.2 targets SDK 5.x.

The default profile is full, all 152 tools. Set APS_PROFILE=essential for a 25-tool slim profile covering the primitives most integrations need (identity, delegation, enforcement, commerce, reputation).

Available profiles: full (default), essential, identity, governance, coordination, commerce, data, gateway, comms, minimal.

For AI agents: visit agent-passport.org/llms.txt for machine-readable documentation or llms-full.txt for the complete technical reference. MCP discovery: .well-known/mcp.json.

Works with any MCP client: Claude Desktop, Claude Code, Cursor, Windsurf, and more. Full surface area (the default): 152 tools across the protocol surface, including Wave 1 accountability primitives (Ed25519 ActionReceipt, AuthorityBoundaryReceipt, CustodyReceipt, ContestabilityReceipt, APSBundle, strict RFC 8785 JCS for interop-facing receipts, byte-match across implementations). Independently cited by PDR in Production preprint (Nanook & Gerundium).

Quick Start

Fastest: Remote (no install needed)

npx agent-passport-system-mcp setup --remote

Connects via SSE to mcp.aeoess.com/sse. Zero dependencies. Restart your AI client.

Local install

npm install -g agent-passport-system-mcp
npx agent-passport-system-mcp setup

Auto-configures Claude Desktop and Cursor. Restart your AI client.

Add to your MCP config file:

{
  "mcpServers": {
    "agent-passport": {
      "command": "npx",
      "args": ["agent-passport-system-mcp"]
    }
  }
}

Or for remote SSE:

{
  "mcpServers": {
    "agent-passport": {
      "type": "sse",
      "url": "https://mcp.aeoess.com/sse"
    }
  }
}

Related MCP server: moltbridge

Tools (152)

Every tool carries MCP annotations. Read-only means the tool writes no file, calls no mutating remote endpoint and changes no session state other tools read. Destructive means it deletes, revokes, supersedes, overwrites or irreversibly consumes something. Network means it can contact an external host (see Network and local files). The hint values live in src/toolAnnotations.ts.

Meta: 2 tools

Tool

Title

Read-only

Destructive

Network

Description

list_profiles

List Tool Profiles

yes

Show available tool profiles.

list_tools_for_scope

List Tools for Delegation Scope

yes

List available MCP tools filtered by delegation scope.

Identity and key rotation: 15 tools

Tool

Title

Read-only

Destructive

Network

Description

aps_compute_attribution_action_ref

Compute Attribution Action Ref

yes

Derive the action_ref (hex sha256) for an action tuple.

classify_evidence_quality

Classify Evidence Quality

yes

Classify attestation evidence quality (none / issuer_vouched / infrastructure / principal_bound) and return the corresponding grade (0-3).

compute_action_ref

Compute Action Reference

yes

Compute content-addressed request identity (SHA-256 of agentId + actionType + scope + normalized timestamp).

generate_keys

Generate Ed25519 Keypair

yes

Generate an Ed25519 keypair for agent identity.

get_behavioral_sequence

Get Post-Issuance Behavior

yes

Get the post-issuance behavioral sequence for an agent.

get_my_role

Get My Coordination Role

yes

Get your current role, assigned tasks, and role-specific instructions.

get_passport_grade

Get Passport Grade

yes

Query the attestation grade and issuance context for a passport.

identify

Identify Session Agent

Identify yourself to the coordination server.

is_evidence_fresh

Check Evidence Freshness

yes

Check whether typed attestation evidence is still fresh.

is_key_active

Check Key Is Active

yes

Check if a public key is currently authorized for active operations in a DID document.

issue_passport

Issue Agent Passport

yes

Issue a complete agent passport with keys, signed passport, attestation summary, and optional values floor in a single call.

list_issuance_records

List Issuance Records

yes

List all stored issuance records with their passport grades.

rotate_key

Rotate Agent Key

yes

Rotate an agent's Ed25519 key.

verify_issuer

Verify Passport Issuer Signature

yes

Verify that a passport was officially issued by AEOESS.

verify_rotation_chain

Verify Key Rotation Chain

yes

Verify all rotation signatures in a DID document's rotation log.

Delegation and escalation: 8 tools

Tool

Title

Read-only

Destructive

Network

Description

aps_check_escalation_required

Check Escalation Required

yes

Escalation boundary: check whether an action on a v2 delegation requires owner confirmation before execution.

aps_record_owner_confirmation

Record Owner Confirmation

yes

Escalation boundary: owner signs an OwnerConfirmation authorizing a flagged action.

create_delegation

Create Delegation

[OPERATOR] Create a scoped delegation from one agent to another.

create_v2_delegation

Create v2 Delegation

Create a v2 delegation with versioning, mandatory sunset, and PolicyContext binding.

revoke_delegation

Revoke Delegation

yes

[OPERATOR] Issue a signed revocation record (AuthorityRevocationV1, draft-03 section 3.5.1 direct revocation) for an AuthorityDelegationV1.

sub_delegate

Sub-Delegate Authority

Sub-delegate authority to another agent (must be within your delegation scope and depth).

supersede_v2_delegation

Supersede v2 Delegation

yes

Supersede a v2 delegation.

verify_delegation

Verify Delegation

yes

Check a delegation's signature and its stated window.

Principal identity: 6 tools

Tool

Title

Read-only

Destructive

Network

Description

create_disclosure

Create Principal Disclosure

yes

Create a selective disclosure of principal identity.

create_principal

Create Principal Identity

yes

Create a principal identity (human or org behind agents) with its own Ed25519 keypair, held in this process as the session principal with a new fleet.

endorse_agent

Endorse Agent

Endorse an agent as a principal.

get_fleet_status

Get Fleet Status

yes

Get status of all agents endorsed by the current principal.

revoke_endorsement

Revoke Endorsement

yes

Revoke a principal's endorsement of an agent.

verify_endorsement

Verify Endorsement

yes

Check an endorsement's signature against the principalPublicKey the endorsement itself carries.

Reputation-gated authority: 7 tools

Tool

Title

Read-only

Destructive

Network

Description

apply_reputation_downgrade

Apply Reputation Downgrade

yes

Apply import policy downgrade to a foreign vouched reputation.

check_tier

Check Tier Permits Action

yes

Check if an agent's earned tier permits an action at a given autonomy level and spend amount.

get_promotion_history

Get Promotion History

yes

Get the promotion review history for this session.

resolve_authority

Resolve Authority Tier

yes

Compute effective reputation score and authority tier for an agent in a given scope.

review_promotion

Review Agent Promotion (Unavailable)

yes

Unavailable with SDK 8.

update_reputation

Update Agent Reputation

Update an agent's reputation after a task result.

vouch_reputation

Vouch Reputation

yes

Create a signed reputation summary that another gateway can import.

Coordination and provisional statements: 15 tools

Tool

Title

Read-only

Destructive

Network

Description

accept_assignment

Accept Task Assignment

[ANY ROLE] Accept your task assignment.

aps_create_provisional

Create Provisional Statement

yes

Commitment boundary: emit a provisional statement for agent-to-agent negotiation.

aps_promote_statement

Promote Provisional Statement

yes

Commitment boundary: promote a provisional statement to binding by attaching a PromotionEvent that satisfies the PromotionPolicy (m-of-n principal signatures).

aps_verify_promotion

Verify Statement Promotion

yes

Commitment boundary: verify that a promoted statement's PromotionEvent cryptographically satisfies the PromotionPolicy (policy_reference match, promoter in required_signers, thr...

aps_withdraw_provisional

Withdraw Provisional Statement

yes

Commitment boundary: author withdraws their own provisional statement.

assign_agent

Assign Agent to Task Role

[OPERATOR] Assign an agent to a role in a task.

complete_task

Complete Task

yes

[OPERATOR] Close the task unit with final status and retrospective.

create_task_brief

Create Task Brief

[OPERATOR] Create a new task with roles, deliverables, and acceptance criteria.

get_evidence

Get Handed-Off Evidence

yes

[ANALYST/BUILDER/REVIEWER] Get evidence that was handed off to you.

get_task_detail

Get Task Detail

yes

Get full details of a specific task including all evidence, reviews, and deliverables.

handoff_evidence

Hand Off Evidence

[OPERATOR] Transfer approved evidence from researcher to analyst.

list_tasks

List Tasks

yes

List all tasks in the coordination store.

review_evidence

Review Evidence Packet

[OPERATOR] Review an evidence packet.

submit_deliverable

Submit Deliverable

[ANALYST/BUILDER] Submit your final output tied to evidence.

submit_evidence

Submit Evidence Packet

[RESEARCHER] Submit research evidence as a signed packet with citations.

Agora and agent messaging: 10 tools

Tool

Title

Read-only

Destructive

Network

Description

broadcast

Broadcast Agent Message

Send a signed message to all agents via comms/broadcast.json.

check_messages

Check Agent Messages

Check messages addressed to you.

get_agora_by_topic

Get Agora Messages by Topic

yes

Get all messages in a topic.

get_agora_thread

Get Agora Thread

yes

Get a message thread from the Agora feed.

get_agora_topics

List Agora Topics

yes

List all topics in the Agora feed with message counts.

list_agents

List Registered Agents

yes

List registered agents from the agent registry (agora/agents.json).

post_agora_message

Post Agora Message

Post a signed message to the Agora feed.

register_agora_agent

Register Agent in Session Agora

Register an agent in the Agora so their messages can be verified.

register_agora_public

Register Agent in Public Agora

yes

Register your agent in the PUBLIC Agora registry at aeoess.com.

send_message

Send Agent Message

Send a signed message to another agent.

Governance, charters, provenance, attribution: 40 tools

Tool

Title

Read-only

Destructive

Network

Description

activate_emergency

Activate Emergency Pathway

Activate a pre-authorized emergency pathway with evidence.

add_approval_signature

Add Approval Signature

Add a signature to an approval request.

add_principal_report

Add Principal Outcome Report

Add principal's perspective to an outcome record.

aps_attribution_receipt_id

Compute Attribution Receipt ID

yes

Representation boundary helper: compute the canonical sha256 id of an AttributionReceipt's unsigned core.

aps_check_artifact_citations

Check Artifact Citations

yes

Representation boundary: gate a binding artifact's citations.

aps_check_projection_consistency

Check Projection Consistency

yes

Cross-projection consistency check: given two projections, confirm they originate from the same signed receipt.

aps_construct_attribution_primitive

Construct Attribution Primitive

yes

Build and sign a four-axis AttributionPrimitive for an action.

aps_create_attribution_receipt

Create Attribution Receipt

yes

Representation boundary: build a citer-signed AttributionReceipt attributing a claim to a third-party principal.

aps_project_attribution

Project Attribution Axis

yes

Extract a single-axis projection from an AttributionPrimitive.

aps_sign_attribution_consent

Sign Attribution Consent

yes

Representation boundary: the cited principal adds their consent signature to an AttributionReceipt.

aps_verify_attribution_consent

Verify Attribution Consent

yes

Representation boundary: verify an AttributionReceipt end-to-end (id, citer signature, consent signature, expiry) and bind each named party to the key beside it.

aps_verify_attribution_primitive

Verify Attribution Primitive

yes

End-to-end verify of a full AttributionPrimitive: constructs projections for all four axes and verifies each one.

aps_verify_attribution_projection

Verify Attribution Projection

yes

Verify a single-axis AttributionProjection under the issuer's Ed25519 public key.

attest_to_floor

Attest to Values Floor

yes

Attest that your agent agrees to abide by the loaded Values Floor.

complete_action

Complete Action (Deprecated)

yes

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Complete a permitted action and get the full 3-signature proof chain.

compute_governance_taint

Compute Governance Taint

yes

Compute governance taint level for an artifact based on its derivation chain and revoked sources.

create_agent_context

Create Agent Context (Deprecated)

yes

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Create an enforcement context that automatically runs every action through the 3-signature policy chain.

create_approval_request

Create Approval Request

Create a multi-party approval request for charter amendments, office transfers, etc.

create_artifact_provenance

Create Artifact Provenance

yes

Tag an agent-generated artifact with provenance metadata (content hash, risk class, authoring agent).

create_chained_governance_block

Create Chained Governance Block

yes

Create a governance block for derivative content that references the original publisher's block.

create_charter

Create Charter

Create a new institutional charter, the constitutional root of an organization.

create_intent

Create Action Intent

Declare an intent to perform an action.

create_outcome_record

Create Outcome Record

Register an action outcome (agent perspective).

create_policy_context

Create Policy Context

yes

Create a v2 PolicyContext with mandatory sunset.

define_emergency_pathway

Define Emergency Pathway

Define a pre-authorized emergency pathway at delegation time.

evaluate_intent

Evaluate Action Intent

yes

[OPERATOR] Evaluate an intent against the Values Floor policy engine.

execute_with_context

Execute with Context (Deprecated)

yes

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Execute an action through the enforcement context.

generate_aps_txt

Generate aps.txt

yes

Generate a signed aps.txt file for site-wide governance.

generate_governance_block

Generate Governance Block

yes

Generate a cryptographically signed governance block for embedding in HTML pages.

governance_360

Run Governance 360 Loop

yes

Execute the full governance 360 loop on HTML content: extract governance block → verify signature + content hash → check usage terms → create signed access receipt.

load_values_floor

Load Values Floor

Load a Values Floor from YAML.

parse_governance_block_html

Parse Governance Block from HTML

yes

Extract a governance block from an HTML page.

propose_amendment

Propose Charter Amendment

Propose an amendment to a charter.

resolve_path_terms

Resolve Path Terms

yes

Resolve governance terms for a specific URL path using aps.txt path overrides.

sign_amendment

Sign Charter Amendment

Add a signature to a proposed amendment.

sign_charter

Sign Charter

Add a founding signature to a charter.

verify_amendment

Verify Charter Amendment

yes

Verify an amendment against its charter's amendment policy.

verify_aps_txt

Verify aps.txt

yes

Verify a signed aps.txt file by checking its signature and DID consistency.

verify_charter

Verify Charter

yes

Verify a charter's integrity: content hash, signatures, quorum, dissolution, office consistency, incompatibility, and, when the charter declares citations, the AttributionConsen...

verify_governance_block

Verify Governance Block

yes

Verify a governance block's signature, content hash, DID consistency and expiry against the original content.

Commerce: 3 tools

Tool

Title

Read-only

Destructive

Network

Description

commerce_preflight

Commerce Preflight (Moved to Gateway)

yes

[moved to gateway in SDK 3.3.0] The 6-gate commerce preflight orchestration moved out of the SDK and MCP into the AEOESS gateway.

get_commerce_spend

Get Commerce Spend

yes

Get spend analytics for a commerce delegation.

request_human_approval

Build Human Approval Request

yes

Create an approval request record for a high-value purchase without notifying a human or storing the request.

Data governance: 20 tools

Tool

Title

Read-only

Destructive

Network

Description

check_aggregate_constraints

Check Aggregate Constraints

yes

Check if a data access would violate aggregate rate limits.

check_combination_permitted

Check Data Combination Permitted

yes

Check if combining data from two sources is permitted.

check_jurisdiction_transfer

Check Jurisdiction Transfer

yes

Check if a data transfer is permitted under jurisdiction constraints (EU_ONLY, GDPR_ADEQUATE_ONLY, NO_CROSS_BORDER).

check_purpose_permitted

Check Purpose Permitted

yes

Check if a purpose is permitted under source terms.

check_retention_expired

Check Retention Expired

yes

Check if data retention has expired based on TTL policy.

check_usage_permitted

Check Usage Permitted

yes

Check if a specific usage type is permitted under a governance block's terms.

create_access_receipt

Create Access Receipt

yes

Create a signed receipt recording the supplied content reference and terms, after verifying the governance block against the content and the publisher's key.

create_access_snapshot

Create Access Snapshot

yes

Create a signed access snapshot that pins terms, jurisdiction, and constraints at the moment of access, so a later change to the source terms does not alter what the snapshot re...

create_data_enforcement_gate

Create Data Enforcement Gate (Deprecated)

yes

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Create a data enforcement gate that checks terms before allowing data access.

create_decision_lineage_receipt

Create Decision Lineage Receipt

yes

Create a Decision Lineage Receipt that traces which data sources influenced a decision.

create_derivation_receipt

Create Derivation Receipt

yes

Create a signed derivation receipt tracking how data was transformed.

declare_reidentification_risk

Declare Re-identification Risk

yes

Declare re-identification risk for transformed or synthetic data.

detect_purpose_drift

Detect Purpose Drift

yes

Detect when data purpose drifts through a workflow (e.g. research → commercial).

evaluate_revocation_impact

Evaluate Revocation Impact

yes

Evaluate what happens when a data source revokes consent.

file_data_dispute

Build Data Dispute Record

yes

Create a signed dispute record against a data artifact without submitting, storing, or sending it.

generate_settlement

Generate Settlement (Deprecated)

yes

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Generate a Merkle-committed, signed settlement record for a period.

query_contributions

Query Contributions (Deprecated)

yes

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Query the data contribution ledger.

register_data_source

Register Data Source

Register a data source with terms for agent access.

resolve_lineage

Resolve Data Lineage

yes

Resolve the full derivation chain for an artifact.

resolve_rights_propagation

Resolve Rights Propagation

yes

Resolve what rights propagate when data is transformed.

Gateway (removed in v3.0.0, stubs return a migration notice): 4 tools

Tool

Title

Read-only

Destructive

Network

Description

create_gateway

Create Gateway (Deprecated)

yes

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Create a ProxyGateway enforcement boundary.

gateway_approve

Gateway Approve (Deprecated)

yes

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Two-phase execution: approve a tool call without executing it.

gateway_process_tool_call

Gateway Process Tool Call (Deprecated)

yes

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Process a tool call through the gateway enforcement boundary.

gateway_stats

Gateway Stats (Deprecated)

yes

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Get gateway statistics.

Intent Network: 5 tools

Tool

Title

Read-only

Destructive

Network

Description

get_digest

Get Intent Network Digest

yes

yes

Get a personalized digest from the Intent Network: relevant matches, pending intro requests, and incoming intros.

remove_intent_card

Remove Intent Card

yes

yes

Remove your IntentCard from the Intent Network.

request_intro

Request Introduction

yes

Request an introduction to another agent's human based on a match.

respond_to_intro

Respond to Introduction

yes

yes

Respond to an introduction request.

search_matches

Search Intent Network Matches

yes

yes

Search the Intent Network for people relevant to you.

Time and reserve attestation: 4 tools

Tool

Title

Read-only

Destructive

Network

Description

compare_timestamps

Compare Hybrid Timestamps

yes

Compare two hybrid timestamps to determine ordering.

create_hybrid_timestamp

Create Hybrid Timestamp

yes

Create a hybrid timestamp using the local clock and a supplied uncertainty bound.

create_reserve_attestation

Create Reserve Attestation

yes

Sign a reserve attestation using the supplied amount and assurance class.

validate_temporal_rights

Validate Temporal Rights

yes

Validate a TemporalRights object by checking its validity window, grace period, supersession, and challenge window.

Attribution weights: 2 tools

Tool

Title

Read-only

Destructive

Network

Description

aps_compute_compute_axis_weights

Compute Compute Axis Weights

yes

Compute the C-axis fractional weight vector from a list of inference billing records (prompt_tokens, completion_tokens).

aps_compute_data_axis_weights

Compute Data Axis Weights

yes

Compute the D-axis fractional weight vector from a list of AccessReceipt records with role, timestamp, and content length.

Attribution settlement: 3 tools

Tool

Title

Read-only

Destructive

Network

Description

aps_aggregate_settlement

Aggregate Settlement Record

yes

Aggregate a batch of Attribution Primitives over a half-open settlement period [t0, t1) into a signed SettlementRecord.

aps_build_contributor_query

Build Contributor Query Response

yes

Build a contributor-query response: given a signed SettlementRecord and a contributor DID, return per-axis (total_weight, contribution_count, merkle_path, axis_root) plus the fu...

aps_verify_settlement

Verify Settlement Record

yes

Verify a signed SettlementRecord under S1-S5 (signature, Merkle roots, conservation, residual shape, optional input-receipts cross-check).

Capability token v0.1: 4 tools

Tool

Title

Read-only

Destructive

Network

Description

aps_capability_evaluate_authority

Build Authority Evaluation Request

yes

v0.1 capability-token authority evaluation request (M2).

aps_capability_issue_challenge

Issue Capability Sink Challenge

yes

v0.1 capability-token sink challenge (M1).

aps_capability_mint_receipt

Mint Capability Challenge Receipt

yes

v0.1 capability-token gateway receipt (M3).

aps_capability_sign_effect

Sign Capability Effect Receipt

yes

v0.1 capability-token sink effect receipt (M4).

Mutual authentication: 4 tools

Tool

Title

Read-only

Destructive

Network

Description

mutualAuthBuildCertificate

Build Mutual-Auth Certificate

yes

Build and sign a mutual-auth certificate identifying an agent or information system.

mutualAuthDeriveSession

Derive Mutual-Auth Session

yes

Derive the shared mutual-auth session record from both sides' Attests.

mutualAuthVerifyAttest

Verify Mutual-Auth Attest

yes

Verify a MutualAuthAttest against policy and trust anchors.

mutualAuthVerifyTrustBundle

Verify Trust Anchor Bundle

yes

Verify a TrustAnchorBundle signature and freshness.

Network and local files

The server makes outbound requests only from the tools below. Every other tool works offline. The Network column in the tables above marks the same set.

Host

Tools

What is sent

api.aeoess.com (override with INTENT_API_URL)

search_matches, get_digest (GET), request_intro (POST), respond_to_intro (PUT), remove_intent_card (DELETE)

The session agent ID and public key as X-Agent-Id and X-Public-Key headers, plus the tool arguments and a signature where the tool signs

api.github.com

register_agora_public

Opens an issue in aeoess/aeoess_web with the agent ID, name, public key and the optional owner, runtime and capabilities. The token comes from the token argument, or from the GITHUB_TOKEN environment variable when the argument is absent. With no token the tool makes no request and returns a github.com URL to open by hand

AEOESS_GATEWAY_URL (for example gateway.aeoess.com)

issue_passport

Only when both AEOESS_GATEWAY_URL and AEOESS_GATEWAY_KEY are set: a fire-and-forget POST of the issuance record (passport ID, public key hash, grade, observed signals) to /api/v1/issuance-dossier. Off by default

gateway.aeoess.com and aeoess.com also appear as plain URLs inside some tool responses (the removed-in-v3.0.0 stubs and the latest.json the Agora writes). The server does not fetch them. npx agent-passport-system-mcp setup --remote writes https://mcp.aeoess.com/sse into the client config, and the client then connects to that hosted server instead of running this one locally.

Local files the server reads or writes, all under the user's home directory unless overridden:

Path

Tools

Access

~/.agent-passport-tasks.json

coordination tools (create_task_brief, assign_agent, accept_assignment, submit_evidence, review_evidence, handoff_evidence, submit_deliverable, complete_task)

read at startup, written by those tools

AGORA_PATH, default ~/aeoess_web/agora/messages.json and latest.json beside it

post_agora_message

read at startup, written on post

AGENTS_PATH, default ~/aeoess_web/agora/agents.json

list_agents

read

COMMS_PATH, default ~/aeoess_web/comms/

send_message, broadcast, check_messages (writes only with mark_read)

read and written

APS_NULLIFIER_DIR, default ~/.agent-passport-nullifiers/

aps_capability_sign_effect

SHA-256 hashes identifying consumed tokens, with redemption timestamps. Raw preimages are not stored. Written on redemption

Claude Desktop and Cursor MCP config files

the setup command, not a tool

adds the agent-passport server entry

Keys are never written to disk by the server. identify holds the agent key pair in process memory for the session, and AGENT_KEY / AGENT_PRIVATE_KEY supply it from the environment. generate_keys, issue_passport and rotate_key return private keys in the tool response, and generate_keys and issue_passport redact them when the server runs in remote mode. create_principal keeps the principal key in memory and returns the full private key once on a local (stdio) server, redacted in remote mode as in generate_keys. It refuses to replace an existing principal unless called with replace=true. Many signing tools take a private key as an argument and use it for that call only. Session state (delegations, endorsements, charters, intents) lives in memory and is lost on restart.

Architecture

Layer 8: Agentic Commerce (primitives only; the preflight orchestration lives outside this server)
Layer 7: Integration Wiring (cross-layer bridges)
Layer 6: Coordination Protocol (task lifecycle)
Layer 5: Intent Architecture (policy engine, 3-signature chain)
Layer 4: Agent Agora (signed communication)
Layer 3: Beneficiary Attribution (Merkle proofs)
Layer 2: Human Values Floor (8 principles)
Layer 1: Agent Passport Protocol (Ed25519 identity)

Recognition

  • Three contribution PRs merged into the Microsoft Agent Governance Toolkit by a Microsoft maintainer (#274, #598, #1328)

  • Public comment submitted to NIST NCCoE on AI Agent Identity and Authorization standards

  • Collaboration with IETF DAAP draft author on delegation spec

License

Apache-2.0

Adapter that emits a signed AccessReceipt for each governed MCP tools/call: https://www.npmjs.com/package/agent-passport-access-shim. Receipts verify with the SDK or in the browser at https://agent-passport.org/verify.html.

Available Tools

152 tools
accept_assignmentAccept Task AssignmentC

[ANY ROLE] Accept your task assignment. Confirms you're ready to work.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID to accept

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutation and repeat-call profile is covered. The description adds nothing beyond a rephrasing of the purpose: it does not say what state changes (assigned -> accepted), whether prior acceptance errors, or what the caller sees afterwards.

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 short sentences, front-loaded with the role tag and the action, with no filler. The second sentence is a mild restatement of the first rather than new information, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 state transition with annotations covering the safety profile and no output schema, the description is merely adequate. It omits prerequisites, failure behavior, and whether the task must be assigned to the calling agent, all of which matter 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?

There is a single parameter with 100% schema description coverage ('Task ID to accept'), so the schema carries the semantics. The description never mentions task_id, which is acceptable at this coverage level but adds no 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?

States a specific verb ('Accept') and resource ('your task assignment'), which is enough to separate it from siblings like assign_agent, complete_task, and submit_evidence. The added clause 'Confirms you're ready to work' clarifies what acceptance means, though it does not explicitly name the siblings it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 '[ANY ROLE]' tag signals who may call it, which is useful, but there is no when-to-use guidance, no prerequisite (an assignment must exist first), and no statement of when to prefer this over complete_task or submit_deliverable. Usage is implied at best.

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

activate_emergencyActivate Emergency PathwayC

Activate a pre-authorized emergency pathway with evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathway_idYes
trust_epochNo
valid_untilYes
trigger_evidenceYesEvidence that trigger conditions are met

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is mostly covered structurally. The description adds only the word 'pre-authorized' as a precondition hint, and says nothing about consequences of activation, whether it can be reversed, or what authority is required.

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?

A single short sentence, front-loaded with the action and resource, with no filler. It is efficient, though its brevity reflects under-specification rather than disciplined conciseness.

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 non-idempotent mutation tool with no output schema and only 25% parameter coverage, the description is too thin: no precondition detail, no post-activation behavior, and no explanation of the required validity window. An agent could invoke it but could not confidently predict or verify the outcome.

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 description coverage is only 25%, so the description carries the burden — and it only alludes to trigger_evidence ('with evidence') while saying nothing about pathway_id, valid_until, or the trust_epoch default. The one parameter whose semantics matter most (the validity window) is 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 ('Activate a pre-authorized emergency pathway'), which is far clearer than a tautology. It implies a distinction from the sibling define_emergency_pathway (activation vs. definition) but never names it explicitly, so sibling 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 guidance on when to use this tool versus define_emergency_pathway, no statement of prerequisites (e.g., that the pathway must already exist), and no exclusion or fallback condition. The agent must infer all routing 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.

add_approval_signatureAdd Approval SignatureC

Add a signature to an approval request.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_classNoboard
office_idNo
request_idYes
signer_public_keyYes
signer_private_keyYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutation profile is covered structurally. The description adds nothing beyond restating the name: it does not disclose that required signer private/public keys are needed, what happens on duplicate signatures (non-idempotent), or any authorization requirement. For a signing operation handling secrets, this is thin.

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?

One clean, front-loaded sentence with no filler, so it is not bloated. But it is terse to the point of under-specification for a mutation involving cryptographic keys, so brevity buys little.

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, so return values need not be described, but the description still omits prerequisites (an existing approval request), the purpose of the signer key pair, and error/duplicate behavior. With 5 undocumented parameters and no usage guidance, the definition is not complete enough for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% across five parameters, including the required signer_private_key, signer_public_key, and request_id plus an office_id and a key_class with default 'board'. The description mentions none of these and provides no compensating detail, leaving the agent to guess at key format, key_class semantics, and when office_id 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: adding a signature to an approval request, which is clearly distinguishable from create_approval_request. However, it offers no explicit differentiation from other signing siblings such as sign_charter, sign_amendment, or aps_sign_attribution_consent, so the agent must infer scope from the noun 'approval request' 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 guidance, no statement that an approval request must already exist, and no mention of alternatives. The agent gets no help deciding between this tool and create_approval_request or the other sign_* tools.

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

add_principal_reportAdd Principal Outcome ReportC

Add principal's perspective to an outcome record. Enables three-way divergence reporting.

ParametersJSON Schema
NameRequiredDescriptionDefault
outcome_idYes
outcome_classYes
divergence_scoreYes
observed_outcomeYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already disclose that this is a non-readOnly, non-idempotent write with no destructive or open-world effect, so the safety profile is covered. The description adds nothing beyond that — it does not say whether a principal report can be overwritten, appended, or duplicated, despite idempotentHint=false making that ambiguity consequential.

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 short sentences with no filler and the core action front-loaded. It is efficient, though the brevity comes at the cost of the missing detail scored 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?

A four-required-parameter mutation with no output schema, zero schema descriptions, and no usage context needs far more from the description than this. The agent is left guessing about parameter formats, enum semantics, and when the tool should be called.

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

Parameters1/5

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

Schema description coverage is 0% and all four parameters are undocumented in the schema. The description names none of them (outcome_id, observed_outcome, outcome_class, divergence_score), so the agent gets no meaning for the enum values, the 0-1 divergence_score scale, or how the principal's view relates to the existing outcome 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?

States a specific verb and resource ('Add principal's perspective to an outcome record') and ties it to a named concept, three-way divergence reporting. It is distinguishable from siblings like create_outcome_record, though the 'three-way divergence' framing is never explained, so the agent only half-understands what differentiates this side-record from the base outcome.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 reference to the obvious alternative create_outcome_record. The agent cannot tell from this text whether a principal report is mandatory after every outcome or an optional addendum.

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

apply_reputation_downgradeApply Reputation DowngradeC
Read-onlyIdempotent

Apply import policy downgrade to a foreign vouched reputation.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYes
accept_fromYesGateway IDs accepted by import policy
attested_tierYes
downgrade_ratioNo
origin_gateway_idYes
foreign_default_tierNo
attested_diversity_scoreYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing about what the downgrade computes, how the ratio/default tier are used, or what the result represents. The word 'apply' sits in tension with readOnlyHint, though 'foreign' reputation plausibly implies a computed evaluation rather than a persisted write, so this is not scored as 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.

Conciseness3/5

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

A single front-loaded sentence with no wasted words, which is good structural hygiene. However, at this level of domain complexity and schema under-documentation, the brevity crosses from concise into under-specified.

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

Completeness1/5

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

For a seven-parameter tool with 14% schema coverage, five required inputs, no output schema, and opaque domain jargon, one sentence is completely inadequate. An agent has no basis to choose correct values for any required parameter or to predict the result.

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

Parameters1/5

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

Schema description coverage is only 14% (one of seven parameters documented). The description provides no meaning for agent_id, origin_gateway_id, attested_tier, attested_diversity_score, downgrade_ratio, or foreign_default_tier, so it fails to compensate for the schema gap that the low coverage requires.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (apply) and a specific resource (import policy downgrade to a foreign vouched reputation), not a tautology of the title. The domain vocabulary ('import policy downgrade', 'foreign vouched reputation') is specialized but identifies the operation. It does not, however, differentiate itself from nearby reputation siblings like update_reputation or vouch_reputation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 indication of when this tool should be used versus alternatives, what preconditions must hold, or what triggers a downgrade scenario. The agent must infer everything 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.

aps_aggregate_settlementAggregate Settlement RecordA
Read-onlyIdempotent

Aggregate a batch of Attribution Primitives over a half-open settlement period [t0, t1) into a signed SettlementRecord. Each axis (D, P, G, C) produces a per-contributor total with a balanced-Merkle commitment. Residual buckets pool sub-threshold contributors. Output is a fully signed record ready for third-party verification.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodYes
receiptsYesArray of AttributionPrimitives to aggregate
issued_atNoOverride issued_at (canonical ISO-8601 UTC ms + Z); defaults to now
gateway_didYesGateway DID that signs the record
gateway_private_keyYesEd25519 gateway private key (hex)

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), so the bar is lower, and the description adds genuine behavioral context beyond them: per-axis (D, P, G, C) contributor totals, balanced-Merkle commitments, and residual buckets pooling sub-threshold contributors. It does not disclose whether anything is persisted server-side or the key-handling/auth implications of passing gateway_private_key.

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, front-loaded with the core verb+resource and scope, then mechanics, then output nature. No filler. Slightly dense with undefined domain jargon (D/P/G/C, 'balanced-Merkle'), but every sentence contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 cryptographic aggregation tool with nested objects, no output schema, and four required parameters, the description adequately characterizes the produced artifact (fully signed, third-party verifiable) and the internal structure of the result. It omits error/edge behavior (empty receipt sets, sub-threshold threshold definition) and whether the signing key implies any side effect.

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

Parameters3/5

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

Schema description coverage is 80%, so the schema already documents period bounds, receipts, gateway_did, and the private key. The description clarifies the period's half-open semantics but adds no syntax or format detail for receipts, and the axis names (D, P, G, C) are not tied back to any parameter. Baseline 3 is appropriate when the schema carries the load.

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 ('Aggregate a batch of Attribution Primitives ... into a signed SettlementRecord') plus the operating scope (half-open period [t0, t1)). This clearly differentiates it from siblings like aps_verify_settlement, aps_project_attribution, and generate_settlement without needing to open 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?

Usage is only implied: the aggregation-over-a-period framing implies it runs after primitives exist and before verification, but the description never states when to use this tool versus aps_verify_settlement or generate_settlement, nor any prerequisite/exclusion conditions. No explicit routing guidance.

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

aps_attribution_receipt_idCompute Attribution Receipt IDA
Read-onlyIdempotent

Representation boundary helper: compute the canonical sha256 id of an AttributionReceipt's unsigned core. Verifiers use this to detect id tampering.

ParametersJSON Schema
NameRequiredDescriptionDefault
receiptYesAttributionReceipt JSON (signatures ignored)

TDQS

A3.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 and closed-world, so the bar is lower. The description adds genuinely useful behavior: the id is canonical and deterministic, signatures are excluded from the computation, so the result depends only on the unsigned core. That is real 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.

Conciseness5/5

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

Two sentences, nothing wasted, and the core action is stated first with the motivating use case second. Well front-loaded for a helper of this scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 deterministic helper with no output schema, the description conveys what is computed and why it exists. The only omission is the shape of the return value (e.g., a hex digest string), which the agent must infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 'receipt' parameter, so the schema carries the parameter documentation. The description adds only the nuance that the unsigned core is what is hashed; no format or structural detail. 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: compute the canonical sha256 id of an AttributionReceipt's unsigned core. That is far more precise than the title alone and distinguishes it from creation/signing siblings. It does not explicitly contrast with the nearest sibling, aps_compute_attribution_action_ref, which is why 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 phrase 'Verifiers use this to detect id tampering' gives an implied usage context (verification flow), but there is no explicit when-to-use/when-not guidance and no named alternative such as aps_compute_attribution_action_ref or aps_verify_attribution_primitive.

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

aps_build_contributor_queryBuild Contributor Query ResponseA
Read-onlyIdempotent

Build a contributor-query response: given a signed SettlementRecord and a contributor DID, return per-axis (total_weight, contribution_count, merkle_path, axis_root) plus the full signed record so a third party can verify the contributor's share end-to-end without trusting the gateway beyond its public key. Returns null if the contributor has no share in the period.

ParametersJSON Schema
NameRequiredDescriptionDefault
recordYesA signed SettlementRecord
gateway_jwksNoAdvisory JWKS URL; not part of the signed material
contributor_didYesContributor DID (data source, compute provider, governance signer, or protocol module identifier)

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 real value beyond that: it enumerates the returned fields, states the null case when no share exists, and explains the trust guarantee (verifiable end-to-end without trusting the gateway beyond its public key).

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 dense sentences that front-load the action and inputs before the output/verification detail. No filler, though the parenthetical field list is slightly packed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 appropriately carries the return-value burden by listing the per-axis fields and the null case. Combined with annotations covering safety, 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 description coverage is 100%, so the schema already documents record, gateway_jwks, and contributor_did. The description restates the record and DID inputs but adds no syntax, format, or constraint 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?

States a specific verb and resource ("Build a contributor-query response") plus the two required inputs and the per-axis output fields. An agent can grasp the operation without opening the schema, though it doesn't explicitly distinguish itself from nearby siblings like query_contributions, aps_aggregate_settlement, or aps_verify_settlement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 precondition ("given a signed SettlementRecord and a contributor DID") and the null-return edge case imply usage, but no explicit when-to-use, when-not, or named alternative tools are given. The agent must infer that this is the proof-generating step versus the aggregate/verify siblings.

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

aps_capability_evaluate_authorityBuild Authority Evaluation RequestC
Read-onlyIdempotent

v0.1 capability-token authority evaluation request (M2). Subject signs a request carrying the sink's M1, the delegation chain, and a revealed authority-token preimage. The gateway consumes this to decide permit/deny. Search keywords: capability token, authority evaluation, M2.

ParametersJSON Schema
NameRequiredDescriptionDefault
challengeYesSinkChallenge object from M1
authority_tokenYes
delegation_chainYesv2.x delegation envelopes
freshness_beaconYes
subject_public_keyYesSubject Ed25519 public key (hex)
subject_private_keyYesSubject Ed25519 private key (hex)
delegation_chain_rootNoOverride; otherwise computed from chain

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, and destructiveHint=false, so the safety profile is covered. The description adds genuine workflow context — it is an M2-stage request consumed by the gateway — but discloses nothing about failure modes, key-material handling, or what the tool returns. With annotations doing the heavy lifting, a 3 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?

Three compact sentences, with the role of the artifact and its consumer front-loaded. The trailing 'Search keywords' line is filler but conventional and does not bloat 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?

For a 7-parameter tool with nested objects and no output schema, the description omits what is returned (a signed request object) and what prerequisites must exist first (an M1 challenge). It conveys the stage in the flow but not enough for an agent to call it correctly without inspecting 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 71%, so the schema documents most fields. The description maps three conceptual elements onto parameters (sink's M1 = challenge, delegation chain, revealed preimage = authority_token.token_preimage), which adds modest value, but freshness_beacon, subject keys, and delegation_chain_root are left to the schema. Baseline 3 given moderate coverage.

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 a fairly specific action — the subject signs a request carrying the sink's M1, the delegation chain, and a revealed token preimage — but the tool name ('evaluate_authority') conflicts with the title/description ('Build ... Request'), leaving the agent unsure whether this tool decides permit/deny or merely constructs the input. The M1/M2 jargon is unexplained, so the resource is only partly clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 routing against the closely related siblings (aps_capability_issue_challenge, aps_capability_mint_receipt, aps_capability_sign_effect). 'The gateway consumes this to decide permit/deny' describes downstream flow, not the condition under which an agent should call this tool.

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

aps_capability_issue_challengeIssue Capability Sink ChallengeB
Read-onlyIdempotent

v0.1 capability-token sink challenge (M1). Sink issues a signed canonical action statement. Returns the SinkChallenge and its challenge_hash. Used to bind the gateway's later policy evaluation to a specific action the sink authored. Search keywords: capability token, sink challenge, M1.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesCanonical action statement
sink_idYesDID of the sink issuing the challenge
subject_idYesDID of the subject the challenge is addressed to
sink_public_keyYesSink Ed25519 public key (hex)
sink_private_keyYesSink Ed25519 private key (hex)
validity_secondsNo
required_policy_freshnessNo

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 usefully adds the return payload (SinkChallenge + challenge_hash) and the binding role, but says nothing about the private-key handling, expiry semantics, or what happens on replay — notable for a tool that signs with a caller-supplied key.

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

Conciseness4/5

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

Four short sentences, front-loaded with the identity of the operation and then its return and role. The trailing 'Search keywords' line is padding but cheap, and nothing else is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 naming the returned SinkChallenge and challenge_hash, and it situates the call in a larger gateway evaluation flow. However, for a 7-parameter cryptographic tool with nested objects, it omits prerequisites (sink key possession, ordering relative to sign_effect/evaluate_authority) and any expiry/freshness context.

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 71% and the description contributes zero parameter meaning: validity_seconds and required_policy_freshness have no schema descriptions and nothing in the prose explains them, while 'canonical action statement' merely echoes the action field's own description. The description does not compensate for the coverage 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 gives a concrete verb and resource: the sink 'issues a signed canonical action statement' and returns a SinkChallenge with its challenge_hash. That is more than a restatement of the name, though the sibling tools in the aps_capability_* family (evaluate_authority, mint_receipt, sign_effect) are never named or 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?

It states the downstream role ('bind the gateway's later policy evaluation to a specific action the sink authored'), which implies where this fits in a flow, but gives no explicit when-to-use, no prerequisites, and no alternatives. 'Search keywords' is retrieval metadata, not usage guidance.

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

aps_capability_mint_receiptMint Capability Challenge ReceiptC
Read-onlyIdempotent

v0.1 capability-token gateway receipt (M3). Gateway signs a permit or deny over the sink's exact challenge_hash. Echoes the M2 delegation_chain_root so the sink can verify the gateway saw the same chain the subject committed to. Search keywords: capability token, challenge receipt, gateway receipt, M3.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYesAuthorityEvaluationRequest from M2
decisionYes
deny_reasonNo
policy_digestYesSHA-256 of the policy bundle used in evaluation
gateway_public_keyYes
gateway_private_keyYes

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, and destructiveHint=false, which matches a deterministic signature over a fixed hash, so there is no contradiction. The description does add real context beyond annotations: the output is a signed permit/deny and it echoes the M2 delegation_chain_root so the sink can confirm chain agreement. However, it says nothing about the handling of the required gateway_private_key (sensitivity, whether the key is persisted, error behavior on signature failure), which an agent calling a signing tool needs to 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?

Roughly four sentences, front-loaded, and not bloated, but the leading 'v0.1 capability-token gateway receipt (M3)' is opaque rather than informative, and the trailing 'Search keywords' list is keyword-stuffing that consumes space without helping an agent decide or call correctly. No sentence is egregiously long, but the structure prioritizes version tags over the actual precondition and output.

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 six-parameter, five-required cryptographic tool with no output schema, the description should explain what the returned receipt looks like and when the tool is valid to call. It gestures at the receipt contents (signed decision, echoed chain root) but omits the call ordering relative to sibling capability tools, the meaning of deny_reason, and any key-handling caveats. It is not sufficient to invoke the tool reliably.

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 description coverage is only 33%: request (partially) and policy_digest are annotated, while decision, deny_reason, gateway_public_key, and gateway_private_key carry no description in either the schema or the tool description. The description mentions challenge_hash and delegation_chain_root, which are not top-level parameters at all, so it does not compensate for the gap. With five required parameters, this leaves the caller guessing about half the 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 description does name a concrete action (gateway signs a permit/deny over the sink's challenge_hash) and a concrete artifact (capability-token gateway receipt), so the mechanics are identifiable. But it is dense with undefined domain jargon ('M3', 'sink', 'delegation_chain_root') and never distinguishes itself from the closely named siblings aps_capability_issue_challenge, aps_capability_evaluate_authority, or aps_capability_sign_effect. An agent unfamiliar with the ontology can tell it produces a signed receipt but not confidently place it in the pipeline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 at all. The description never says whether this is called after aps_capability_evaluate_authority, before aps_capability_sign_effect, or what precondition (an M2 delegation chain, an existing challenge) must hold first. Only a 'Search keywords' line is offered, which aids retrieval, not invocation.

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

aps_capability_sign_effectSign Capability Effect ReceiptA
Destructive

v0.1 capability-token sink effect receipt (M4). The sink verifies the gateway's M3, consumes the token preimage (rejecting a replayed nullifier), and signs an EffectReceipt binding the consumed token to the action result the caller supplies. This tool does not execute the action. The (M1, M3, M4) tuple is the full attestation record. Search keywords: capability token, effect receipt, M4, sink attestation.

ParametersJSON Schema
NameRequiredDescriptionDefault
effectYes
challengeYesOriginal SinkChallenge from M1 (for binding verification)
sink_public_keyYes
sink_private_keyYes
challenge_receiptYesChallengeReceipt from M3
gateway_public_keyYesUsed to verify M3 before consuming the token
expected_delegation_chain_rootNoIf omitted, falls back to the receipt's own root

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and idempotentHint=false; the description earns credit by explaining WHY — the token preimage is consumed and replayed nullifiers are rejected, and M3 is verified before consumption. That causal detail is exactly what annotations alone cannot convey, though private-key handling and error behavior remain undisclosed.

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?

Roughly 70 words, front-loaded with the signing action and followed by concrete behavioral constraints. The trailing "Search keywords" list and the "v0.1 ... (M4)" version prefix are filler that slightly dilute the opening, but no sentence is redundant with the rest.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 7-parameter signing operation with private key material, nested objects, and no output schema, the definition covers the protocol flow well but omits what the returned EffectReceipt contains and what failure modes exist beyond replay. An agent could call it, but would be guessing about the output 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 57%, so the description has to do some work and it does: it maps challenge to the token preimage, challenge_receipt/gateway_public_key to M3 verification, and effect to the caller-supplied action result. It says nothing about the nested effect fields (outcome enum, executed_at, result_digest) or about expected_delegation_chain_root.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: the sink verifies M3, consumes the token preimage, and signs an EffectReceipt. The M1/M3/M4 staging implicitly distinguishes it from the sibling capability tools (issue_challenge, mint_receipt), but it never names those siblings outright, so the agent must infer which tool produces the M3 receipt it 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?

The one explicit usage boundary is "This tool does not execute the action," which usefully prevents misuse as an executor. However, there is no statement of call ordering by tool name (e.g. call after aps_capability_mint_receipt), no prerequisitives for the keys, and no guidance on when not to call it beyond replay rejection.

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

aps_check_artifact_citationsCheck Artifact CitationsA
Read-onlyIdempotent

Representation boundary: gate a binding artifact's citations. Each citation must resolve to a provided, signed, unexpired receipt whose content + principal match, with per-artifact replay protection, and each receipt must bind its parties to the keys beside them. What a valid result establishes: every citation is backed by a receipt the cited principal consented to. What it does not establish: authority to act on the artifact. Receipts whose parties are named by identifiers that do not self-certify stop passing this gate.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifactYesCitingArtifact with optional citations[] array
receiptsYesAttributionReceipts backing each citation
binding_contextNoRequire receipts to be scoped to this binding context

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so safety is handled. The description adds substantive behavior beyond that: replay protection, the requirement that receipts be signed and unexpired, the party-to-key binding, the explicit positive claim (citation backed by consented receipt) and negative claim (no authority to act), plus a failure mode for non-self-certifying identifiers.

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 operation, then uses parallel 'What a valid result establishes' / 'What it does not establish' clauses that are easy to parse. Dense but every sentence carries semantic load; only the closing sentence on identifiers is slightly tangential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 defines what a passing result means and, importantly, what it does not mean, which is exactly what an agent needs to interpret the boolean outcome. Annotations cover the safety profile, so the 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 coverage is 100%, so all three parameters are already documented in the schema. The description adds some semantic weight to the 'receipts' and 'citation' inputs by defining what a valid receipt must satisfy, but it never addresses the binding_context scoping parameter, so it stays at the baseline for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'gate a binding artifact's citations', then specifies the resolution requirements each citation must satisfy. An agent can tell this is a validation/gate operation on citations, though it does not differentiate itself from the many neighboring aps_verify_* tools by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 framing as a gate whose success criterion is spelled out, and the 'does not establish authority to act' note hints at where it sits in a pipeline. However, it never names an alternative (e.g. aps_verify_attribution_primitive, aps_check_projection_consistency) or states when a calling agent should reach for this tool rather than a sibling check.

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

aps_check_escalation_requiredCheck Escalation RequiredA
Read-onlyIdempotent

Escalation boundary: check whether an action on a v2 delegation requires owner confirmation before execution. Returns {required, requirement?, reason?}. Use aps_record_owner_confirmation to clear the flag when required.

ParametersJSON Schema
NameRequiredDescriptionDefault
delegationYesV2Delegation with optional scope.escalation_requirements
session_idNoSession id (required for per_session scope)
action_classYesAction class (e.g. 'org_creation', 'spend_above_threshold')
action_detailsNoStructured details; hashed for audit

TDQS

A4.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, so safety is covered; the description adds genuinely new value by disclosing the return shape {required, requirement?, reason?} in the absence of an output schema, and by explaining that the flag is cleared via aps_record_owner_confirmation. It does not cover auth requirements or the per_session scoping implications explicitly.

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 tight sentences: purpose, return shape, follow-up action — front-loaded with the escalation framing and zero 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 must carry the return contract, and it does ({required, requirement?, reason?}). It also closes the loop with the clearing tool, so an agent has everything needed to call it and act on 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 session_id for per_session scope and action_details being hashed for audit) are already documented in the schema. The description adds no parameter-level syntax or format detail beyond that 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 ('check') and object ('whether an action on a v2 delegation requires owner confirmation before execution'), plus frames it as an 'escalation boundary'. It is clearly distinguishable from the many other 'check_*' siblings and from aps_record_owner_confirmation, which it explicitly names.

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 context for use ('before execution' of an action on a v2 delegation) and routes the agent to the follow-up tool when the flag is set. There is no explicit when-not or a named alternative check path, but the timing condition and next-step handoff are concrete.

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

aps_check_projection_consistencyCheck Projection ConsistencyA
Read-onlyIdempotent

Cross-projection consistency check: given two projections, confirm they originate from the same signed receipt. Returns {same_receipt: true} or {same_receipt: false, reason: 'DIFFERENT_ACTIONS'|'DIFFERENT_RECEIPTS'|'DIFFERENT_SIGNATURES'|'METADATA_MISMATCH'}.

ParametersJSON Schema
NameRequiredDescriptionDefault
projection_aYesFirst AttributionProjection
projection_bYesSecond AttributionProjection

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, so the safety profile is covered. The description adds real behavioral value by spelling out the two return shapes and enumerating the four failure reasons, which is important since no output schema exists.

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 tight sentences, front-loaded with the operation and followed by the return contract. No wasted prose, though the reason enum makes the second sentence dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 two-input check with no output schema, the description covers the operation and return values including every failure reason. It is nearly complete; only the nature/format of an AttributionProjection is 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 coverage is 100%, but the schema only labels the fields ('First/Second AttributionProjection'). The description confirms both inputs are projections but adds no format, ordering, or validity constraints, 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?

States a specific verb ('confirm') and resource ('two projections originate from the same signed receipt'), making the cross-projection check distinct from the many sibling verify_* tools. It does not explicitly name which sibling it replaces, but the purpose 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 implied by 'cross-projection consistency check' but there is no explicit when-to-use/when-not guidance and no comparison against adjacent tools like aps_verify_attribution_projection or aps_check_artifact_citations. An agent must infer the scenario.

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

aps_compute_attribution_action_refCompute Attribution Action RefB
Read-onlyIdempotent

Derive the action_ref (hex sha256) for an action tuple. action_ref is the content-addressed anchor that all four axis projections bind to. Useful for indexing primitives by action without constructing the full primitive.

ParametersJSON Schema
NameRequiredDescriptionDefault
nonceYes
paramsYes
agentIdYes
actionTypeYes

TDQS

B3.3/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, openWorldHint=false), so the bar is lower. The description adds genuine semantic context beyond them: the value is a deterministic content-addressed sha256 anchor that the four axis projections bind to, which is not inferable 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.

Conciseness4/5

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

Three compact sentences with the core definition front-loaded and no filler. Every sentence adds something, though the third sentence blends usage guidance into the purpose block.

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 operation with an undocumented nested object and no output schema, the description omits how the action tuple is assembled and what role agentId, nonce, or params play. It names the output format (hex sha256) but leaves the inputs effectively unspecified.

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 description coverage is 0% across four required parameters, including a nested 'params' object, and the description never enumerates or explains them. The loose phrase 'action tuple' gestures at the four fields but gives no mapping to agentId/actionType/params/nonce, so it fails to compensate for the coverage 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?

States a specific verb ('Derive') and output resource ('action_ref (hex sha256) for an action tuple'), and the follow-up sentence explains what the value is. It only loosely differentiates from the similarly-named sibling compute_action_ref, differentiating instead against 'constructing the full primitive'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 'Useful for indexing primitives by action without constructing the full primitive' implies a use case and a contrast with primitive construction, but there is no explicit when-not guidance and no sibling is named to route between it and compute_action_ref.

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

aps_compute_compute_axis_weightsCompute Compute Axis WeightsA
Read-onlyIdempotent

Compute the C-axis fractional weight vector from a list of inference billing records (prompt_tokens, completion_tokens). Returns canonical ComputeAxisEntry[] with 6-digit decimal compute_share strings that sum to ~1.0 and feed directly into aps_construct_attribution_primitive. Weights = prompt_tokens + completion_tokens × COMPLETION_MULTIPLIER (default 3.0), then normalized. Parameter names match the SDK: providers, optional profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoOptional WeightProfile override; defaults to DEFAULT_WEIGHT_PROFILE
providersYesPer-provider billing records

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), and the description goes beyond them by disclosing the output shape (canonical ComputeAxisEntry[] with 6-digit decimal compute_share strings summing to ~1.0) and the exact weighting formula with a default COMPLETION_MULTIPLIER of 3.0. It omits edge-case behavior (empty provider list, all-zero tokens, rounding/precision guarantees), keeping 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?

Four tight sentences, front-loaded with what is computed and followed by output shape, formula, and parameter notes. Each sentence carries information, though the formula sentence is dense and could be marginally 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 carries the return-value burden and discharges it by naming the return type and the sum-to-~1.0 invariant. Combined with the downstream linkage to aps_construct_attribution_primitive, it is nearly complete; only error/edge-case behavior 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%, so the baseline is 3, but the description adds real meaning: it explains that `providers` entries are inference billing records whose prompt_tokens and completion_tokens drive the weighting formula, and that `profile` is an optional override. It also notes parameter names match the SDK, aiding caller construction.

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 precise verb and resource — 'Compute the C-axis fractional weight vector from a list of inference billing records' — and even specifies the input fields (prompt_tokens, completion_tokens). The 'C-axis'/'compute' framing implicitly distinguishes it from the sibling aps_compute_data_axis_weights, so an agent can route correctly 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?

The description gives clear downstream context: the output 'feed[s] directly into aps_construct_attribution_primitive,' which tells the agent where this sits in the workflow. It does not, however, state exclusions or explicitly contrast with aps_compute_data_axis_weights, 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.

aps_compute_data_axis_weightsCompute Data Axis WeightsA
Read-onlyIdempotent

Compute the D-axis fractional weight vector from a list of AccessReceipt records with role, timestamp, and content length. Returns canonical DataAxisEntry[] with 6-digit decimal contribution_weight strings that sum to ~1.0 and feed directly into aps_construct_attribution_primitive. Empty input returns an empty array, and all-zero raw weights return an error. Weights = role × recency_decay × length_weight, then normalized. Parameter names match the SDK: sources, action_timestamp, optional profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoOptional WeightProfile override; defaults to DEFAULT_WEIGHT_PROFILE
sourcesYesPer-source records with retrieval metadata
action_timestampYesISO-8601 UTC ms when the action ran (t_action)

TDQS

A4.4/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 extra context: the exact return shape (DataAxisEntry[] with 6-digit decimal strings summing to ~1.0), the weighting formula, and two distinct error/edge behaviors.

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, then return shape, edge cases, formula, and parameter note in a compact block. Dense but every clause carries information, though the parameter-naming sentence is the weakest.

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 properly explains the return value (canonical DataAxisEntry[] with normalized 6-digit weights) and error behavior. An agent has everything needed to call and interpret 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?

Schema description coverage is 100%, so the schema already documents all three parameters including enum values and formats. The description only restates the parameter names and notes profile is optional, adding no syntax or semantic 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 (Compute) and resource (D-axis fractional weight vector from AccessReceipt records) with clear scope. It also names the downstream sibling it feeds into (aps_construct_attribution_primitive), helping distinguish it from related aps_compute_* 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?

Gives clear context that the output feeds directly into aps_construct_attribution_primitive and describes boundary conditions (empty input -> empty array, all-zero raw weights -> error). However, it never explicitly names an alternative tool or a 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.

aps_construct_attribution_primitiveConstruct Attribution PrimitiveB
Read-onlyIdempotent

Build and sign a four-axis AttributionPrimitive for an action. Axes: D (data sources), P (protocol modules), G (delegation chain), C (compute providers). Returns the complete signed object.

ParametersJSON Schema
NameRequiredDescriptionDefault
axesYesFour-axis content. See spec §1.2 for entry shapes per axis.
actionYesAction identity tuple; the action_ref is derived as sha256(canonical(this))
issuerYesIssuer DID (gateway or agent producing the receipt)
timestampNoISO-8601 UTC with ms precision + Z (§2.5). Defaults to now().
issuer_private_keyYesEd25519 private key hex that signs the envelope

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is largely covered. The description adds that the output is a complete signed object, but says nothing about the key-handling requirement implied by issuer_private_key, nor about determinism despite timestamp defaulting to now(), which sits awkwardly against idempotentHint=true.

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 short sentences, zero filler: purpose first, axis legend second, return value last. Information is front-loaded and every clause carries distinct 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 nested, five-parameter cryptographic construction tool with no output schema, the description covers the return value and axis meanings but omits how the signing key is used or validated, what happens on signature failure, and whether the timestamp default affects determinism. Annotations patch part of the gap; the remaining behavioral surface 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%, which sets a baseline of 3, and the description earns above baseline by decoding the axes the schema only refers to as 'See spec §1.2': D=data sources, P=protocol modules, G=delegation chain, C=compute providers. It still adds nothing for action, issuer, timestamp, or issuer_private_key.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 pair (build and sign) and a named resource (four-axis AttributionPrimitive for an action), and the axis legend D/P/G/C gives concrete scope. It is clearly distinct from aps_verify_attribution_primitive in direction of operation, but it never explicitly distinguishes itself from the closely-named siblings aps_create_attribution_receipt or aps_compute_attribution_action_ref.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 instead of aps_create_attribution_receipt or the other aps_* attribution tools, and no prerequisites are given (e.g. that a valid Ed25519 issuer key must exist). 'For an action' is the only contextual hint, 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.

aps_create_attribution_receiptCreate Attribution ReceiptA
Read-onlyIdempotent

Representation boundary: build a citer-signed AttributionReceipt attributing a claim to a third-party principal. Each party is named by a self-certifying DID that commits to the key beside it, so a receipt naming a party by a bare public key or by a did:web style identifier will not verify. The receipt is not yet valid: the cited principal must sign consent via aps_sign_attribution_consent before checkArtifactCitations accepts it.

ParametersJSON Schema
NameRequiredDescriptionDefault
citerYesSelf-certifying DID of the citing agent, from the SDK createDID (multibase did:aps). A bare public key or the hex did:aps form from createDIDHex does not self-certify and will not verify.
ttl_msNoReceipt TTL in ms (default: 24h)
gateway_idNoGateway id for timestamping (default: 'mcp')
binding_contextYesID of the binding artifact this citation is scoped to
cited_principalYesSelf-certifying DID of the cited principal, from the SDK createDID (multibase did:aps). It must commit to cited_principal_public_key.
citation_contentYesThe quoted or paraphrased claim
citer_public_keyYesHex public key of citer
citer_private_keyYesHex private key of citer
cited_principal_public_keyYesHex public key of cited principal

TDQS

A3.6/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), so the bar is lower, yet the description adds substantive context beyond them: parties must be self-certifying multibase did:aps DIDs, bare public keys or did:web identifiers will fail verification, and the output is invalid until a consent signature exists. It does not, however, explain what is returned or whether anything is persisted, leaving a mild tension with readOnlyHint for a tool named 'create'.

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, front-loaded with the core action and then constraints and follow-up. The opening label 'Representation boundary:' is opaque jargon that costs a few words without orienting the agent, but the rest is dense and free of padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 nine-parameter cryptographic tool with no output schema, the description covers the semantic model, DID constraints, and the consent prerequisite well. It never states what the call returns (a receipt object, an id — a sibling aps_attribution_receipt_id exists) or what ttl_ms/gateway_id affect, which is a real gap when 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 description coverage is 100%, so the schema already documents all nine parameters, including the DID/key commitment requirement per party. The description restates the cross-parameter constraint (DID must commit to the key beside it) and the failure mode for bare keys, but adds little that is not already in the schema text, 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?

Names a specific verb and resource ('build a citer-signed AttributionReceipt') and scopes it to 'attributing a claim to a third-party principal', which separates it from siblings like aps_sign_attribution_consent and aps_check_artifact_citations. It does not explicitly distinguish itself from other receipt-constructing siblings (aps_construct_attribution_primitive, aps_create_provisional), 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 final sentence supplies real workflow context: the receipt is 'not yet valid' until the cited principal signs via aps_sign_attribution_consent, and checkArtifactCitations gates acceptance. That is post-condition guidance rather than an explicit when-to-use-this-vs-alternative rule, and no exclusions are given, so it is implied usage at best.

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

aps_create_provisionalCreate Provisional StatementA
Read-onlyIdempotent

Commitment boundary: emit a provisional statement for agent-to-agent negotiation. Default is non-binding until a PromotionEvent satisfies a PromotionPolicy. Dead-man expiry auto-withdraws.

ParametersJSON Schema
NameRequiredDescriptionDefault
authorYesAgentDID/public key of the emitting agent
contentYesStatement content (offer, position, claim)
gateway_idNoGateway id for timestamping (default: 'mcp')
dead_man_msNoDead-man expiry relative to now (ms). If elapsed without promotion/withdrawal, statement auto-withdraws.
author_principalYesPrincipalDID behind the author
author_private_keyYesHex private key of author for signing

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 description earns credit for adding lifecycle semantics the annotations cannot express: the statement is non-binding by default until a PromotionEvent satisfies a PromotionPolicy, and dead-man expiry auto-withdraws it. It stops short of stating that the call requires the author's private key to sign, or what happens on signing failure.

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 with the framing ('Commitment boundary') front-loaded and the binding/expiry rules following. No filler, though the leading label is slightly opaque and the sentence boundaries could be sharper.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 six-parameter, four-required signing tool with no output schema, the description covers lifecycle but not the result: it never says what the caller receives (statement id, signed artifact, receipt) or that a private key is mandatory. Annotations and the rich schema carry most of the load, so this is adequate but has a real gap around outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 six parameters, so the schema already documents author, content, gateway_id, dead_man_ms, author_principal and author_private_key. The description's dead-man expiry sentence largely restates the schema's own wording for dead_man_ms and adds no format or constraint detail beyond it, 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 specific verb and resource ('emit a provisional statement') and scopes it to 'agent-to-agent negotiation'. It implicitly separates the provisional stage from the promotion stage (PromotionEvent/PromotionPolicy), which is the key distinction from siblings like aps_promote_statement and aps_withdraw_provisional, though it never names those siblings directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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: use this for negotiation-time statements that are non-binding until promoted. There is no explicit when-not guidance, no stated prerequisites (e.g. an existing author principal/identity), and no routing to the alternative tools an agent should reach for when the statement must be made binding or retracted.

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

aps_project_attributionProject Attribution AxisA
Read-onlyIdempotent

Extract a single-axis projection from an AttributionPrimitive. The projection carries the axis content plus a two-hop Merkle path that lets a downstream verifier reconstruct the signed root without seeing the other three axes. axis: 'D' | 'P' | 'G' | 'C'.

ParametersJSON Schema
NameRequiredDescriptionDefault
axisYesAxis to project
primitiveYesAn AttributionPrimitive (from aps_construct_attribution_primitive)

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), so the bar is lower. The description adds real behavioral context beyond them: the projection carries axis content plus a two-hop Merkle path and enables root reconstruction without exposing the other three axes, which is genuinely useful for an agent reasoning about disclosure.

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 front-loaded sentences with no filler; the purpose and output shape come first. The trailing 'axis: D | P | G | C' repeats the schema enum and is mildly redundant, costing a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 two-parameter tool with no output schema, the description does the important work of describing what the projection contains and what it enables downstream. It is essentially complete for invocation, with the only gap being the absence of guidance tying it into the surrounding APS attribution workflow.

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

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 axis enum ('D' | 'P' | 'G' | 'C') but never decodes what D/P/G/C stand for or how the choice affects the output, and it adds nothing about the primitive parameter beyond the schema's reference to aps_construct_attribution_primitive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 — 'Extract a single-axis projection from an AttributionPrimitive' — and even explains the shape of the output (axis content plus a two-hop Merkle path). It is clearly distinguished from verification siblings like aps_verify_attribution_projection by being the extraction step, though it 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?

The clause 'lets a downstream verifier reconstruct the signed root without seeing the other three axes' implies the reason to use this tool (limited-disclosure verification), so usage is inferable. However, it never states when to choose this over aps_construct_attribution_primitive, aps_verify_attribution_projection, or aps_verify_attribution_primitive, 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.

aps_promote_statementPromote Provisional StatementB
Read-onlyIdempotent

Commitment boundary: promote a provisional statement to binding by attaching a PromotionEvent that satisfies the PromotionPolicy (m-of-n principal signatures). dead_man_elapsed cannot promote, because the dead-man path auto-withdraws the statement.

ParametersJSON Schema
NameRequiredDescriptionDefault
policyYesPromotionPolicy {id, required_signers, threshold, max_time_to_promote}
statementYesProvisionalStatement from aps_create_provisional
promotion_eventYesPromotionEvent with kind, promoted_at, promoter, promoter_signature, policy_reference

TDQS

B3/5.0
Behavior1/5

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

The description clearly describes a state-changing operation ('promote ... to binding by attaching a PromotionEvent'), yet annotations declare readOnlyHint=true. This is a direct contradiction: the tool mutates state while structured metadata claims it is read-only. Annotation Contradiction flagged.

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, front-loaded with the 'Commitment boundary' framing, with the critical caveat about dead_man_elapsed placed immediately after the core action. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 the core mechanism and one important exclusion, which is reasonable for a 3-param tool with no output schema. But the safety profile is actively misleading (readOnlyHint=true on a mutation), and the description does nothing to correct it, leaving the agent with a wrong mental model of side effects.

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

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 statement, promotion_event and policy. The description adds the constraint that the PromotionEvent must satisfy the PromotionPolicy (m-of-n principal signatures), which adds semantic value beyond the schema, 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?

States a specific verb and resource ('promote a provisional statement to binding') and names the mechanism (attaching a PromotionEvent satisfying a PromotionPolicy). An agent can distinguish this from aps_withdraw_provisional and aps_verify_promotion, though the description doesn't explicitly 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 Guidelines3/5

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

Provides one useful exclusion ('dead_man_elapsed cannot promote, because the dead-man path auto-withdraws the statement'), which is real routing guidance. However, it gives no explicit when-to-use context relative to aps_verify_promotion or the conditions under which a promotion should be attempted.

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

aps_record_owner_confirmationRecord Owner ConfirmationB
Read-onlyIdempotent

Escalation boundary: owner signs an OwnerConfirmation authorizing a flagged action. Builds the ConfirmationRequest and signs it in a single call. The confirmation is bound to action_details via hash and scoped (per_action / per_session / time_window).

ParametersJSON Schema
NameRequiredDescriptionDefault
delegationYesV2Delegation with escalation_requirements for this action class
session_idNoSession id (required for per_session scope)
action_classYesAction class being confirmed
action_detailsYesStructured action details — hashed and bound to the confirmation
owner_private_keyYesHex private key of the delegation's owner (delegator)

TDQS

B3.1/5.0
Behavior1/5

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

The description says the tool builds and signs a confirmation and the tool name records one, i.e. it produces a new signed artifact, yet annotations declare readOnlyHint=true and destructiveHint=false. The only genuine behavioral disclosure (hash binding, scope modes) does not resolve this mismatch.

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 dense sentences and no filler; the escalation framing is front-loaded. Slightly jargon-heavy about scope without defining the three modes, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 no-output-schema tool with annotations that are at least questionable, the description covers what is produced but omits prerequisites (delegation must carry escalation_requirements) and what the caller gets back. Adequate but with clear 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 adds real meaning beyond the schema: it explains that the confirmation is bound to action_details via hash and that scope determines which inputs matter (e.g. session_id for per_session). That is semantics the schema only gestures at.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 artifact: the owner signs an OwnerConfirmation authorizing a flagged action, built and signed in one call. That is far more specific than siblings like request_human_approval or aps_check_escalation_required, though the description never names those siblings to disambiguate the escalation workflow.

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

Usage Guidelines3/5

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

'Escalation boundary' implies this is used once an action has been flagged as requiring escalation, but it never states the precondition explicitly or points to aps_check_escalation_required as the tool that determines whether escalation is needed. 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.

aps_verify_attribution_primitiveVerify Attribution PrimitiveA
Read-onlyIdempotent

End-to-end verify of a full AttributionPrimitive: constructs projections for all four axes and verifies each one. Useful as a post-construction sanity check or for verifying a primitive received from a peer.

ParametersJSON Schema
NameRequiredDescriptionDefault
primitiveYesAn AttributionPrimitive
issuer_public_keyYesIssuer Ed25519 public key hex

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, closed-world, so the safety profile is covered. The description adds genuinely new behavioral detail: it internally constructs projections for all four axes before verifying, which an agent would not infer from the schema. It omits failure modes and return behavior, keeping it out of 5 territory.

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 tightly written sentences, front-loaded with the core action and followed by the mechanism and use cases. No filler; every clause earns its place.

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

Completeness4/5

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

For a two-parameter read-only verification tool with full schema coverage and no output schema, the description is nearly complete. The only gap is that with no output schema it could hint at what verification produces (pass/fail or per-axis results), but this 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 description coverage is 100%, so the baseline is 3. The description adds only the nuance that the primitive is 'full' (all four axes), and says nothing about the issuer_public_key parameter or expected formats 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?

States a specific verb and resource ('verify of a full AttributionPrimitive') and clarifies the mechanism (constructs projections for all four axes and verifies each). This implicitly separates it from the sibling aps_verify_attribution_projection, which handles a single axis, 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 Guidelines4/5

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

Gives two concrete usage contexts: a post-construction sanity check, and verifying a primitive received from a peer. It stops short of explicit when-not-to-use or naming the projection-level alternative, but the scenarios are clear enough to route an agent.

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

aps_verify_attribution_projectionVerify Attribution ProjectionA
Read-onlyIdempotent

Verify a single-axis AttributionProjection under the issuer's Ed25519 public key. Returns {valid: true} or {valid: false, reason: 'INVALID_AXIS_TAG'|'MERKLE_MISMATCH'|'SIGNATURE_INVALID'|'MALFORMED'}. Verification is purely local and needs no other axes.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectionYesAn AttributionProjection (from aps_project_attribution)
issuer_public_keyYesIssuer Ed25519 public key hex

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, closed-world behavior, so the safety profile is covered. The description adds genuinely useful context beyond that: the exact return shape and the enumerated failure reasons, plus the fact that verification is local and offline. It does not mention permission or key-trust requirements, 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.

Conciseness5/5

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

Three tight sentences, front-loaded with the operation and scope, then the return contract, then the locality constraint. Every sentence earns its place with no 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?

With no output schema, the description correctly carries the return-value burden by listing valid/reason outcomes, and annotations cover safety. Combined with full schema coverage, an agent has what it needs; only explicit prerequisite/auth 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 coverage is 100%, so both parameters are already documented. The description adds only marginal semantics ('single-axis' for projection, Ed25519 for the key), which the schema largely supplies. 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 (verify an AttributionProjection) and narrows scope with 'single-axis' and 'under the issuer's Ed25519 public key'. This distinguishes it from sibling verifiers like aps_verify_attribution_primitive and aps_check_projection_consistency, 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?

'Verification is purely local and needs no other axes' gives a contextual hint about prerequisites (no cross-axis data needed), but there is no explicit when-to-use guidance or routing to alternatives such as aps_verify_attribution_primitive or aps_check_projection_consistency. Usage is implied rather than stated.

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

aps_verify_promotionVerify Statement PromotionA
Read-onlyIdempotent

Commitment boundary: verify that a promoted statement's PromotionEvent cryptographically satisfies the PromotionPolicy (policy_reference match, promoter in required_signers, threshold, signature, max_time_to_promote, author-signature tamper check).

ParametersJSON Schema
NameRequiredDescriptionDefault
policyYesPromotionPolicy to check against
statementYesPromoted ProvisionalStatement

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already establish readOnly, idempotent, non-destructive behavior, so the bar is lower. The description usefully discloses the semantic scope of the verification (policy_reference match, signer membership, threshold, signature, max_time_to_promote, tamper check), but says nothing about failure behavior, whether it raises or returns a verdict, or any auth requirements.

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?

A single front-loaded sentence with a parenthetical check list; no sentence is wasted. The dense parenthetical is information-rich but pushes the leading 'Commitment boundary' jargon ahead of the actual action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 return contract (boolean verdict vs. exception) is left unspecified, which is a real gap for a verification tool. Otherwise the description covers inputs, checks, and the read-only nature sufficiently 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% and the two parameters are already documented, giving a baseline of 3. The description adds genuine meaning by naming the policy sub-fields that are actually evaluated (required_signers, threshold, max_time_to_promote), telling the agent what must be populated in the policy 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 description gives a precise verb+resource (verify a promoted statement's PromotionEvent against a PromotionPolicy) and enumerates the exact checks performed, which functionally separates it from aps_promote_statement and review_promotion. It stops short of naming any sibling, so an agent must infer the routing from the check list 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 'Commitment boundary' framing implies this is a gate that runs after promotion, but the description never states when to call it, what precondition (a completed promotion) is required, or why one would choose it over review_promotion. Usage is only implied.

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

aps_verify_settlementVerify Settlement RecordA
Read-onlyIdempotent

Verify a signed SettlementRecord under S1-S5 (signature, Merkle roots, conservation, residual shape, optional input-receipts cross-check). S3 conservation is the strongest invariant: a gateway cannot inflate or suppress any contributor's share without breaking it. Returns {valid: true} or {valid: false, reason, detail}. Pass inputReceipts to also recompute input_receipts_hash.

ParametersJSON Schema
NameRequiredDescriptionDefault
recordYesA signed SettlementRecord
input_receiptsNoOptional — the input Attribution Primitives that fed the settlement. When supplied, S5 cross-checks input_receipts_hash and verifies each receipt individually.
gateway_public_keyYesGateway Ed25519 public key hex

TDQS

A4.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, so the bar is lower, yet the description adds real value by naming the S1-S5 check set, flagging S3 conservation as the strongest invariant, and disclosing the return contract ({valid: true} or {valid: false, reason, detail}). It stops short of noting failure semantics like error vs invalid result, but this is a solid addition.

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 dense sentences, front-loaded with the core verify action and its checks, then the invariant rationale, then the return/optional-param facts. No filler, though the invariant sentence is marginally verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 stating the return shape and the S1-S5 verification scope, and by clarifying the optional cross-check path. It leaves no major gap for calling the tool correctly, though failure-mode specifics (e.g., malformed record handling) are absent.

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 beyond the schema by explaining the functional consequence of supplying input_receipts (S5 cross-check plus individual receipt verification) rather than just restating the field. gateway_public_key and record semantics stay purely 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?

States a specific verb (Verify) and resource (signed SettlementRecord) and enumerates the checks performed (signature, Merkle roots, conservation, residual shape, input-receipts cross-check). This clearly separates it from siblings like generate_settlement and aps_aggregate_settlement that produce rather than validate settlements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 one conditional usage cue ('Pass inputReceipts to also recompute input_receipts_hash') but never states when to reach for this tool versus generate_settlement/aps_aggregate_settlement, nor any when-not conditions. Usage is implied rather than spelled out.

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

aps_withdraw_provisionalWithdraw Provisional StatementB
Read-onlyIdempotent

Commitment boundary: author withdraws their own provisional statement. Already-promoted statements cannot be withdrawn. Caller must supply the author's signature over the withdrawal payload (canonicalize({action:'withdraw', statement_id})).

ParametersJSON Schema
NameRequiredDescriptionDefault
statementYesProvisionalStatement to withdraw
author_signatureNoHex Ed25519 signature. If omitted, provide author_private_key and the tool will sign for you.
author_private_keyNoIf provided, tool signs the withdrawal payload with this key.

TDQS

B3.3/5.0
Behavior1/5

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

The description asserts a state-changing action ('author withdraws their own provisional statement') and a signed withdrawal payload, while the annotations declare readOnlyHint=true (no environment modification). A withdrawal changes the statement's status, so the structured safety hint and the prose conflict. The added commitment-boundary and author-signature context is useful, but the contradiction is disqualifying.

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-loading boundary semantics, then the promotion exclusion, then the signing requirement. Every clause carries information, though the jargon opener 'Commitment boundary:' is slightly opaque as a 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?

Covers the action, the author-only precondition, the promotion exclusion, and the signing payload – most of what is needed for a 3-parameter tool. With no output schema and a contradicted annotation, it still leaves the tool's actual effect (persisted withdrawal vs. returned artifact) and return value unspecified.

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 three parameters are already documented and the baseline is 3. The description earns a bump by stating who must sign (the author) and the exact payload to canonicalize (canonicalize({action:'withdraw', statement_id})), details absent from the schema's generic 'Hex Ed25519 signature' 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?

Names a specific verb (withdraw) and resource (provisional statement), scopes it to the author's own statement, and draws a line against promotion with 'already-promoted statements cannot be withdrawn.' An agent can distinguish it from aps_promote_statement, though that sibling is not 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 precondition (caller must be the author) and an explicit when-not condition (promoted statements cannot be withdrawn). It stops short of naming the alternative tool to use when withdrawal is not applicable, so routing to siblings is left implicit.

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

assign_agentAssign Agent to Task RoleB

[OPERATOR] Assign an agent to a role in a task. Creates a delegation automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesRole to assign
scopeYesDelegation scopes
task_idYesTask ID
agent_idYesAgent ID
spend_limitNoMax spend
agent_public_keyYesAgent's Ed25519 public key

TDQS

B3.4/5.0
Behavior4/5

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

Annotations declare write/non-idempotent/non-destructive, so the safety profile is already covered. The description adds two genuinely useful traits beyond that: the [OPERATOR] tag signals an elevated authorization requirement, and 'Creates a delegation automatically' discloses a non-obvious side effect that a caller would otherwise not anticipate from the 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?

Two compact sentences with the authorization marker and the core action front-loaded. No filler, though the bracketed prefix is slightly cryptic without 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?

For a 6-parameter mutation with no output schema, the description covers purpose and the auto-delegation side effect but omits what the tool returns, whether spend_limit caps are enforced, and the exact privilege implied by [OPERATOR]. Adequate but leaves real gaps an agent must infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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 (task_id, role, agent_id, agent_public_key, scope, spend_limit) are documented in the schema. The description adds no syntax, format, or default 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?

States a specific verb+resource ('assign an agent to a role in a task') and adds the automatic-delegation side effect. It is distinguishable from siblings like create_delegation because it frames delegation as a consequence of role assignment rather than the primary action, though it does not explicitly say when to prefer this over create_delegation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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, prerequisites, or alternative guidance. The [OPERATOR] prefix hints at a privilege requirement but the description never states the condition that selects this tool versus create_delegation, create_v2_delegation, or accept_assignment.

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

attest_to_floorAttest to Values FloorB
Read-onlyIdempotent

Attest that your agent agrees to abide by the loaded Values Floor.

ParametersJSON Schema
NameRequiredDescriptionDefault
extensionsNoOptional additional extensions
floor_versionYesVersion of the floor to attest to

TDQS

B3.1/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 the meaningful constraint that the floor must already be 'loaded' and that the attestation represents agent agreement, but it says nothing about what happens on a floor_version mismatch, whether the attestation is persisted, or whether extensions alter the commitment.

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?

A single well-formed sentence with the action front-loaded and zero filler; it is appropriately short for a two-parameter tool. It stops just short of packing in the prerequisite information that would make the brevity fully effective.

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 governance-commitment tool with no output schema, so the description is the only place the agent can learn what the attestation actually produces and what it commits to. It omits the prerequisite relationship to load_values_floor, the consequence of attesting, and whether extensions broaden the commitment — gaps that matter for a values-floor attestation.

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

Parameters3/5

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

Schema description coverage is 100%, so floor_version and extensions are already documented in the schema and this is the baseline case. The description adds no extra semantics such as whether floor_version must match the currently loaded floor or what a valid extensions string references.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Attest') and resource ('Values Floor'), and the object clause ('that your agent agrees to abide by') makes the commitment semantics clear rather than tautological. It is distinguishable from load_values_floor in principle, but it never explicitly contrasts the two, so an agent must infer the division of labour from the names 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 guidance, no sequencing hint beyond the adjective 'loaded', and no named alternative. With siblings like load_values_floor, sign_charter, and create_disclosure in the same governance family, the description should state whether the floor must be loaded first and whether attestation is required before other calls.

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

broadcastBroadcast Agent MessageB

Send a signed message to all agents via comms/broadcast.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoStructured data payload
typeNoMessage type (default: 'broadcast')
messageYesMessage body
subjectYesMessage subject
priorityNoPriority: low, normal, high, critical

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare the mutation profile (readOnly=false, idempotent=false, destructive=false, openWorld=false), so the safety picture is covered. The description adds one useful behavioral fact beyond that — the message is 'signed' — but says nothing about required signing keys, delivery guarantees, or the persistence role of comms/broadcast.json.

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?

A single sentence with zero filler, front-loading the action and the destination. Nothing is repeated from the title and nothing 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?

For a non-idempotent broadcast mutation with five parameters, no output schema, and a nested data object, the description leaves open what 'signed' entails, how recipients are enumerated, and what success or failure looks like. It is minimally adequate but not complete 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 each of the five parameters (subject, message, type, priority, data) is already documented in the schema. The description contributes no additional parameter semantics such as format expectations for subject or the priority ordering, 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 (send) and resource (a signed message), and the phrase 'to all agents' scopes it as a broadcast rather than a point-to-point send. It stops short of naming the siblings that overlap most (send_message, post_agora_message), so sibling 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 explicit when-to-use or when-not-to-use guidance and no named alternative, despite several competing messaging tools in the sibling list (send_message, post_agora_message, check_messages). The implied selection rule ('all agents' = broadcast, singular = send_message) must be inferred by the agent.

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

check_aggregate_constraintsCheck Aggregate ConstraintsC
Read-onlyIdempotent

Check if a data access would violate aggregate rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYes
sourceIdYes
windowMsNo
burstLimitNo
lastAccessMsYes
windowStartMsYes
currentAccessCountYes
currentRecordCountYes
maxAccessesPerWindowNo

TDQS

C2.7/5.0
Behavior3/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 the useful nuance that this is a hypothetical evaluation ('would violate'), implying a pre-check that does not consume access, but it says nothing about the response shape or what to do on violation.

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?

A single front-loaded sentence with zero waste. It is efficient, though for a 9-parameter tool this brevity borders on under-specification rather than pure conciseness.

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, 9 undocumented parameters, and only a one-line description, the definition is far too thin. An agent cannot know what inputs mean, what a violation result looks like, or how the limits interact.

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

Parameters1/5

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

Schema description coverage is 0% across 9 parameters (6 required), and the description adds no parameter meaning whatsoever. Fields like windowStartMs, burstLimit, and maxAccessesPerWindow are left entirely for the agent to guess, which is a serious gap for a constraint-checking 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 description states a specific verb ('Check') and resource ('aggregate rate limits' on data access), making the intent clear. However, it does not differentiate this tool from the many similar check_* siblings (check_usage_permitted, check_combination_permitted, check_purpose_permitted), so an agent must infer which check 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 when-to-use guidance, no prerequisites, and no mention of alternatives among the numerous check_* siblings. The agent is left to infer that this is a pre-access gate, but nothing in the text confirms that.

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

check_combination_permittedCheck Data Combination PermittedC
Read-onlyIdempotent

Check if combining data from two sources is permitted. Prevents prohibited inferences (HIPAA, COPPA, GDPR Art 9).

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
otherSourceIdYes
regulatoryBasisNo
forbiddenSourceIdsNo
otherSourceClassesNo
forbiddenSourceClassesNo

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, and destructiveHint=false, so the safety profile is covered. The description adds useful regulatory context (HIPAA, COPPA, GDPR Art 9) but says nothing about what a denial looks like or what the caller should do on failure, and there is no output schema to carry that.

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 short sentences with zero waste, and the core action is front-loaded before the regulatory rationale. Well-sized for what it chooses to say, even though it omits needed detail.

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?

A 6-parameter compliance-checking tool with 0% schema coverage and no output schema needs the description to explain both the inputs and the meaning of a permitted/denied result. Neither is present, leaving the agent unable to correctly populate most arguments.

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 description coverage is 0% across 6 parameters, so the description carries the full burden of explaining them, and it adds nothing. Fields like reason, regulatoryBasis, forbiddenSourceIds, and forbiddenSourceClasses are entirely opaque; only the vague 'two sources' hints at otherSourceId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Check if combining data from two sources is permitted.' The 'combining data from two sources' framing reasonably distinguishes it from siblings like check_purpose_permitted and check_retention_expired, 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?

No when-to-use guidance, no prerequisites, and no mention of the closely related check_purpose_permitted / check_usage_permitted siblings. The agent must infer that this applies specifically to cross-source inferences 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.

check_jurisdiction_transferCheck Jurisdiction TransferC
Read-onlyIdempotent

Check if a data transfer is permitted under jurisdiction constraints (EU_ONLY, GDPR_ADEQUATE_ONLY, NO_CROSS_BORDER).

ParametersJSON Schema
NameRequiredDescriptionDefault
purposeYes
sourceJurisdictionYesISO 3166-1 alpha-2 code
targetJurisdictionYesISO 3166-1 alpha-2 code
transferConstraintsNo
processingRestrictionsNo

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 the jurisdiction-constraint vocabulary but says nothing about the outcome shape (permitted/denied), what the constraint strings mean, or whether a denial is blocking. Modest added value over annotations, hence a 3.

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?

A single front-loaded sentence with no padding. It is efficient, though the parenthetical token list would be more useful tied to the transferConstraints parameter.

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 5-parameter compliance-check tool with no output schema and 40% schema coverage, the description omits the decision semantics an agent most needs: which constraints are honored, how the three required params interact, and what a permitted vs. denied result means. Adequate as a label, insufficient as an invocation guide.

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 only 40%: sourceJurisdiction and targetJurisdiction carry ISO 3166-1 alpha-2 descriptions, but purpose, transferConstraints and processingRestrictions are bare. The description names three constraint tokens that do not even map to a documented enum on transferConstraints, so it neither documents the params nor compensates for the coverage 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?

States a specific verb+resource: checking whether a data transfer is permitted under jurisdiction constraints, and names the constraint vocabulary (EU_ONLY, GDPR_ADEQUATE_ONLY, NO_CROSS_BORDER). It does not, however, explicitly distinguish itself from the many sibling checks (check_purpose_permitted, check_combination_permitted, check_usage_permitted), so an 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?

No when-to-use, when-not-to-use, or alternative routing is given. The agent is not told whether this belongs in a pre-transfer gate, whether it should be paired with check_purpose_permitted or check_combination_permitted, or what to do when the check fails.

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

check_messagesCheck Agent MessagesB
Idempotent

Check messages addressed to you. Reads from comms/to-{your-agent-name}.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
mark_readNoMark returned messages as processed (default: false)
unprocessed_onlyNoOnly show unprocessed messages (default: true)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description adds real value by revealing the per-agent file backing store, but it never explains that the default invocation is a read while mark_read mutates persisted state, nor how reads are scoped per agent name.

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

Conciseness5/5

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

Two short sentences with no filler; the purpose is front-loaded and the storage location follows immediately as supporting detail. Every clause 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?

For a two-boolean, zero-required-parameter tool this is close to adequate, and the file path hints at the payload. But with no output schema, the description says nothing about the returned message shape or fields, which 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 description coverage is 100% and both parameters carry their own descriptions and defaults, so the schema does the heavy lifting. The description adds no syntax, default, or interaction detail (e.g., that mark_read only affects the messages returned) beyond what is already structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('check messages') and scopes it with 'addressed to you,' which separates it from write-side siblings like send_message and broadcast. It also names the backing store (comms/to-{your-agent-name}.json), so the agent knows exactly what is being read. It stops short of explicitly naming 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?

There is no statement of when to call this versus send_message, broadcast, or the agora tools, and no guidance on how mark_read interacts with a typical check cycle. The only usage signal is the implicit 'messages addressed to you' scope, leaving the agent to infer everything else.

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

check_purpose_permittedCheck Purpose PermittedA
Read-onlyIdempotent

Check if a purpose is permitted under source terms. Supports wildcards (research:*) and hierarchical matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
purposeYesPurpose to check (e.g. research:academic, training:model)
allowedPurposesYesPurposes allowed by the source terms

TDQS

A3.9/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 by structured data. The description adds genuine behavioral context beyond that: wildcard support ('research:*') and hierarchical matching, which tells the agent how the comparison actually behaves. It stops short of describing return/error semantics.

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

Conciseness5/5

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

Two short sentences, no filler, with the core predicate stated first and the matching behavior second. Every sentence earns its place.

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

Completeness4/5

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

For a two-parameter, read-only predicate tool with fully documented parameters and annotations covering the safety profile, the description is nearly sufficient. The one gap is that no output schema exists, so the return shape (presumably a boolean plus rationale) is left for the agent 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 description coverage is 100%, so baseline is 3, and the schema already gives examples for 'purpose'. The description adds matching semantics (wildcards, hierarchical matching) that govern how the two string inputs are compared, which is meaning the schema alone does not 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?

States a specific verb and resource: 'Check if a purpose is permitted under source terms', which is clear and actionable. It does not, however, differentiate itself from near-name siblings such as check_usage_permitted or check_combination_permitted, so an agent lacks an explicit disambiguation 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?

The phrase 'under source terms' implies the scenario (validating a requested purpose against a rights/terms list), so usage is inferable. But there is no explicit when-to-use, no when-not-to-use, and no routing to the many sibling 'check_*' tools that 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.

check_retention_expiredCheck Retention ExpiredB
Read-onlyIdempotent

Check if data retention has expired based on TTL policy.

ParametersJSON Schema
NameRequiredDescriptionDefault
accessTypeNo
accessedAtYesISO timestamp of when data was accessed
maxRetentionMsYesMax retention in ms (null = no limit)

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, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only the decision basis (TTL policy) and says nothing about boundary behavior such as how an expired result is determined or how the null max-retention case is treated — mild added value against a low bar.

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?

A single front-loaded sentence with no filler, which is efficient. It is arguably too terse given the surrounding gaps, but there is no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 clarify the return value and the significance of the null retention case, and it does neither. Annotations cover the safety profile and the schema covers most inputs, so the description is adequate but leaves an agent guessing about 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 coverage is 67%: accessedAt and maxRetentionMs are described in the schema, but the accessType enum (ephemeral/persistent) has no description anywhere. The description contributes no parameter-level meaning and does not compensate for the undocumented enum, though it does not mislead either.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (check) and resource (data retention expiry) and names the decision basis (TTL policy), so the agent can tell what the tool computes. It does not differentiate itself from the cluster of adjacent checkers like validate_temporal_rights or is_evidence_fresh, which is why 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 gives no when-to-use guidance, no prerequisites, and no exclusions relative to the many sibling check_* tools. The usage is only implied by the tool name; nothing tells the agent when retention checking is the right call versus a temporal-rights or freshness check.

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

check_tierCheck Tier Permits ActionA
Read-onlyIdempotent

Check if an agent's earned tier permits an action at a given autonomy level and spend amount. Returns null if permitted, or escalation details if tier is insufficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesReputation scope
agentIdYesAgent ID
principalIdYesPrincipal ID
requestedDepthNoRequested delegation depth
requestedSpendNoRequested spend amount in dollars
requestedAutonomyNoRequested autonomy level (1-5)

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, and non-destructive behavior, and the description adds genuinely useful return semantics beyond them: 'Returns null if permitted, or escalation details if tier is insufficient.' This is valuable given there is no output schema, though it stops short of describing what the escalation details contain or any 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.

Conciseness5/5

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

Two sentences with zero waste. The core purpose is front-loaded and the return behavior follows immediately, both earning 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 check tool with no output schema, the description covers the essential outcome (null vs. escalation details). It is largely complete, though the shape of the 'escalation details' return remains 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 the schema fully documents all six parameters and the baseline is 3. The description references autonomy level and spend amount, mapping loosely to requestedAutonomy and requestedSpend, but adds no format or range 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 description states a specific verb (Check) and resource (agent's earned tier permitting an action), qualified by autonomy level and spend amount. This distinguishes it functionally from sibling checks like check_purpose_permitted or check_usage_permitted, though it doesn't name any sibling 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 implied by the purpose ('at a given autonomy level and spend amount') but there is no explicit when-to-use guidance, no prerequisites, and no routing to alternatives such as aps_check_escalation_required or the other check_* tools.

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

check_usage_permittedCheck Usage PermittedB
Read-onlyIdempotent

Check if a specific usage type is permitted under a governance block's terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
blockYesGovernance block JSON string
usageYes

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 fully covered without the description's help. The description adds only the semantic scope (usage vs. a block's terms) and discloses nothing further, such as the shape of the verdict 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.

Conciseness4/5

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

A single, front-loaded sentence with no filler. It is efficient, though its terseness borders on under-specification for a governance predicate rather than excess.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 rich annotations and no output schema, the description should at least pin down the return verdict and how this check differs from the other check_* predicates. 'Check if ... is permitted' implies a boolean but never states it, and the sibling routing gap leaves selection partly to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 50%: the 'block' parameter is described as a governance block JSON string, while the 'usage' enum values carry no descriptions. The description clarifies that usage is evaluated against a block's terms, but adds no format detail for the block JSON or semantics for the enum values, which are largely self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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: checking whether a given usage type is permitted under a governance block's terms. It is reasonably distinguishable from nearby predicates like check_purpose_permitted or check_combination_permitted by the word 'usage', but it never explicitly contrasts itself with 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?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. With siblings such as check_purpose_permitted, check_retention_expired, and check_combination_permitted, the agent is left to infer when this predicate applies instead of those.

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

classify_evidence_qualityClassify Evidence QualityB
Read-onlyIdempotent

Classify attestation evidence quality (none / issuer_vouched / infrastructure / principal_bound) and return the corresponding grade (0-3).

ParametersJSON Schema
NameRequiredDescriptionDefault
methodNoAttestation method (e.g. 'spiffe')
evidenceNoEvidence object (checked for known infrastructure keys)
has_issuer_signatureNo
has_principal_bindingNo

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 fully covered. The description adds genuinely useful context by naming the classification taxonomy and the numeric grade output, which compensates for the absent output schema. It stops short of explaining the decision logic (how method, evidence keys, or the boolean flags map to a grade).

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?

A single dense sentence with no filler; the action and its output vocabulary are front-loaded. Every clause 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?

For a pure classification function with no output schema, the description usefully discloses the return values (four categories, grade 0-3). However, with four inputs, only 50% schema coverage, and a nested evidence object, it omits how evidence is evaluated and what 'infrastructure keys' mean, leaving the caller unsure how inputs affect the grade.

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 only 50%: method and evidence carry descriptions, but has_issuer_signature and has_principal_binding do not. The description mentions no parameters at all and does not compensate for the gap, leaving the two boolean inputs unexplained beyond their self-evident 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 ('classify') and resource ('attestation evidence quality'), and usefully enumerates the four output categories and the grade range (0-3). This clearly separates it from siblings like get_evidence, review_evidence, or is_evidence_fresh, 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?

There is no guidance on when to call this versus related evidence tools (review_evidence, is_evidence_fresh, get_evidence), nor any stated prerequisites or inputs required to get a meaningful result. Usage must be inferred entirely from the name and output taxonomy.

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

commerce_preflightCommerce Preflight (Moved to Gateway)A
Read-onlyIdempotent

[moved to gateway in SDK 3.3.0] The 6-gate commerce preflight orchestration moved out of the SDK and MCP into the AEOESS gateway. This tool no longer runs the pipeline locally. It returns a machine-readable deprecation notice pointing to the gateway commerce endpoint. Compose the pure gate predicates from the SDK yourself, or call the gateway.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesPurchase amount
agent_idYesAgent making the purchase
currencyNoCurrency codeusd
delegation_idYesCommerce delegation ID
merchant_nameYesMerchant to purchase from

TDQS

A3.9/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 meaningful context beyond that: the tool performs no local pipeline work and returns a deprecation notice rather than a preflight result, which prevents an agent from misreading a successful call as a passing preflight.

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 short sentences, front-loaded with the bracketed '[moved to gateway in SDK 3.3.0]' marker so the deprecation is the first thing read. No padding; the final sentence carries actionable redirection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 deprecation stub, the description covers what the tool now does, what it returns in kind, and what to do instead. The only gap is that the gateway endpoint is referenced generically ('the gateway commerce endpoint') rather than by name, leaving the agent to locate 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 five parameters (amount, agent_id, delegation_id, merchant_name, currency) are documented in the schema itself. The description adds nothing about parameters, which is defensible for a stub that ignores them, but it also never clarifies that the inputs are inert — so it earns only the 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 states a specific current behavior: the tool no longer runs the 6-gate commerce preflight locally and instead returns a machine-readable deprecation notice pointing to the gateway endpoint. That is far more useful than a tautology, though it describes a stub rather than a capability, so it is clear but not a clean verb+resource action statement.

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 names the two alternatives — compose the pure gate predicates from the SDK, or call the gateway — which tells the agent where to route real work. It stops short of an explicit 'do not call this for actual preflight' prohibition, but the redirect is unambiguous.

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

compare_timestampsCompare Hybrid TimestampsC
Read-onlyIdempotent

Compare two hybrid timestamps to determine ordering.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, and non-openWorld, so the safety profile is covered. The description adds nothing beyond that: it does not explain how ordering is resolved (logical time vs. wall clock tie-breaking) or what the comparison returns, and with no output schema the return value is entirely undisclosed.

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?

A single front-loaded sentence with zero filler, which is the right shape. It is efficient, though pointedly thin for a tool with nested object parameters.

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 nested objects, 0% parameter coverage, and no output schema, the description omits the two things an agent most needs: the tie-breaking/comparison rules and the shape of the ordering result. Annotations cover safety, but the functional contract is incomplete.

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 description coverage is 0% and both parameters are nested objects with four undocumented fields each (logicalTime, wallClockEarliest, wallClockLatest, gatewayId). The description only implies that a and b are hybrid timestamps and adds no meaning about field roles or comparison semantics, so it fails to compensate for the empty 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 (compare), a specific resource (hybrid timestamps), and the goal (determine ordering), which is enough to distinguish it from the write-side sibling create_hybrid_timestamp. It stops short of explicitly naming or contrasting with any sibling, so it is clear but not 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 description gives no when-to-use guidance, no prerequisites, and no mention of alternatives such as create_hybrid_timestamp or is_evidence_fresh. An agent must infer the calling context entirely.

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

complete_actionComplete Action (Deprecated)B
Read-onlyIdempotent

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Complete a permitted action and get the full 3-signature proof chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesOutcome of the action
summaryYesBrief description of what was accomplished
intent_idYesIntent ID from execute_with_context result

TDQS

B3.3/5.0
Behavior1/5

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

Annotations declare readOnlyHint=true, yet the description's own verb is 'Complete' an action — a state-changing completion that also emits a proof chain. This directly conflicts with the read-only claim, which is the highest-stakes trait an agent relies on. No auth or side-effect detail is supplied to resolve the conflict.

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?

A single short sentence with the deprecation/routing notice front-loaded in brackets before the functional clause. There is no filler and the most actionable information (deprecated, use REST) appears first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 at least name the return artifact ('3-signature proof chain'), which covers the essentials for a deprecated tool with full schema coverage. It leaves the mutation semantics and the read-only annotation conflict unaddressed, which for a completion tool is a meaningful 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% (intent_id, status enum, summary are all documented in-schema), so the structured field already carries the semantics. The description adds nothing about the parameters, e.g. where intent_id originates beyond the schema note or how status interacts with the proof chain. 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 ('Complete a permitted action') plus the outcome ('full 3-signature proof chain'), so an agent can tell what it produces. However it does not distinguish itself from near siblings such as execute_with_context or gateway_process_tool_call beyond the deprecation pointer.

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 when NOT to use it ('deprecated in v3.0.0') and names an alternative path ('use the gateway.aeoess.com REST API'), which is real routing guidance. It does not describe the fallback case in which this MCP tool would still be the right choice, so it stops short of a full 5.

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

complete_taskComplete TaskA
Destructive

[OPERATOR] Close the task unit with final status and retrospective. A later call replaces the stored completion record.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesFinal status
task_idYesTask ID
retrospectiveNoWhat went well, what didn't

TDQS

A3.5/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds non-obvious overwrite semantics – 'A later call replaces the stored completion record' – which tells the agent prior completion data is lost on re-invocation. That 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.

Conciseness4/5

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

Two tight sentences, front-loaded with the action and followed by the replacement caveat. Only the bracketed '[OPERATOR]' tag is slightly opaque, but nothing 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?

For a 3-parameter mutation tool with full schema coverage and annotations covering the destructive/non-idempotent profile, the description supplies the one missing behavioral fact (record replacement). No output schema exists, so return-value explanation is not expected. Adequate 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 task_id, status and retrospective are already documented (including the status enum). The description's mention of 'final status and retrospective' merely restates the schema, adding no syntax or format detail, 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 ('Close the task unit') plus what the call carries ('final status and retrospective'). It reads clearly enough to separate from siblings like complete_action or get_task_detail, though it never explicitly names or contrasts 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 Guidelines2/5

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

No when-to-use, prerequisites, or alternatives are given. The '[OPERATOR]' prefix hints at a role gate but does not tell the agent when this tool is the right choice versus complete_action or submit_deliverable.

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

compute_action_refCompute Action ReferenceA
Read-onlyIdempotent

Compute content-addressed request identity (SHA-256 of agentId + actionType + scope + normalized timestamp). Two receipts with the same action_ref describe the same request.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYes
timestampNoRFC 3339 timestamp carrying an explicit offset or Z; defaults to now. A zone-less value is refused, because it names no instant and would produce a different action_ref on every machine.
action_typeYes
scope_requiredYes

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, and closed-world behavior, so the bar is lower. The description earns credit by disclosing the deterministic hash composition and the equality semantics of the output, which annotations cannot express. It omits details like whether scope_required ordering affects the hash, but overall it adds 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.

Conciseness5/5

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

Two sentences, no filler. The identity of the operation and its exact formula come first, followed by the interpretive meaning of the output. Every clause is load-bearing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 characterize the return value; saying it is a SHA-256 action_ref plus the equality property largely does that. Minor gap: nothing says whether array ordering in scope_required is canonicalized, which matters for a content-addressed hash.

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 only 25% (only timestamp is documented), so the description must compensate. The formula 'agentId + actionType + scope + normalized timestamp' effectively assigns a role to all four parameters, and the schema's timestamp note explains the offset/normalization requirement, which is the trickiest 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 description names a specific operation (compute a content-addressed request identity) and specifies the exact hash construction: SHA-256 over agentId, actionType, scope, and normalized timestamp. That is far more precise than a restated title. It does not, however, distinguish this from the sibling aps_compute_attribution_action_ref, 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 second sentence explains the semantics of the result (two receipts with the same action_ref describe the same request) but gives no instruction on when to call this, when not to, or how it relates to the similarly named action_ref sibling. An agent must infer the use case entirely.

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

compute_governance_taintCompute Governance TaintB
Read-onlyIdempotent

Compute governance taint level for an artifact based on its derivation chain and revoked sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifactIdYes
revokedSourcesNoSource IDs that have been revoked

TDQS

B3.2/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 structurally. The description adds that the result is a function of the derivation chain plus revoked sources, but says nothing about whether the value is persisted or computed on demand, or any auth/scope requirements. Adequate but not rich.

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 sentence, front-loaded with the verb and outcome, no filler. It is efficient, though it is short enough that the missing usage and return-value context is felt.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 should convey what a 'taint level' looks like (numeric scale, categorical tier, threshold semantics). It does not, leaving the agent unable to interpret the result. Input semantics are otherwise adequately implied by the one sentence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 50% – revokedSources is documented in the schema itself, while artifactId is not. The description implies both inputs but adds no format, ID convention, or semantics for artifactId beyond what the name conveys. Baseline 3 is appropriate given partial 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?

States a specific verb ('compute') and a specific resource ('governance taint level') and names the two inputs it derives from (derivation chain, revoked sources). It does not differentiate itself from near neighbours such as evaluate_revocation_impact or resolve_rights_propagation, 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 when-to-use guidance, no prerequisites, and no named alternative among a very large sibling set. The agent must infer from the phrase 'derivation chain and revoked sources' when this tool is the right call versus evaluate_revocation_impact or check_aggregate_constraints.

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

create_access_receiptCreate Access ReceiptA
Read-onlyIdempotent

Create a signed receipt recording the supplied content reference and terms, after verifying the governance block against the content and the publisher's key. If the block does not verify, the tool refuses and signs nothing. The receipt captures the block's terms and revocation policy at access time. The tool signs the receipt with agentPrivateKey but returns only a text summary (receipt ID, agent DID, publisher DID, intended usage, governance block status, training term, cached-copy revocation policy). The full signed receipt, including its signature, is not returned. A verified block is not permission to perform intendedUsage, and the receipt is not proof that access happened.

ParametersJSON Schema
NameRequiredDescriptionDefault
blockYesGovernance block JSON string
contentYesContent the governance block covers, used to verify its content hash
sourceUrlYesURL where content was accessed
intendedUsageYesHow you intend to use this content
agentPublicKeyYesYour agent's Ed25519 public key (hex)
agentPrivateKeyYesYour agent's Ed25519 private key (hex)
publisherPublicKeyYesPublisher's Ed25519 public key (hex), used to verify the block signature

TDQS

A4.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, non-destructive, idempotent), and the description adds substantial context beyond them: refusal-with-no-signature on failed verification, the signing key used, exactly which fields the returned text summary contains, and the fact that the full signed receipt/signature is withheld. It also discloses semantic limits (no permission implied, not proof of access) that no annotation conveys.

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 core action and its precondition are front-loaded, followed by return shape and then caveats, in four purposeful sentences with no filler. Length is justified by a 7-parameter signing tool with no output 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, the description compensates by enumerating the returned summary fields and clarifying that the signature is not returned, plus documenting the failure path. Nothing an agent needs to call it correctly and interpret the response appears to be 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 goes further by explaining the relational roles: block is verified against content and publisherPublicKey, and agentPrivateKey is what signs the receipt. It adds meaning about how parameters interact rather than just restating their types.

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 (create a signed access receipt) plus the precondition (governance block verification against content and publisher key). This clearly distinguishes it from sibling tools like verify_governance_block, generate_governance_block, or create_access_snapshot, which only verify or capture without issuing a signed 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?

Usage is implied rather than stated: the description tells you verification must succeed first and that a verified block 'is not permission to perform intendedUsage,' which hints at the post-verification position in a workflow. However, it never explicitly says when to choose this tool over verify_governance_block, check_usage_permitted, or create_access_snapshot, so the routing decision 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.

create_access_snapshotCreate Access SnapshotC
Read-onlyIdempotent

Create a signed access snapshot that pins terms, jurisdiction, and constraints at the moment of access, so a later change to the source terms does not alter what the snapshot records.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyYes
sourceIdYes
termsVersionYes
accessReceiptIdYes
allowedPurposesYes
compensationRateYes
sourceJurisdictionNo

TDQS

C2.5/5.0
Behavior1/5

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

The description states the tool "Create[s] a signed access snapshot," a write of a new stored artifact, while the annotations declare readOnlyHint=true. Creating a persisted signed record modifies the environment, so the description's verb directly conflicts with the annotation. 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?

A single front-loaded sentence whose purpose clause ("so a later change to the source terms does not alter what the snapshot records") genuinely earns its place by explaining immutability. No filler, though it is one long sentence rather than a scannable structure.

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 7-parameter creation tool with no output schema, the description omits what the call returns (snapshot ID, signature), what permissions or token are needed, and where the required identifiers come from. The immutability guarantee is covered, but the operational detail needed to invoke it correctly is not.

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 description coverage is 0% across 7 parameters (6 required), so the description must carry the load. "Terms, jurisdiction, and constraints" loosely gestures at termsVersion, sourceJurisdiction, and allowedPurposes, but accessReceiptId, sourceId, compensationRate, and currency are never explained, so an agent cannot infer how to source the required identifiers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 ("Create a signed access snapshot") and goes further by naming what is pinned (terms, jurisdiction, constraints) and when ("at the moment of access"). It is clearly a capture/attestation operation, but it never differentiates itself from the very close sibling create_access_receipt, which an agent must 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 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 prerequisites (an accessReceiptId is required, implying a prior receipt must exist), and no mention of the obvious alternative create_access_receipt. Only the implicit temporal cue "at the moment of access" hints at context.

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

create_agent_contextCreate Agent Context (Deprecated)B
Read-onlyIdempotent

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Create an enforcement context that automatically runs every action through the 3-signature policy chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAgent name
missionYesAgent mission statement
enforcementNoEnforcement levelauto
spend_limitNoMaximum spend allowed
delegated_scopesNoScopes to delegate

TDQS

B3/5.0
Behavior1/5

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

The description states this tool creates an enforcement context, a write operation, while annotations declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. That is the same create-vs-read-only conflict flagged in the calibration example, so the behavioral profile an agent would infer from the text directly contradicts the structured hints. The only genuine added context, the deprecation notice, does not resolve the inconsistency.

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 compact clauses with the most decision-relevant information (the deprecation warning) front-loaded in brackets before the purpose statement. Every clause earns its place; only minor polish would be needed for a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 five-parameter creation tool with no output schema, the description covers the single most important fact for an agent — that it is deprecated — but says nothing about return values, required permissions, or failure modes. Given the deprecation makes deep behavioral detail largely moot, this is minimally adequate rather than rich.

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

Parameters3/5

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

Schema description coverage is 100% — name, mission, enforcement (with enum), spend_limit, and delegated_scopes are all documented in the schema. The description adds no parameter-level meaning (no defaults, no interaction between enforcement levels and spend limits), so the baseline 3 applies when the schema carries the full 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 description gives a specific verb and resource ("Create an enforcement context") plus a mechanism detail ("automatically runs every action through the 3-signature policy chain"). It is clear on its own, but it never distinguishes itself from plausible siblings such as create_policy_context, create_gateway, or create_charter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 provide a routing signal — "deprecated in v3.0.0, use the gateway.aeoess.com REST API" — which tells the agent to prefer an alternative. However, that alternative is an external REST endpoint rather than a sibling tool, and it never states whether/when this tool remains appropriate (legacy v2 callers) or how it relates to the nearby create_* context tools.

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

create_approval_requestCreate Approval RequestC

Create a multi-party approval request for charter amendments, office transfers, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
subjectYesWhat is being approved (e.g. amendment ID)
policy_idYes
requested_byYes
subject_typeYes
timeout_secondsNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare this is a non-idempotent, non-destructive write operation, so the safety profile is covered. The description adds the meaningful behavioral fact that this is 'multi-party' (requires several approvers), but says nothing about workflow state, what gets created, or how timeout_seconds affects the request.

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?

A single front-loaded sentence with no filler. It is efficient, though the trailing 'etc.' adds noise rather than information and the brevity edges into under-specification for a 5-parameter mutation.

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, a mutation tool, low parameter coverage and no explanation of prerequisites or result (approval request identity/status), the definition leaves the agent without enough to invoke this correctly alongside peers like request_human_approval.

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 description coverage is only 20% (just 'subject'), so policy_id, requested_by, subject_type and timeout_seconds are undocumented. The description's example use cases loosely map to the subject_type enum but explain none of the four parameters an agent must 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?

States a specific verb (create) and resource (multi-party approval request) and gives concrete example use cases (charter amendments, office transfers). However it never distinguishes itself from siblings like request_human_approval or add_approval_signature, and the trailing 'etc.' dilutes 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 Guidelines2/5

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

The description implies usage only through subject examples; there is no explicit when-to-use guidance, no preconditions (e.g. must a policy exist first, who can request), and no comparison to the closely related request_human_approval sibling.

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

create_artifact_provenanceCreate Artifact ProvenanceC
Read-onlyIdempotent

Tag an agent-generated artifact with provenance metadata (content hash, risk class, authoring agent).

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe artifact content (used for hash, not stored)
risk_classYes
trust_epochNo
valid_untilYes
intended_useYes
artifact_typeYese.g. email_draft, code_script, database_query
delegation_refYes
requires_human_executionNo

TDQS

C2.7/5.0
Behavior1/5

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

The annotations declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, yet the description frames the operation as creating/tagging an artifact with provenance metadata — a state-changing write. This directly conflicts with the read-only annotation, mirroring the calibration's create_record contradiction. No compensating behavioral context (where the tag is persisted, whether a receipt is returned) is given.

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?

A single front-loaded sentence with no filler; the core purpose is stated immediately. It is terse to the point of under-specification for an 8-parameter tool, but the structure itself is efficient.

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 8 parameters, 6 required, 25% schema coverage, and no output schema, this tool demands more explanation than one sentence. Critical concepts — delegation_ref scoping, trust_epoch semantics, valid_until expiry, and the requires_human_execution gate — are not addressed, and the write/read ambiguity 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 only 25% (8 params, 6 required). The description adds meaning for a few fields — content hash maps to content, 'risk class' maps to risk_class, and 'authoring agent' loosely points at delegation_ref — but leaves intended_use, valid_until, trust_epoch, and requires_human_execution entirely unexplained, so it only partially compensates for the coverage 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?

States a specific verb (tag) and resource (agent-generated artifact) and enumerates the metadata being attached (content hash, risk class, authoring agent), so the agent knows what the call accomplishes. It does not differentiate itself from provenance-adjacent siblings such as create_derivation_receipt, create_decision_lineage_receipt, or aps_create_attribution_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 description gives no when-to-use, when-not-to-use, prerequisites, or alternative tool. An agent cannot infer from this text why it would call create_artifact_provenance rather than one of the many other receipt/attestation-creating siblings.

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

create_chained_governance_blockCreate Chained Governance BlockC
Read-onlyIdempotent

Create a governance block for derivative content that references the original publisher's block. Preserves the chain of provenance.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesDerivative content
trainingNo
inferenceNo
publicKeyYesDerivative agent's Ed25519 public key (hex)
privateKeyYesDerivative agent's Ed25519 private key (hex)
parentBlockYesOriginal governance block JSON string
derivationTypeYesType: summary, embedding, rag_chunk, translation, etc.

TDQS

C2.9/5.0
Behavior1/5

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

The description opens with 'Create a governance block,' a write/mutation framing, while the annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. This is a direct inconsistency about whether the call causes a side effect, so the description undermines rather than supplements the structured metadata. No signing, persistence, or key-handling behavior is described either.

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 short sentences with no filler and the core action front-loaded. Nothing is wasted, though the brevity leaves obvious behavioral questions unanswered that a slightly longer definition could have covered.

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 7 parameters, 5 required, no output schema, and a cryptographic key flow, this definition is too thin. It never says what is returned (a block? an identifier? a receipt), whether anything is persisted, or how parentBlock and the keys are used, so an agent cannot confidently call it 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 71%: content, publicKey, privateKey, parentBlock, and derivationType are documented in the schema, while training and inference are self-describing enums. The description adds no parameter-level meaning (e.g., that privateKey signs the new block, or that parentBlock is the parent JSON), so it neither compensates nor detracts much.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (create a governance block) and narrows the scope to derivative content that references an original publisher's block, which distinguishes it in spirit from generate_governance_block. It does not name a sibling explicitly, so an agent must still infer the boundary from the phrase 'references the original publisher's 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?

The phrase 'for derivative content that references the original publisher's block' implies the precondition for choosing this tool over a plain block generator. However, no alternatives (generate_governance_block, create_derivation_receipt, create_artifact_provenance) are named, and no when-not guidance or prerequisites for the required keys are given.

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

create_charterCreate CharterB

Create a new institutional charter, the constitutional root of an organization. Defines offices, amendment rules, and dissolution policy.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesInstitution name
officesYesOffices to create
founder_roleNoboard
founder_public_keyYesFounder's Ed25519 public key
founder_private_keyYesFounder's Ed25519 private key
amendment_board_keysYesEd25519 public keys eligible for amendment voting
amendment_required_sigsYesSignatures required for amendment
dissolution_grace_secondsNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is partly covered. The description adds useful context that the artifact is a constitutional root defining offices, amendment rules and dissolution policy, but says nothing about key handling (founder_private_key), authorization requirements, or whether charter creation is effectively irreversible.

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 tight sentences with the core purpose front-loaded and the second sentence scoping the artifact's contents. No filler, though it could have converted the same word budget into routing or prerequisite 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?

This is a complex genesis write (8 params, 6 required, nested office objects with spend/delegation/succession fields and Ed25519 keys) with no output schema, yet the description never mentions keys, required setup, or the identifier a caller presumably needs to feed sign_charter/verify_charter/propose_amendment. Too much is left to inference 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 coverage is a fairly high 75%, so the schema already documents most inputs. The description loosely maps to the offices, amendment, and dissolution groups but omits the two cryptographic key parameters and founder_role entirely, adding only marginal 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?

Uses a specific verb+resource ('Create a new institutional charter') and adds a meaningful scope qualifier ('the constitutional root of an organization'). It does not, however, distinguish itself from adjacent creation siblings such as create_policy_context, create_principal, or create_decision_lineage_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 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 (e.g. that a charter must exist before sign_charter/verify_charter/attest_to_floor are meaningful), and no mention of alternatives. The agent gets no routing help beyond the one-line purpose.

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

create_data_enforcement_gateCreate Data Enforcement Gate (Deprecated)B
Read-onlyIdempotent

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Create a data enforcement gate that checks terms before allowing data access.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoEnforcement modeenforce

TDQS

B3.2/5.0
Behavior1/5

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

The description and name describe creating a resource, but the annotations declare readOnlyHint=true, which is a direct conflict over whether this call mutates state. This is an annotation contradiction that leaves the agent unable to trust the safety profile. Beyond the contradiction, no auth, persistence, or scoping behavior is 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?

Two compact bracketed-plus-sentence elements, with the critical deprecation warning front-loaded before the functional description. No redundancy or filler, though the body is arguably thin for 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?

For a deprecated one-parameter tool with full schema coverage and no output schema, the description is minimally adequate and correctly routes the agent to the REST replacement. It is undermined by the unresolved readOnlyHint conflict and the absence of any note on what happens to already-created gates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 'mode' enum (enforce/audit/off) is fully documented in the schema with a default. The description adds no semantics about what the modes mean behaviorally, 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 ('Create a data enforcement gate') plus its function ('checks terms before allowing data access'), which lets an agent understand the operation. The deprecation banner and REST-API pointer further orient it. It doesn't differentiate strongly from the many governance/gate siblings, but the purpose itself 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 Guidelines4/5

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

The bracketed note '[deprecated in v3.0.0, use the gateway.aeoess.com REST API]' is explicit exclusion guidance pointing to the replacement, which is exactly the when-not-to-use signal an agent needs. It stops short of describing any condition under which the deprecated tool should still be called, so it doesn't reach a full 5.

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

create_decision_lineage_receiptCreate Decision Lineage ReceiptC
Read-onlyIdempotent

Create a Decision Lineage Receipt that traces which data sources influenced a decision. Right-to-explanation primitive.

ParametersJSON Schema
NameRequiredDescriptionDefault
explanationNo
decisionTypeYesE.g. loan_approval, content_moderation, risk_assessment
transformChainNo
governingPurposeNo
decisionArtifactIdYes
contributingSourcesYes
lineageCompletenessYes

TDQS

C2.5/5.0
Behavior1/5

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

The description opens with 'Create a Decision Lineage Receipt', a write operation, while the annotations declare readOnlyHint=true and destructiveHint=false. This is the same class of inconsistency flagged in the calibration example for create_record. The description also fails to disclose what the receipt records, whether it is persisted, or what it returns.

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 short sentences, front-loaded with the verb and resource, with no filler or repetition. The trailing 'Right-to-explanation primitive' fragment is terse and does add framing, though it is jargon that may not help an agent act.

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?

Against a 7-parameter, 4-required tool with a deeply nested contributingSources structure (7 required subfields each), 14% schema coverage, and no output schema, the description is far too thin. It says nothing about how completeness is judged, what makes lineage 'broken_external', or what the created receipt identifier looks like.

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 description coverage is only 14% across 7 parameters, so the schema alone leaves most inputs unexplained (decisionArtifactId, governingPurpose, transformChain, explanation are all bare). The description's mention of 'which data sources influenced a decision' loosely points at contributingSources but adds no meaning, format, or constraint for the nested source objects or the lineageCompleteness 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 description gives a specific verb+resource ('Create a Decision Lineage Receipt') and states what it captures ('traces which data sources influenced a decision'). That is enough to distinguish it from generic write tools. However, it offers no differentiation from close siblings such as create_derivation_receipt, create_artifact_provenance, or resolve_lineage, 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 Guidelines2/5

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

There is no 'use this when...' guidance, no prerequisites, and no mention of alternatives among the many sibling receipt/lineage tools. The phrase 'Right-to-explanation primitive' gestures at a regulatory context but does not tell the agent when to reach for this tool versus create_derivation_receipt or resolve_lineage.

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

create_delegationCreate DelegationC

[OPERATOR] Create a scoped delegation from one agent to another.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesScopes to grant (e.g. ['web_search', 'code_execution'])
max_depthNoHow many levels of sub-delegation (a non-negative integer)
spend_limitNoMaximum spend allowed
delegated_toYesPublic key of the agent receiving delegation
expires_in_hoursNoDelegation validity in hours

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutation/non-destructive profile is covered. The description adds almost nothing beyond that — it does not explain how max_depth interacts with sub-delegation, whether the delegation is revocable, or any auth/permission requirements for this operator action.

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?

A single efficient sentence with the action front-loaded and an audience marker. It wastes no words, though the bracketed tag is the only structural flourish and it conveys limited 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?

As a mutation tool with no output schema, the description should carry more weight than one sentence. It leaves unaddressed what a delegation grants, its relationship to chain tools (sub_delegate, verify_delegation, revoke_delegation), and how it differs from create_v2_delegation — meaningful gaps given the dense delegation-tool 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%: scope, max_depth, spend_limit, delegated_to, and expires_in_hours are all documented in the schema itself. The description adds no parameter meaning 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.

Purpose4/5

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

States a specific verb (create) and resource (scoped delegation) plus the direction (from one agent to another), so the core action is clear. However, it does not differentiate itself from the closely related sibling 'create_v2_delegation', leaving ambiguity about which delegation-creation 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?

The description offers no when-to-use guidance, no prerequisites, and no named alternatives. The '[OPERATOR]' tag hints at audience restriction, but with siblings like create_v2_delegation, sub_delegate, and revoke_delegation present, the agent is left to infer which context selects this tool.

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

create_derivation_receiptCreate Derivation ReceiptB
Destructive

Create a signed derivation receipt tracking how data was transformed. Multi-hop lineage with break markers. Replaces any receipt already stored under the same derivativeId.

ParametersJSON Schema
NameRequiredDescriptionDefault
breakReasonNo
derivativeIdYesUnique ID for the derivative artifact
derivativeTypeYesType: rag_chunk, embedding, summary, model_weights, synthetic_derivative, etc.
transformClassYesTransform type: copy, subset, summary, embedding, aggregation, synthetic, model_training
parentArtifactsYesParent artifacts this was derived from
lineageConfidenceYes
externalBoundaryBreakNoTrue if data left the system and returned
isSyntheticDerivativeNo
upstreamObligationsRetainedNo

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=false, so the agent knows this is a destructive write. The description goes beyond that by naming the exact destructive consequence: any existing receipt under the same derivativeId is replaced, which is precisely the kind of overwrite semantics an agent needs before calling. It omits signing/permission prerequisites implied by 'signed'.

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 short sentences, front-loaded with the core action before the lineage nuance and the overwrite caveat. 'Multi-hop lineage with break markers' is terse to the point of being cryptic, but nothing is padded or repeated.

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 destructive, non-idempotent write with 9 parameters, 56% schema coverage, and no output schema, the description is thin. It never explains what 'signed' requires (keys/auth), what is returned (receipt id?), or what the confidence levels and obligation flags mean, so an agent still has significant unanswered questions before invoking.

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 56% across 9 parameters, so several fields (breakReason, lineageConfidence, externalBoundaryBreak, isSyntheticDerivative, upstreamObligationsRetained) are undocumented or only named. The description adds essentially nothing concrete about parameters beyond the vague phrase 'break markers', leaving the meaning of the confidence enum and obligation flags to 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?

States a specific verb (create) and resource (signed derivation receipt) plus the subject matter (how data was transformed), so the agent knows this is a lineage/provenance write operation. It does not name or contrast with near-neighbors like create_artifact_provenance, create_decision_lineage_receipt, or resolve_lineage, so sibling differentiation is left 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 explicit statement of when to use this tool versus the many other receipt/lineage creation siblings in the list. The only usage-relevant information is the implicit upsert behavior ('Replaces any receipt already stored under the same derivativeId'), which tells the agent it is safe to re-call for the same id but not when this receipt is the right artifact to file.

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

create_disclosureCreate Principal DisclosureC
Read-onlyIdempotent

Create a selective disclosure of principal identity. Controls how much info is revealed.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYesDisclosure level: public (everything), verified-only (id+key+domain), minimal (hash+DID only)

TDQS

C2.7/5.0
Behavior1/5

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

The description and tool name both assert a 'create' operation, but the annotations declare readOnlyHint=true and destructiveHint=false. That is the same contradiction pattern as a 'creates a record' description paired with readOnlyHint=true. If this is actually a pure derivation that returns a filtered view, the description must say so instead of implying a new resource is persisted.

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 short sentences, front-loaded with the action, with no filler. The second sentence is largely a restatement of 'selective disclosure', so it earns its place only marginally, but the overall length is appropriate.

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 should explain what a disclosure actually is and what the caller receives (a document, a token, a presentation, a stored record). Combined with the unresolved readOnly contradiction and no stated lifecycle, an agent cannot confidently predict the side effects or return of this 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?

There is a single parameter with 100% schema description coverage, and the enum values (public / verified-only / minimal) are already fully explained in the schema, so the description does not need to restate them. Baseline 3 is correct: the description adds no semantic value about the level 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 gives a specific verb+resource ('Create a selective disclosure of principal identity') and a one-line scope note about controlling revealed information, so the operation is unambiguous on its own. It does not, however, differentiate itself from nearby identity tools such as identify, create_principal, or add_principal_report, leaving the agent to guess which identity operation 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 guidance on when to create a disclosure versus using identify or create_principal, nor any prerequisites (does a principal already need to exist? does this need a key?). 'Controls how much info is revealed' hints at the purpose but stops short of any when-to-use or when-not-to-use rule.

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

create_gatewayCreate Gateway (Deprecated)B
Read-onlyIdempotent

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Create a ProxyGateway enforcement boundary.

ParametersJSON Schema
NameRequiredDescriptionDefault
gatewayIdNoCustom gateway ID
approvalTTLSecondsNoTwo-phase approval timeout
maxPendingPerAgentNoMax pending approvals per agent

TDQS

B3.1/5.0
Behavior1/5

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

Annotations declare readOnlyHint=true and idempotentHint=true, but the name and description both claim a create/mutation operation. This is a direct contradiction of the structured safety metadata, leaving the agent unable to tell whether calling this mutates state or is a safe read.

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?

A single compact sentence with the deprecation warning placed first, which is the right front-loading for a tool an agent should probably avoid. Nothing is wasted, though the payload sentence is terse to the point of under-specification.

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 deprecated creation tool with no output schema and a contradictory readOnlyHint, the description says nothing about what a ProxyGateway boundary is, whether calls are stateful, or how the approval-related parameters behave. The deprecation pointer is the only substantive context provided.

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

Parameters3/5

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

Schema description coverage is 100% with no required parameters, so gatewayId, approvalTTLSeconds, and maxPendingPerAgent are already documented in the schema. The description adds no syntax, defaults, or interaction notes beyond that, which matches the baseline for fully covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 ("Create a ProxyGateway enforcement boundary"), which is far more informative than the title alone, and the deprecation tag is front-loaded. It does not, however, distinguish this tool from its gateway siblings (gateway_process_tool_call, gateway_approve, gateway_stats) or explain what an "enforcement boundary" is.

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 an explicit when-not-to-use instruction: deprecated in v3.0.0, callers should use the gateway.aeoess.com REST API instead. The alternative is external rather than an MCP sibling, and it never says whether the tool still works or for which legacy cases it remains appropriate, 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.

create_hybrid_timestampCreate Hybrid TimestampB
Read-onlyIdempotent

Create a hybrid timestamp using the local clock and a supplied uncertainty bound.

ParametersJSON Schema
NameRequiredDescriptionDefault
drift_msNoNTP drift bound in milliseconds
gateway_idYesGateway issuing the timestamp

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds the useful detail that the value derives from the local clock plus a caller-supplied bound, but it does not say whether the result is reproducible across calls (a real question given a local clock and idempotentHint) or what form the timestamp takes.

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?

A single front-loaded sentence with zero filler, stating action, inputs, and mechanism in one pass. Nothing in it could be trimmed without losing 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?

There is no output schema, so the description carries the burden of describing the return value, and it never says whether the result is a scalar timestamp, an object, or how the uncertainty bound is reflected. For a two-parameter, low-complexity tool with full annotation coverage this is adequate but leaves a meaningful gap on return 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%, with drift_ms documented as an NTP drift bound in milliseconds and gateway_id as the issuing gateway, so the baseline is 3. The description's phrase 'supplied uncertainty bound' loosely maps to drift_ms and adds no syntax, units, or range information 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 names a specific verb and resource ('Create a hybrid timestamp') and clarifies the mechanism (local clock plus a supplied uncertainty bound), which is more than a tautology. It does not, however, distinguish itself from temporal siblings such as compare_timestamps or is_evidence_fresh, so an agent gets no routing 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 statement of when to use this tool versus the temporal siblings (compare_timestamps, validate_temporal_rights, is_evidence_fresh) or any prerequisite context. Usage must be inferred 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.

create_intentCreate Action IntentB

Declare an intent to perform an action. First step of the 3-signature chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesWhat the action operates on
contextNoWhy the agent wants to do this
action_typeYesWhat type of action (e.g. 'web_search', 'commerce:checkout')
spend_amountNoExpected spend amount
delegation_idYesDelegation ID authorizing this action
scope_requiredYesWhich delegation scope is needed
spend_currencyNoSpend currency (e.g. 'usd')

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already establish the write profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds genuine workflow context by disclosing that this is the first of a chain of three signatures, which annotations cannot express. It still omits what state is created, whether the intent expires, and whether abandoning the chain has consequences.

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 short, front-loaded sentences with no filler or repetition. The size is appropriate for the message, though the brevity is partly under-specification rather than pure economy.

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 non-idempotent write tool in a multi-step signature chain with no output schema, the description should explain what is produced (an intent identifier?) and how it feeds the remaining two steps. Neither the chain's other steps nor the return value are described, leaving the agent unable to complete the workflow 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 all 7 parameters (including the required action_type, target, scope_required, and delegation_id) are already documented in the schema. The description adds no parameter-level meaning, 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.

Purpose4/5

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

States a specific verb and resource ('Declare an intent to perform an action') and adds positional context ('First step of the 3-signature chain'). However, it never names the other steps or the sibling tools that follow (evaluate_intent, complete_action), so an agent must infer the sequence from the sibling list rather than 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?

'First step of the 3-signature chain' implies this must be called before the later steps, which is real sequencing guidance. But there are no explicit when/when-not statements, no mention of the prerequisite delegation (implied only by the required delegation_id parameter), and no naming of alternatives.

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

create_outcome_recordCreate Outcome RecordC

Register an action outcome (agent perspective). Part of three-way reporting.

ParametersJSON Schema
NameRequiredDescriptionDefault
action_idYes
trust_epochNo
valid_untilYes
outcome_classYes
declared_intentYes
divergence_scoreYes
observed_outcomeYes
semantic_uncertaintyYes

TDQS

C2.4/5.0
Behavior2/5

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

The annotations already disclose that this is a non-read-only, non-idempotent, non-destructive, closed-world write. The description adds only '(agent perspective)', which does clarify which of several outcome-recording perspectives this covers, but says nothing about required ordering, idempotency expectations, or what happens on repeat calls—context the non-idempotent hint makes valuable.

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 short, front-loaded sentences with no filler. It is efficient, though the brevity borders on under-specification rather than tight precision.

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

Completeness1/5

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

For an 8-parameter, 7-required write tool with 0% schema coverage and no output schema, the description is far too thin. It neither explains the reporting workflow it belongs to nor clarifies any of the required inputs, leaving the agent unable to invoke this correctly from the description alone.

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

Parameters1/5

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

Schema description coverage is 0% across 8 parameters (7 required), and the description supplies no parameter meaning at all. Critical fields like divergence_score (0-1), semantic_uncertainty, outcome_class, and valid_until are left entirely undocumented, so the description fails to compensate for the coverage 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 gives a concrete verb+resource ('Register an action outcome') and adds a differentiating qualifier ('agent perspective'). However, 'Part of three-way reporting' gestures at a scheme without naming the sibling tools that supply the other reporting perspectives, so an agent cannot cleanly tell it apart from create_intent, evaluate_intent, or complete_action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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, no prerequisites, and no alternatives named. 'Part of three-way reporting' hints that this fits into a larger workflow but leaves the agent to infer the trigger conditions and the relationship to sibling recording tools.

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

create_policy_contextCreate Policy ContextC
Read-onlyIdempotent

Create a v2 PolicyContext with mandatory sunset. Every v2 object requires one.

ParametersJSON Schema
NameRequiredDescriptionDefault
trust_epochNo
valid_untilYesISO 8601 expiration (mandatory, max 180 days)
policy_versionNo2.0.0
values_floor_versionNo1.0.0

TDQS

C2.7/5.0
Behavior1/5

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

The description says 'Create a v2 PolicyContext', a write/mutation verb, while the annotations declare readOnlyHint=true and destructiveHint=false. An agent reading the text would expect a persistent write; the annotations say the environment is untouched. The description never resolves whether the object is persisted or merely computed, and the contradiction is left for the agent to trip over.

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 short sentences, front-loaded with the action and the key constraint, with no filler. It is efficient rather than padded, though the same space could have been spent resolving the read/write ambiguity instead of repeating the sunset requirement.

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 constructor with no output schema and low schema coverage, the description should carry more weight. It discloses the mandatory sunset and the v2 dependency but leaves the readOnly-vs-create conflict, the semantics of the remaining three parameters, and the return shape entirely unexplained.

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 description coverage is only 25% (valid_until is the sole documented property, and the mandatory max-180-day rule is already in the schema). The description echoes the sunset requirement but says nothing about trust_epoch, policy_version, or values_floor_version, so it does not compensate for the coverage gap on three of four 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 and resource ('Create a v2 PolicyContext') and adds the material constraint that every v2 object requires one, so the purpose is unambiguous. It does not, however, distinguish this context type from adjacent constructors in the sibling list (create_agent_context, create_intent, create_charter), leaving the agent to infer the difference from the resource 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?

'Every v2 object requires one' implies the precondition for using this tool (a v2 object cannot be built without it), which is genuine usage context. There is no explicit when-not guidance (e.g. whether one context can be reused across multiple objects, or whether it must be regenerated per object) and no named alternative for earlier policy versions.

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

create_principalCreate Principal IdentityA
Destructive

Create a principal identity (human or org behind agents) with its own Ed25519 keypair, held in this process as the session principal with a new fleet. Returns the full public key, and the full private key once on a local (stdio) server. On a remote server (MCP_TRANSPORT=sse or MCP_REMOTE=1) the private key is redacted, as in generate_keys. If a principal already exists in this process the call is refused unless replace=true, because replacing discards the current principal's private key and fleet from this process.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoVerifiable domain (e.g. 'aeoess.com')
replaceNoReplace an existing principal. Discards the current principal's private key and fleet from this process, so save the key first.
display_nameYesHuman-readable name (e.g. 'Tima', 'Acme Corp')
jurisdictionNoLegal jurisdiction (e.g. 'US', 'EU')
contact_channelNoContact method (e.g. 'telegram:@aeoess')
disclosure_levelNoHow much identity to revealpublic

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it explains that the private key is returned in full only on stdio and redacted on remote transports, that an existing principal blocks the call, and that replace=true destroys the current private key and fleet. This is exactly the kind of destructive-consequence and environment-dependent disclosure the destructiveHint alone 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?

Front-loads the core action and key derivation in the opening sentence, then layers the return/redaction and refusal semantics. Dense and slightly run-on, but nearly every clause carries operational information, so little is wasted.

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 carries the burden of explaining returns, and it does: full public key, full private key on stdio, redacted on remote. Combined with the refusal condition and destruction warning, an agent has everything needed to call this mutation 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: it explains why replace is dangerous ('discards the current principal's private key and fleet') and ties the transport env vars to output behavior. The other four optional identity fields (domain, jurisdiction, etc.) get no description-level elaboration, but the schema documents them.

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

Purpose5/5

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

States a specific verb and resource ('Create a principal identity... with its own Ed25519 keypair') and clarifies what a principal is ('human or org behind agents'), which separates it from adjacent tools like identify or create_agent_context. An agent can tell what the tool 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 Guidelines4/5

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

Gives concrete operating conditions: it is refused if a principal already exists unless replace=true, and it notes remote-vs-local behavior. It does not explicitly name an alternative tool or say when to prefer this over siblings such as generate_keys or rotate_key, so it falls short of full when/when-not routing.

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

create_reserve_attestationCreate Reserve AttestationC
Read-onlyIdempotent

Sign a reserve attestation using the supplied amount and assurance class. The tool does not check that the funds exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYes
currencyNoUSD
office_idNo
ttl_secondsNo
delegation_idYes
charter_anchorNo
assurance_classYes
attestation_basisYes
attester_public_keyYes
attester_private_keyYes
false_attestation_penaltyNoreputation_slash

TDQS

C2.5/5.0
Behavior1/5

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

The description says the tool "signs" an attestation and the tool is named create_reserve_attestation, requiring a private key and a false_attestation_penalty, all of which describe producing a persistent, disputable signed artifact. The annotations declare readOnlyHint=true, which contradicts the create/sign semantics — an agent relying on the annotation would assume no state is committed.

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, front-loaded with the core operation and with zero filler; the caveat is placed second where it reads as a warning. The brevity doubles as under-specification, which modestly caps the score.

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 an 11-parameter tool with 6 required fields, cryptographic key inputs, three enums, no output schema, and contradictory annotations, the description is far too thin. An agent cannot determine key handling, whether the artifact is persisted, what the TTL or penalty fields do, or what is returned.

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 description coverage is 0% across 11 parameters, so the description carries the full explanatory burden. It mentions only "amount" and "assurance_class", adding no format, constraint, or meaning beyond the schema, and says nothing about delegation_id, attester keys, attestation_basis, ttl_seconds, charter_anchor, or the penalty 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 description gives a specific verb+resource ("Sign a reserve attestation") that is distinguishable from siblings such as attest_to_floor or create_disclosure, and it names the two governing inputs (amount, assurance class). It does not, however, explicitly contrast itself with the most similar sibling tool, 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 versus alternatives like attest_to_floor, nor any mention of the required delegation_id prerequisite or the authority needed to sign. The one caveat ("does not check that the funds exist") is a useful warning but is not usage routing.

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

create_task_briefCreate Task BriefC

[OPERATOR] Create a new task with roles, deliverables, and acceptance criteria.

ParametersJSON Schema
NameRequiredDescriptionDefault
rolesYesRoles needed for this task
titleYesTask title
deadlineNoISO 8601 deadline
descriptionYesWhat needs to be done
deliverablesYesExpected outputs
acceptance_criteriaYesWhat 'done' looks like

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive write. The description adds only the [OPERATOR] privilege marker, which is useful but thin; it does not explain side effects such as duplicate creation risk from non-idempotency or what state the new task enters.

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?

A single front-loaded sentence with no filler and the key payload named first. It is efficient, though arguably under-specified for a tool with six parameters and two nested object arrays.

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 mutation tool with required nested role and deliverable objects, no output schema, and no annotations covering side effects, the description is too sparse. It omits what a task brief lifecycle looks like, what is returned, and what happens after creation.

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

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 roles and deliverables structures are already documented. The description names three of six parameters but adds no format or constraint meaning beyond 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?

States a specific verb (Create) and resource (task) and enumerates the core payload (roles, deliverables, acceptance criteria), which clearly distinguishes it from list_tasks and get_task_detail. It does not explicitly name a sibling, so it lands at 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?

There is no when-to-use guidance, no prerequisites, and no routing against related creation/assignment tools (create_intent, assign_agent, accept_assignment). The only implicit signal is the [OPERATOR] tag, which hints at privilege but does not say 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.

create_v2_delegationCreate v2 DelegationB

Create a v2 delegation with versioning, mandatory sunset, and PolicyContext binding.

ParametersJSON Schema
NameRequiredDescriptionDefault
delegateeYesPublic key of the agent receiving authority
trust_epochNo
valid_untilYesISO 8601 expiration
scope_categoriesYesAction categories (e.g., ['analysis', 'communication'])

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly=false, idempotent=false, destructive=false, and openWorld=false, so the write/idempotency profile is covered. The description adds useful non-obvious context: the delegation carries versioning, requires a sunset (expiration), and is bound to a PolicyContext. It does not state required permissions, what binding to a PolicyContext entails operationally, or whether existing delegations are superseded.

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?

A single front-loaded sentence with no waste; the verb and resource lead. It is efficient, though it could have used a second short clause to route to the right sibling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 mutating authority-granting tool with no output schema, the description covers the key structural traits (versioning, sunset, PolicyContext binding) but omits permission requirements, the relationship to the supersede/revoke siblings, and any indication of what a successful creation returns. Adequate but with clear 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 75% (trust_epoch lacks a description), so the schema mostly documents the inputs. The description's 'mandatory sunset' hints that valid_until is required and 'versioning' loosely maps to trust_epoch, but adds no format or constraint detail 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?

States a specific verb and resource ('Create a v2 delegation') and distinguishes it from v1 by naming the 'v2' designation. It also enumerates key characteristics (versioning, mandatory sunset, PolicyContext binding). However, it does not differentiate itself explicitly from siblings like create_delegation, supersede_v2_delegation, or sub_delegate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 prerequisites, and no mention of alternatives such as create_delegation or supersede_v2_delegation, which sit in the same authority-management family. The phrase 'mandatory sunset' implicitly signals that valid_until must be set, but the agent is left to infer 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.

declare_reidentification_riskDeclare Re-identification RiskC
Read-onlyIdempotent

Declare re-identification risk for transformed or synthetic data.

ParametersJSON Schema
NameRequiredDescriptionDefault
riskYes
assessedByYes
assessmentMethodNo
mitigationsAppliedNo

TDQS

C2.7/5.0
Behavior2/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, covering the safety profile. The description adds nothing beyond that — it does not say whether the declaration is persisted, who sees it, or what happens on re-declaration. There is mild tension between the assertive verb 'Declare' and readOnlyHint=true, but the verb is weak enough not to be a hard 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?

A single front-loaded sentence with no filler; every word earns its place. It is efficient, though its extreme brevity is a completeness problem rather than a structure one.

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 declaration tool with 0% schema coverage and no output schema, one sentence is far from sufficient. Missing are usage context, parameter meanings, enum semantics, and behavioral consequences of the declaration.

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 description coverage is 0% across 4 parameters, so the description must carry the load — and it explains none of them. It gives no meaning for 'assessedBy', 'assessmentMethod', or 'mitigationsApplied', and never clarifies the 'risk' enum values or how 'mitigated'/'unknown' differ from the others.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 clear verb ('Declare') and a specific resource ('re-identification risk'), scoped to 'transformed or synthetic data'. It is understandable without opening the schema, though it does no explicit differentiation from the many sibling governance 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 no guidance on when to declare risk versus using other governance tools (e.g. attest_to_floor, create_disclosure), no prerequisites, and no indication of which workflow stage triggers this call. The agent must infer usage entirely.

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

define_emergency_pathwayDefine Emergency PathwayC

Define a pre-authorized emergency pathway at delegation time. Only the delegator can define these.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionYes
trust_epochNo
valid_untilYes
max_durationNoPT1H
trigger_fieldYes
trigger_valueYes
delegation_refYes
review_deadlineNoPT24H
review_authorityYes
trigger_operatorYes
expanded_scope_categoriesYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false, so the mutation/safety profile is already covered. The description adds genuinely useful context by stating the authorization constraint (only the delegator can define), but says nothing about the effect of the pathway, idempotency, or lifecycle 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.

Conciseness4/5

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

Two front-loaded sentences with no wasted words; the core action leads. It is well-structured and tight, though arguably too thin given the underlying complexity.

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 an 11-parameter, 8-required mutation tool with no output schema and no annotation-rich profile, the description is far too sparse. It omits parameter meaning, trigger semantics, and pathway effects, leaving an agent unable to call it correctly without guessing.

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

Parameters1/5

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

The tool has 11 parameters (8 required) with 0% schema description coverage, and the description explains none of them. Critical fields like trigger_field, trigger_operator, trigger_value, expanded_scope_categories, review_authority, and valid_until are left entirely undocumented in both description and 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 ("Define") and resource ("emergency pathway") and adds the timing constraint ("at delegation time"), so an agent can tell what operation is performed. However, it offers no differentiation from related siblings such as activate_emergency or create_delegation, leaving the boundary ambiguous.

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

Usage Guidelines3/5

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

"At delegation time" implies a temporal context for when to use it, and "Only the delegator can define these" states an access prerequisite. But there is no explicit when-to-use/when-not or named alternative (e.g., vs activate_emergency), so the usage guidance remains 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.

detect_purpose_driftDetect Purpose DriftC
Read-onlyIdempotent

Detect when data purpose drifts through a workflow (e.g. research → commercial).

ParametersJSON Schema
NameRequiredDescriptionDefault
currentPurposeYes
allowedPurposesYes
originalPurposeYes
intermediateStepsNo

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 only the drift-direction concept and an illustrative example; it discloses nothing about how drift is judged, what counts as a violation, or how the four inputs interact.

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?

A single front-loaded sentence with no filler and the example parenthetically attached. It is efficient, though the terseness is part of the under-specification problem rather than a virtue here.

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 three required parameters (including two arrays) and zero schema descriptions, the definition is too thin: it neither explains the parameters nor describes what a drift evaluation returns. Annotations cover the safety profile and there is no output schema, but the input semantics remain unaddressed.

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?

With schema description coverage at 0%, the description carries the full burden of explaining the four parameters, but it names none of them. The 'research → commercial' example loosely gestures at originalPurpose/currentPurpose, yet allowedPurposes and intermediateSteps are left entirely undefined in both schema and 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?

States a specific verb and resource: detecting purpose drift through a workflow, with a concrete example (research → commercial). However, it does not differentiate from adjacent siblings like check_purpose_permitted or check_usage_permitted, which an agent might confuse with this detection 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 says what is detected but gives no when-to-use context, no prerequisites, and no indication of how it relates to the many sibling governance-check tools. The agent must infer the trigger scenario 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.

endorse_agentEndorse AgentB

Endorse an agent as a principal. Creates a cryptographic chain: principal → agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesWhat the agent can do on principal's behalf
agent_idYesAgent ID to endorse
relationshipYesHow principal relates to agent
expires_in_daysNoDays until endorsement expires
agent_public_keyYesAgent's Ed25519 public key

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false and idempotentHint=false. The description adds a useful behavioral fact, that a cryptographic chain is created, but omits consequences of the non-idempotent hint (repeat calls mint separate endorsements), default expiry behavior, and required authority.

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 short sentences, front-loaded with the action and followed by the concrete side effect. No filler; borderline minimal, but every clause carries 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?

A mutation tool with five parameters and no output schema needs to convey prerequisites and result shape. The description names the chain effect but says nothing about what the endorsement enables afterward, whether the principal must pre-exist, or what happens on expiry, leaving 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 description coverage is 100%, so all five parameters including the relationship enum and scope semantics are already documented in the schema. The description adds no 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?

States a specific verb (endorse) and resource (agent as principal), plus the concrete effect: creating a cryptographic chain principal → agent. Clear enough to distinguish from revoke_endorsement and verify_endorsement by intent, though it does not explicitly 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?

There is no statement of when to use this tool versus alternatives, nor any prerequisites such as the principal or agent needing to already exist. The agent must infer that verification happens via verify_endorsement and removal via revoke_endorsement.

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

evaluate_intentEvaluate Action IntentB
Read-onlyIdempotent

[OPERATOR] Evaluate an intent against the Values Floor policy engine. Returns real pass/fail verdict.

ParametersJSON Schema
NameRequiredDescriptionDefault
intent_idYesIntent ID from create_intent
delegation_scopeYesDelegation scope for context
delegation_spentNoAmount already spent
delegation_spend_limitYesDelegation spend limit

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 closed-world, so the safety profile is covered. The description adds that it produces a 'real pass/fail verdict,' hinting at binary output semantics, but says nothing about failure handling, what happens on a fail verdict, or any auth/operator requirements implied by the '[OPERATOR]' tag.

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 short sentences, front-loaded with the action and target, with zero padding. The cryptic '[OPERATOR]' prefix is the only element that is not self-explanatory.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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's note that it returns a pass/fail verdict is helpful, but it does not explain the verdict's structure, what a failure entails, or the delegation scope/spend semantics that the evaluation depends on. Adequate but with clear gaps for a policy-evaluation 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 all four parameters (intent_id, delegation_scope, delegation_spent, delegation_spend_limit). The description adds no parameter-level detail beyond that, 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 (Evaluate) plus the resource (intent) and the target system (Values Floor policy engine), and notes it returns a pass/fail verdict. It is clear on its own, but it does not differentiate itself from the many sibling policy-check tools such as check_tier, check_aggregate_constraints, or check_purpose_permitted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 the numerous other policy/constraint evaluation siblings, nor any prerequisites (e.g. whether create_intent must run first). The agent is left to infer usage 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.

evaluate_revocation_impactEvaluate Revocation ImpactB
Read-onlyIdempotent

Evaluate what happens when a data source revokes consent. Propagates obligations through derivation chains.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceIdYesSource ID that is revoking consent

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already establish readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that obligations propagate through derivation chains, but 'propagates' is ambiguous for a read-only tool (simulated vs. actual mutation) and no permissions, scope limits, or result format are disclosed.

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

Conciseness5/5

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

Two short sentences, zero waste, with the core action front-loaded ahead of the mechanism detail. Nothing needs trimming or reordering.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 should ideally hint at what the evaluation returns (impact report, violated obligations, affected derivations). It also omits how derivation chains are discovered, leaving a gap for a read-only analysis tool whose whole value is its output.

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?

Only one parameter exists and the schema documents it at 100% coverage, so the baseline applies. The description adds no syntax or format detail, but for a single fully-described sourceId there is nothing material to 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?

States a specific verb and outcome: evaluating the consequences of a data source revoking consent, plus the propagation mechanism. However, it does not distinguish this read-only evaluation from siblings like resolve_rights_propagation or the mutation-style revoke_endorsement/revoke_delegation, leaving the agent to infer it is a what-if 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?

There is no explicit when-to-use guidance, no prerequisites, and no naming of alternatives such as resolve_rights_propagation or resolve_lineage. An agent cannot tell from the description alone whether to call this or a sibling propagation tool.

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

execute_with_contextExecute with Context (Deprecated)C
Read-onlyIdempotent

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Execute an action through the enforcement context.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesRequired scope for this action (must match a delegated scope)
targetYesTarget of the action (e.g. URL, file path, resource ID)
action_typeYesAction type (e.g. 'api:fetch', 'data:write', 'commerce:checkout')
estimated_spendNoEstimated spend for commerce actions

TDQS

C2.8/5.0
Behavior1/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, yet the tool 'executes an action' whose documented action_type values include 'data:write' and 'commerce:checkout' — clearly state-mutating and potentially financial operations. This directly contradicts the read-only claim, and the description adds no compensating detail about what execution actually returns or whether it performs or merely permits the action.

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 compact clauses with the deprecation warning front-loaded before the purpose statement, which is the right ordering for a deprecated tool. Nothing is padded, though the second clause is so terse it borders on uninformative.

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 the burden of explaining what an execution returns (permit, denial, receipt?) and what 'enforcement context' enforces — it does neither. Combined with the unresolved read-only contradiction and the fact that a required scope must 'match a delegated scope' without any description of that prerequisite, the definition is not 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 all four parameters (action_type, target, scope, estimated_spend) are already documented in the schema. The description adds no additional meaning about scope matching, spend semantics, or parameter interactions, 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 verb is identifiable ('Execute an action') but the object is jargon — 'the enforcement context' is never defined, so an agent cannot tell what actually happens or what distinguishes this from siblings like complete_action or gateway_process_tool_call. The deprecation note is useful routing information but does not clarify 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?

The description explicitly states the tool is deprecated in v3.0.0 and names the replacement (the gateway.aeoess.com REST API), which is clear when-not-to-use guidance. It stops short of a 5 because the alternative is an external REST API rather than a sibling tool, and no condition for legitimately using this tool is given.

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

file_data_disputeBuild Data Dispute RecordA
Read-onlyIdempotent

Create a signed dispute record against a data artifact without submitting, storing, or sending it. Resolution happens outside the protocol.

ParametersJSON Schema
NameRequiredDescriptionDefault
filedByYes
evidenceYesEvidence artifact IDs
artifactIdYes
disputeTypeYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, and the description adds meaningful context beyond them: it explains WHY the operation is read-only (builds but does not submit, store, or send) and where the dispute is actually resolved. This reconciles the otherwise surprising 'Create' verb with the read-only annotation rather than contradicting it.

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 tight sentences, zero waste, with the defining non-side-effecting constraint front-loaded. Every clause 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?

There is no output schema, so the description should ideally indicate what is returned (a signed record object), and it only implies this. Combined with no parameter guidance, the definition is adequate for a build-only tool but leaves clear gaps.

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 description coverage is only 25% (just the 'evidence' array is annotated as 'Evidence artifact IDs'). The description adds no parameter information at all: it never mentions artifactId, filedBy, or the disputeType enum with its five values. With low coverage, the description should compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 ('Create'), a specific resource ('signed dispute record against a data artifact'), and a precise scope constraint. An agent can tell this apart from sibling mutation tools like create_data_enforcement_gate or create_artifact_provenance, 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 states an important boundary ('without submitting, storing, or sending it') and that 'resolution happens outside the protocol', which implies the intended context. However, it gives no explicit when-to-use trigger, prerequisites, or named alternative for actually filing the dispute, so usage is only implied.

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

gateway_approveGateway Approve (Deprecated)B
Read-onlyIdempotent

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Two-phase execution: approve a tool call without executing it.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYes
paramsNo
agentIdYes
contextNo
scopeRequiredYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false. The description adds the meaningful behavioral concept that approval is separated from execution (two-phase), which the annotations do not convey. It does not disclose auth/scope requirements for a valid approval, what state the approval leaves behind, or the migration path beyond the deprecation string.

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 compact sentences, front-loaded with the deprecation notice and then the core semantics. Every clause carries information; the only weakness is that the extreme brevity comes at the cost of parameter and lifecycle detail.

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 5-parameter, 0%-coverage tool with no output schema, the description omits parameter meaning, scope/auth prerequisites and post-approval state. Even accounting for deprecation reducing the need for detail, an agent cannot correctly populate the required inputs from this text.

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 description coverage is 0% across five parameters (agentId, tool, params, context, scopeRequired) with a nested free-form params object, yet the description documents none of them. It provides no added meaning over the bare schema, leaving required inputs like scopeRequired entirely 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?

States a specific verb (approve) and resource (a tool call) with clear scope, and the 'two-phase execution ... without executing it' phrasing distinguishes it from the executing sibling gateway_process_tool_call. The deprecation tag additionally tells the agent the tool is sunset. It stops short of naming the sibling that replaces it, 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?

The phrase 'approve a tool call without executing it' implies the usage context (decouple approval from execution, unlike gateway_process_tool_call), but never states when to pick this over the executing path or what the approval lifecycle requires. The deprecation notice usefully says when NOT to use it, but no explicit alternative beyond a bare REST URL.

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

gateway_process_tool_callGateway Process Tool Call (Deprecated)C
Read-onlyIdempotent

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Process a tool call through the gateway enforcement boundary.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYes
paramsNo
agentIdYes
contextNo
spendAmountNo
scopeRequiredYes
spendCurrencyNo

TDQS

C2.7/5.0
Behavior2/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 is covered. But the description adds nothing beyond that: it never explains what 'enforcement boundary' processing entails, whether the underlying tool is actually executed or merely authorized, or how spend/scope failures surface. For a 7-parameter governance tool, that is a large gap.

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 short clauses with the deprecation notice correctly front-loaded, so an agent immediately sees the tool is obsolete. Efficient and waste-free, though it spends its one sentence on almost no substantive detail.

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?

Seven undocumented parameters, a nested object, no output schema, and no annotations describing returns leave an agent unable to call this correctly from the description alone. The deprecation notice softens the impact — there is less reason to invest detail in a deprecated tool — but the definition is still under-specified for what it does.

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

Parameters1/5

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

Schema coverage is 0% across 7 parameters including a nested free-form 'params' object, and the description supplies no semantics for agentId, tool, scopeRequired, spendAmount, spendCurrency, or context. It neither compensates for the coverage gap nor hints at which fields drive enforcement decisions. Complete omission.

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 verb ('process') and resource ('a tool call') and adds the framing 'through the gateway enforcement boundary', so it is slightly more than a restatement of the name. However, it does not distinguish this tool from nearby siblings such as gateway_approve, execute_with_context, or evaluate_intent, and 'process' remains vague about what the gateway actually does (validate, approve, execute?). Minimum viable.

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 deprecation banner is real, actionable guidance: it tells the agent not to use this tool and points at a specific alternative (the gateway.aeoess.com REST API). That is a clear routing instruction, though it gives no condition for when legacy use might still be warranted and no guidance relative to sibling gateway tools.

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

gateway_statsGateway Stats (Deprecated)A
Read-onlyIdempotent

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Get gateway statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already carry the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is lighter. It adds the one behavioral fact annotations can't convey: the tool is deprecated and superseded. It does not say whether it still functions or what statistics are returned, keeping 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.

Conciseness5/5

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

Two compact clauses with the deprecation status and the replacement placed first. Every token earns its place; there is no 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 zero-parameter, fully-annotated, output-schema-less read tool, the description supplies the only missing information an agent needs: that it is deprecated and where to go instead. It could optionally state whether the call still returns data, but nothing essential is absent.

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 tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify and no coverage gap to 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?

States a clear verb+resource ('Get gateway statistics') and the deprecation tag immediately frames its status. The resource is somewhat generic (which statistics, from which gateway) and it does not position itself against siblings like gateway_process_tool_call, but the verb+resource pairing 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 Guidelines5/5

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

Explicitly says 'deprecated in v3.0.0' (when NOT to use) and names the alternative ('use the gateway.aeoess.com REST API'). This is the exact when-not/alternative guidance the dimension asks for, and it is front-loaded in brackets.

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

generate_aps_txtGenerate aps.txtB
Read-onlyIdempotent

Generate a signed aps.txt file for site-wide governance. Like robots.txt but cryptographically signed with terms, revocation endpoint, and MCP upgrade path.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain this declaration covers (e.g. theagenttimes.com)
trainingNo
inferenceNo
publicKeyYesPublisher's Ed25519 public key (hex)
privateKeyYesPublisher's Ed25519 private key (hex)
mcpEndpointNo
publisherNameYesHuman-readable publisher name
redistributionNo
revocationEndpointNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already establish the safe, idempotent, non-destructive, closed-world profile, so the description's remaining burden is modest. It adds useful artifact context (the file is cryptographically signed, and contains terms, a revocation endpoint, and an MCP upgrade path), but says nothing about the signing key sensitivity or how the signature is produced, so it only modestly exceeds what annotations provide.

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 tight sentences with the core action front-loaded and the analogy second to build intuition. No filler, though the second sentence is doing double duty as both explanation and parameter hint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 9-parameter tool with no output schema and 44% schema coverage, the description is thin: it never states that the tool returns the signed file contents, how the three policy enums interact, or what the caller must supply versus omit. It conveys the concept well but leaves multiple call-shaping details 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 only 44%, so several parameters (the training/inference/redistribution enums, mcpEndpoint) carry no documentation anywhere. The description partially compensates by naming 'terms', 'revocation endpoint', and 'MCP upgrade path', which hints at those inputs, but it never explains the enum values or flags that privateKey is a sensitive credential.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (generate) plus specific artifact (a signed aps.txt file), and the robots.txt analogy makes the concept immediately legible. It implicitly separates itself from the sibling verify_aps_txt, but it never names that sibling or explicitly states it is the producer-side counterpart rather than the 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?

No when-to-use guidance, no prerequisites, and no alternatives named despite a crowded sibling set (verify_aps_txt, verify_governance_block, create_disclosure, sign_charter). The agent must infer that this is the authoring step and that verify_aps_txt is the later verification step.

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

generate_governance_blockGenerate Governance BlockC
Read-onlyIdempotent

Generate a cryptographically signed governance block for embedding in HTML pages. Includes terms, revocation policy, and content hash.

ParametersJSON Schema
NameRequiredDescriptionDefault
cachingNo
contentYesArticle/page content to hash and govern
trainingNo
inferenceNo
publicKeyYesPublisher's Ed25519 public key (hex)
derivativeNo
privateKeyYesPublisher's Ed25519 private key (hex)
license_urlNo
terms_versionNo
redistributionNo

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 safety behavior is largely covered. The description adds that key material is involved ('cryptographically signed') and what the block contains (terms, revocation policy, content hash), but says nothing about determinism, key validity requirements, or the failure mode when keys are malformed. It does not contradict the annotations — signing is a pure computation.

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 tight sentences, zero filler, with what the tool produces front-loaded. It could carry more substance given the 10-parameter surface, but nothing is wasted.

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 10-parameter tool with no output schema and low schema coverage, the description is thin: it never explains the permission enums, the required key pair, or what the returned block looks like or how it is meant to be embedded. Annotations cover the safety profile, but the domain semantics are largely missing.

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?

With 10 parameters and only 30% schema description coverage, the description should compensate, but it only loosely gestures at 'terms', 'revocation policy', and 'content hash'. The five permission-style enum parameters (caching, training, inference, derivative, redistribution) and their four allowed values are never explained, nor is the role of license_url or terms_version, and 'revocation policy' has no corresponding parameter at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Generate a cryptographically signed governance block') plus the deployment context (embedding in HTML pages). The verb 'generate' plus 'signed' implicitly separates it from the verify_/parse_ siblings, 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 Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no routing to alternatives such as verify_governance_block, parse_governance_block_html, or create_chained_governance_block. The agent must infer the workflow position 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.

generate_keysGenerate Ed25519 KeypairC
Read-onlyIdempotent

Generate an Ed25519 keypair for agent identity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior1/5

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

The description asserts fresh generation of key material, yet the annotations declare idempotentHint=true and readOnlyHint=true — repeated identical calls cannot yield an identical freshly generated keypair, and generation produces new material rather than reading state. The description neither reconciles this nor discloses where the private key goes, so the declared behavior is misleading rather than merely thin.

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?

One sentence, front-loaded with verb and resource, with zero filler. There is nothing to trim.

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 an empty parameter schema, the description is the only place an agent could learn what actually comes back (public key only? full keypair? persisted server-side?) and whether secrets must be handled by the caller. None of that is present, so a key-material-producing tool is under-specified at the point where it matters most.

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 tool takes zero parameters, so the baseline is 4 and there is no schema surface the description could clarify. Nothing about parameter semantics is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 ('Generate') and resource ('Ed25519 keypair') plus an intended use ('for agent identity'), so an agent knows exactly what the tool produces. It does not differentiate itself from nearby siblings such as rotate_key or is_key_active, which is the only thing 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 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 prerequisite (e.g., whether an agent must already be registered), and no routing versus rotate_key, which also concerns key material. The phrase 'for agent identity' hints at context but states no conditions or exclusions.

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

generate_settlementGenerate Settlement (Deprecated)A
Read-onlyIdempotent

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Generate a Merkle-committed, signed settlement record for a period.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateYesPeriod end (YYYY-MM-DD)
startDateYesPeriod start (YYYY-MM-DD)
periodLabelYesLabel (e.g. '2026-Q1', '2026-03')

TDQS

A3.6/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 that the output is Merkle-committed and signed, which is useful artifact-level context, but says nothing about determinism, auth requirements, or persistence. 'Generate ... record' versus readOnlyHint=true is a mild tension, though generating a derived record returned to the caller is plausibly non-mutating, so it is not a hard contradiction.

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?

A single sentence with the deprecation warning front-loaded in brackets before the functional statement. Zero filler; every clause earns its place.

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

Completeness4/5

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

With no output schema, the description should carry the return-artifact burden, and it does so minimally ('Merkle-committed, signed settlement record'). For a deprecated tool, the most important context — the replacement path — is present, so the definition is close to 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% — startDate, endDate, and periodLabel are each documented in the schema, including the label format examples. The description adds nothing beyond the vague phrase 'for a period', so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb, resource, and scope: 'Generate a Merkle-committed, signed settlement record for a period.' An agent can tell what artifact is produced, though it does not differentiate itself from sibling settlement tools such as aps_aggregate_settlement or aps_verify_settlement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 bracketed '[deprecated in v3.0.0, use the gateway.aeoess.com REST API]' is a genuine routing signal — it tells the agent to prefer another mechanism — but gives no condition under which the deprecated tool is still appropriate and does not point to any sibling tool as an alternative.

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

get_agora_by_topicGet Agora Messages by TopicC
Read-onlyIdempotent

Get all messages in a topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesTopic to filter by

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered elsewhere. The description adds nothing beyond that: no ordering, pagination, result-shape, or scope caveats, so it contributes no behavioral context the annotations don't already provide.

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?

A single short sentence with no filler, and the resource being fetched is front-loaded. It is efficient, though the extreme brevity is partly what leaves the sibling ambiguity unresolved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 tool with full annotation coverage and no output schema, the description is minimally adequate. What it omits — how results relate to threads and whether the return is flat or grouped — is exactly the ambiguity an agent faces given the crowded agora 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% and there is a single required 'topic' string parameter, so the schema already documents the input fully. The description repeats the concept ('in a topic') without adding format, matching, or casing details. 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 gives a specific verb ('Get') and resource ('messages in a topic'), so the core action is unambiguous. It does not, however, distinguish itself from close siblings like get_agora_thread or get_agora_topics, leaving an agent to guess which one returns topic-scoped messages versus thread-scoped ones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 get_agora_thread, get_agora_topics, or check_messages. The only implied usage comes from the word 'topic', which is not enough to route between four closely related message-retrieval siblings.

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

get_agora_threadGet Agora ThreadC
Read-onlyIdempotent

Get a message thread from the Agora feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesRoot message ID to get thread for

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive behavior, but the description adds no behavioral detail beyond them—no return format, pagination, thread semantics, or permission requirements. With no output schema, more context would be valuable.

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?

A single front-loaded sentence with no waste. It is efficient, though it repeats the title closely and could add a brief qualifier without becoming 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?

For a simple read tool with rich annotations and a fully documented parameter, the description is minimally adequate. However, it leaves the agent without guidance on when to use it versus sibling Agora retrieval tools and does not describe the returned thread structure (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 description coverage is 100% and the single parameter message_id is documented as the root message ID. The description adds no meaning beyond the schema, 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?

States a specific verb ('Get') and resource ('message thread') plus source ('Agora feed'). It does not explicitly distinguish this tool from sibling read tools like get_agora_by_topic or get_agora_topics, 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?

No when-to-use guidance, conditions, or mention of alternatives such as get_agora_by_topic. The phrase 'from the Agora feed' implies context but does not tell the agent when to choose this tool over siblings.

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

get_agora_topicsList Agora TopicsA
Read-onlyIdempotent

List all topics in the Agora feed with message counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/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 and repetition semantics are fully covered. The description contributes one extra behavioral fact — that results include message counts — but says nothing about ordering, empty-feed behavior, or pagination. Adequate, not rich.

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?

A single sentence with the resource and the distinguishing return detail front-loaded. There is no filler, hedging, or redundant restatement of 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?

For a zero-argument, read-only listing tool with annotations covering its safety profile, the description supplies the essential shape of the response (topics plus counts). With no output schema, a brief note on ordering or pagination would complete it, but the missing pieces 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?

The tool takes zero parameters, so there is no parameter semantics to document; the baseline for a parameterless tool is 4. Nothing in the description misdescribes the empty input schema, which confirms no arguments are accepted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ("List all topics in the Agora feed") plus the payload detail ("with message counts"). The word "all" implicitly contrasts with the filtering sibling get_agora_by_topic, but the differentiation is left for the agent to infer 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?

No when-to-use statement, no prerequisites, and no mention of alternatives such as get_agora_by_topic (per-topic drill-down) or get_agora_thread, which are close siblings in the Agora family. Usage is only vaguely implied by "all topics" as a discovery call.

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

get_behavioral_sequenceGet Post-Issuance BehaviorB
Read-onlyIdempotent

Get the post-issuance behavioral sequence for an agent. Shows the first 10 tool calls after passport issuance. Real agents do work. Farming agents extract.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesThe agent ID to query

TDQS

B3.4/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), so the bar is lower. The description usefully discloses the core behavior of returning the first 10 post-issuance tool calls, but says nothing about the shape of those calls, ordering, or what happens when fewer than 10 exist.

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 short sentences, front-loaded with what the tool returns before the interpretive commentary. The final aphorism about farming agents is arguably editorial, but it does encode the diagnostic intent 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 carries the burden of explaining return values, and it only partially does so (first 10 tool calls). For a simple one-parameter read tool the essentials are present, but an agent still cannot predict the response 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?

There is a single parameter at 100% schema description coverage, so the schema already defines agent_id fully. The description adds no format, source, or constraint detail beyond the schema, 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.

Purpose4/5

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

The description states a concrete verb and resource (get the post-issuance behavioral sequence for an agent) and narrows the scope to the first 10 tool calls after passport issuance. It is clearly distinct from siblings like get_evidence or get_passport_grade, though it does not explicitly name a sibling to contrast 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 is only implied: the closing line about farming agents signals the tool exists to spot extractive behavior, but there is no explicit when-to-use/when-not or named alternative for cases where a different evidence tool is more appropriate. An agent can infer the intent but must guess at the boundaries.

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

get_commerce_spendGet Commerce SpendC
Read-onlyIdempotent

Get spend analytics for a commerce delegation.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesAgent ID
spend_limitYesTotal allowed spend
delegation_idYesCommerce delegation ID

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing further — not the return shape, not whether spend is scoped to a period or currency, and not why a read tool requires a 'spend_limit' 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?

A single short sentence with no filler and the key noun phrase front-loaded. It is efficient, though the brevity edges into under-specification rather than tightness.

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 three required parameters and no output schema, the description is the only place to explain what an agent receives and how the unusual required 'spend_limit' input interacts with a read operation. Neither is addressed, leaving a real gap for a tool whose inputs are non-obvious.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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 three parameters are documented in the schema and the baseline is 3. The description adds no extra meaning, such as whether delegation_id must be an active delegation or whether spend_limit acts as a filter bound versus a validation check.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 ('Get spend analytics') scoped to a 'commerce delegation', which is clearer than a tautology. However, it does not differentiate itself from adjacent siblings such as generate_settlement or aps_aggregate_settlement, which also deal with commerce/accounting outcomes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 alternative. An agent cannot tell from this text when spend analytics is the right call versus preflight, settlement, or evidence tools.

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

get_digestGet Intent Network DigestA
Read-onlyIdempotent

Get a personalized digest from the Intent Network: relevant matches, pending intro requests, and incoming intros. It answers 'what matters to me right now?'

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description usefully discloses the digest's composition (matches, pending intro requests, incoming intros), but adds nothing about freshness, ordering, pagination or auth needs.

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 short sentences, front-loaded with the resource and its contents, followed by a compact usage framing. Nothing is redundant, though the quoted question is more rhetorical than informational.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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-param, read-only aggregator with no output schema, the description substitutes well for a return-value spec by listing what the digest contains, and annotations cover safety. Minor gaps (format, ordering, recency) remain but are not critical for 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?

The tool takes zero parameters, so the baseline is 4. The description correctly adds no parameter discussion, and the empty schema is self-evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (Get) and resource (personalized digest from the Intent Network), then enumerates its three components: relevant matches, pending intro requests, incoming intros. This implicitly separates it from siblings like search_matches or request_intro, but it never names an alternative the way a 5 would.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 framing question 'what matters to me right now?' implies a situational trigger for calling it, which is better than nothing. However there is no explicit when-not guidance and no named alternatives (e.g., use search_matches to filter matches yourself), so usage remains inferred.

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

get_evidenceGet Handed-Off EvidenceB
Read-onlyIdempotent

[ANALYST/BUILDER/REVIEWER] Get evidence that was handed off to you.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID

TDQS

B3.4/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 one genuinely behavioral fact beyond that: the returned evidence is access-scoped to what was handed off to the caller. It does not say what happens if nothing was handed off or whether content vs. metadata is returned.

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?

A single short, front-loaded sentence with no filler, and the role tag leads. It is arguably over-terse for the job it needs to do, but there is no wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 fetch with full annotation coverage, the definition is close to viable, but with no output schema the description should at least hint at the return shape (single evidence item vs. collection, artifact content vs. reference). The relationship between task_id and the handed-off evidence is also 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 coverage is 100% and there is only one parameter (task_id, required), so the schema carries the load and the baseline is 3. The description adds no meaning about whether task_id is the task the evidence belongs to or a separate handoff identifier, which is a real ambiguity given the 'handed off to you' scoping.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (get) and resource (evidence) with a clear scope qualifier: only evidence 'handed off to you.' The [ANALYST/BUILDER/REVIEWER] tag signals the caller role. It is distinguishable from submit_evidence/handoff_evidence by the 'handed off to you' framing, though it never names a sibling 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 implied by the phrase 'handed off to you' – the agent should call this after a handoff has occurred – but there is no explicit when/when-not, no prerequisites, and no routing against near siblings like review_evidence or get_task_detail. Adequate but leaves the agent to infer the trigger condition.

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

get_fleet_statusGet Fleet StatusB
Read-onlyIdempotent

Get status of all agents endorsed by the current principal.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/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 safety and idempotence are covered. The description adds the useful scoping fact that results are limited to endorsements by the current principal, but says nothing about what a 'status' value contains or whether results are cached/aggregated.

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?

One sentence, zero filler, scope qualifier placed where it is read. Nothing to trim and nothing structurally missing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 parameterless read with no output schema, the description should convey roughly what comes back. It says 'status of all agents' but never characterizes the status values or result shape, leaving the agent to discover the return semantics at call time. Annotations carry the rest, so this is a moderate rather than severe 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?

Zero parameters, so per the rubric the baseline is 4. The description correctly implies the principal is derived from context rather than passed in, which is the only semantic question a parameterless tool raises.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (get) and resource (fleet status) with a clear scope qualifier: 'all agents endorsed by the current principal'. That scope distinguishes it from generic listing siblings like list_agents, 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?

There is no when-to-use guidance and no exclusions. With ~150 siblings including list_agents, verify_endorsement, and get_promotion_history, the agent gets no help deciding when fleet status is the right call versus those adjacent reads.

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

get_my_roleGet My Coordination RoleB
Read-onlyIdempotent

Get your current role, assigned tasks, and role-specific instructions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered elsewhere. The description contributes the shape of the result (role, tasks, instructions), which matters because there is no output schema, but it says nothing about failure modes (e.g., what happens if no role is assigned) or scope of the returned tasks.

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?

A single front-loaded sentence with no filler; the core action and the returned contents are stated immediately and nothing is padded or repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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-argument, read-only lookup the description is adequate: it names the action and the three things returned. However, with no output schema to fall back on, it leaves the agent guessing about result structure and about the no-role-assigned case, which a slightly longer description could have 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?

The tool takes zero parameters, which sets the baseline at 4. There is nothing for the description to clarify or compensate for, and no misleading parameter language is present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Get your current role') and enumerates the payload ('assigned tasks, and role-specific instructions'). It is unambiguous on its own, but it does nothing to distinguish it from siblings such as list_tasks, get_task_detail, or list_agents, which superficially overlap with the 'assigned tasks' portion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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, no prerequisite, and no named alternative. The only signal is the possessive 'your', which weakly implies this is a self-introspection call (e.g., at session start) rather than a query about other agents — that is inference, not guidance.

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

get_passport_gradeGet Passport GradeA
Read-onlyIdempotent

Query the attestation grade and issuance context for a passport. Returns the passport grade (0-3), flags, and evidence summary. Grade 0 = self-signed, 1 = issuer countersigned, 2 = runtime-bound, 3 = principal-bound. This is the partner-facing trust query.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesThe agent ID of the passport to query

TDQS

A3.7/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 domain-specific behavioral context the annotations cannot: the 0-3 grade scale with the meaning of each level (self-signed, issuer countersigned, runtime-bound, principal-bound), which is the key semantic an agent needs to interpret 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?

Four short sentences, front-loaded with purpose then return values then the grade scale. Every sentence contributes; only the trailing 'partner-facing trust query' line is close to redundant with the opening.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 properly compensates by naming the returned fields and decoding the grade scale. For a single-parameter read tool this is nearly complete, though it omits any hint about error/absent-passport 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% for the single agent_id parameter, so the schema already carries the parameter meaning. The description adds nothing about the parameter beyond what is in the schema, 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 description names a specific verb and resource (query the attestation grade and issuance context for a passport) and enumerates the returned fields (grade 0-3, flags, evidence summary). It differentiates itself from adjacent trust tools like get_evidence and check_tier by labeling itself 'the partner-facing trust query,' though it never names a sibling 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?

'This is the partner-facing trust query' implies the audience and context, but there is no explicit when-to-use, when-not-to-use, or alternative routing against the many sibling verification/attestation tools. 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.

get_promotion_historyGet Promotion HistoryB
Read-onlyIdempotent

Get the promotion review history for this session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the useful constraint that results are session-scoped rather than global, but says nothing about what a history entry contains or how results are ordered or bounded.

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?

A single sentence with zero filler, and the scope constraint is front-loaded immediately after the verb-resource pair. Nothing is padded and nothing needs to be reordered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 no-param read tool with no output schema, the description is minimally adequate: it names the returned concept but not the shape of a history entry, whose history is returned (calling agent, session, or all participants), or whether the result set is bounded. The annotations carry the safety profile, so the remaining gap is about return content, not behavior.

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 tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to disambiguate. The baseline of 4 applies; no parameter explanation is required or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Get') and resource ('promotion review history') with an explicit scope qualifier ('for this session'), which is more than a restatement of the title. It does not, however, distinguish itself from adjacent siblings such as review_promotion, verify_endorsement, or get_behavioral_sequence, 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 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 when-not-to-use, and no named alternative. 'For this session' is a scoping detail, not usage direction; an agent has no signal about when to reach for this versus review_promotion or update_reputation.

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

get_task_detailGet Task DetailA
Read-onlyIdempotent

Get full details of a specific task including all evidence, reviews, and deliverables.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID

TDQS

A3.5/5.0
Behavior3/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 fully covered without the description. The description adds that the response includes evidence, reviews, and deliverables, which is useful content-level context, but says nothing about pagination, size, or error behavior for a missing task.

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 front-loaded sentence with no filler; the key resource and payload contents lead immediately. It is efficient, though slightly under-specified rather than maximally informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 single-resource getter with a one-field schema, this is nearly sufficient: annotations cover the safety profile and the description enumerates returned sub-resources in lieu of an output schema. Only failure modes and routing against siblings are 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 100% for the single task_id parameter, so the schema carries the semantics. The description adds no format, source, or scoping detail beyond what the schema already provides, which is the expected baseline for full-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Get full details of a specific task') and even enumerates what the detail payload contains. It is clearly distinguished from a listing tool by the word 'specific task', but it never names or contrasts with a sibling like list_tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 infers this is for retrieving one task when it already holds a task_id. There is no explicit when-to-use, no contrast with list_tasks or get_evidence, and no stated prerequisites.

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

governance_360Run Governance 360 LoopA
Read-onlyIdempotent

Execute the full governance 360 loop on HTML content: extract governance block → verify signature + content hash → check usage terms → create signed access receipt. This is what an agent calls on every page it reads.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYesFull HTML of the page
sourceUrlYesURL of the page
contentBodyYesArticle text content (for hash verification)
intendedUsageYes
agentPublicKeyYesYour agent's Ed25519 public key (hex)
agentPrivateKeyYesYour agent's Ed25519 private key (hex)
publisherPublicKeyYesPublisher's Ed25519 public key (hex)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, destructive=false and closed-world, so the safety profile is given. The description adds the pipeline and implies secret-key use ("signed access receipt" with agentPrivateKey), but says nothing about failure semantics: what happens if the signature or content hash fails, or whether a partial result is returned. There is mild tension between "create signed access receipt" and readOnlyHint=true, though a returned receipt need not mutate state, so this is 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.

Conciseness4/5

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

Two sentences, front-loaded with the operation and followed by a compact pipeline arrow-list, with zero filler. Could be trimmed slightly but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 7-required-parameter composite with no output schema, the description covers the flow but omits the return shape of the receipt and the behavior on verification failure — the two things an agent most needs before calling it on "every page." Adequate, but with a clear gap 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 86%, so the schema already documents inputs; baseline 3 applies. The description implicitly maps steps to inputs (html → extract block, contentBody/publisherPublicKey → hash/signature verification, intendedUsage → usage terms), but adds no format, key, or edge-case 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+resource ("Execute the full governance 360 loop") and then enumerates the four sub-steps, so the agent knows this is a composite operation. That composite framing also distinguishes it from the single-step siblings (verify_governance_block, check_usage_permitted, create_access_receipt) that would otherwise look like alternatives.

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?

"This is what an agent calls on every page it reads" gives an explicit, memorable trigger condition. It does not, however, name when NOT to use it or which siblings to call instead (e.g., verify_governance_block when no receipt is needed), so the routing guidance is clear but not exhaustive.

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

handoff_evidenceHand Off EvidenceB

[OPERATOR] Transfer approved evidence from researcher to analyst.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID
to_roleYesDestination role (e.g. analyst)
packet_idYesApproved evidence packet ID
review_idYesReview ID that approved it
to_agent_keyYesDestination agent's public key

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already disclose this is a non-read-only, non-idempotent mutation that is not open-world or destructive. The description adds meaningful context by tying the transfer to an approval ('approved evidence') and a destination agent key, but says nothing about what happens on retry (non-idempotent), whether the source agent loses access, 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.

Conciseness4/5

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

A single front-loaded sentence with the [OPERATOR] tag leading; nothing is redundant. It is efficient, though arguably under-specified rather than lean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 carry more of the behavioral burden for a 5-required-parameter mutation tool, and it does not describe the resulting state or return. It does supply the approval prerequisite and the actor pair, which is the minimum viable 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 all five parameters (task_id, packet_id, review_id, to_role, to_agent_key) are already documented in the schema. The description only loosely maps 'researcher to analyst' onto the role parameters and adds no format or constraint 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 description names a specific verb ('Transfer') and resource ('approved evidence') and identifies the direction ('from researcher to analyst'), which is clearer than the bare name. It does not, however, explicitly distinguish itself from siblings like submit_evidence, review_evidence, or assign_agent that operate on the same evidence/task domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 word 'approved' implies a prerequisite (a review must already have passed, echoed by the required review_id) and 'researcher to analyst' implies role routing. But there is no explicit when-to-use statement, no mention of the alternative tools for moving or assigning work, and no preconditions spelled out.

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

identifyIdentify Session AgentB

Identify yourself to the coordination server. Sets your role and scopes tools accordingly.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idNoYour agent ID
public_keyYesYour Ed25519 public key
private_keyYesYour Ed25519 private key (for signing)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and idempotentHint=false, signaling a state-changing, non-repeat-safe operation. The description adds the useful consequence that it sets role and scopes tools, but does not disclose what happens on repeat identification, whether the session is bound to the key, or auth/permission requirements beyond what the schema implies.

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

Conciseness5/5

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

Two short sentences, no filler, with the core action front-loaded and the side effect second. Every sentence 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?

No output schema exists, so return values needn't be explained, and params are fully covered by the schema. However, for a non-idempotent session-establishing tool, the description leaves the role/scoping mechanics and repeat-call behavior entirely unstated, so it is only minimally 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 agent_id, public_key, and private_key are already documented in the schema, including that private_key is for signing. The description adds no param-level detail. Baseline 3 is appropriate when the schema carries the 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?

States a specific action and object: 'Identify yourself to the coordination server.' The second sentence adds the effect (sets your role, scopes tools). It is clear but does not distinguish itself from related siblings like get_my_role or register_agora_agent, which 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 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 call this versus alternatives, nor prerequisites (e.g., call at session start, before other scoped calls). 'Identify yourself' implies an opening handshake but it is left to inference. No when-not guidance or alternative tooling is named.

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

is_evidence_freshCheck Evidence FreshnessA
Read-onlyIdempotent

Check whether typed attestation evidence is still fresh. Rotating evidence requires a ttl, snapshot evidence takes an optional maxAge, and static evidence is always fresh.

ParametersJSON Schema
NameRequiredDescriptionDefault
nowNoISO 8601 override for current time
ttlNoSeconds (required for rotating)
typeYes
max_ageNoSeconds (optional for snapshot)
valid_atYesISO 8601 timestamp evidence was produced

TDQS

A3.5/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 safety is fully covered. The description adds the freshness semantics per evidence type, which is useful, but nothing about failure modes, edge cases (e.g. missing ttl), or error behavior is disclosed.

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, front-loaded with the core purpose and then the type-conditional rules. No filler; every clause carries 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 should ideally hint at the return shape (presumably a boolean/status), but it does not. It covers the input logic adequately, yet for a predicate-style tool the expected answer format is left 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 coverage is 80% and the schema itself already annotates ttl as 'required for rotating' and max_age as 'optional for snapshot'. The description largely restates those conditional rules while adding that static evidence is always fresh; it does not clarify 'now' or 'valid_at' 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 (check) and resource (evidence freshness), and the notion of 'typed attestation evidence' distinguishes it from siblings like get_evidence or review_evidence. It stops short of naming an alternative, so it is clear but not sibling-routed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 type-based rules ('rotating evidence requires a ttl...'). It never says when an agent should reach for this instead of get_evidence, classify_evidence_quality, or review_evidence, so the agent must infer the trigger conditions.

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

is_key_activeCheck Key Is ActiveA
Read-onlyIdempotent

Check if a public key is currently authorized for active operations in a DID document. SDK convenience check. Gateway enforcement is authoritative.

ParametersJSON Schema
NameRequiredDescriptionDefault
public_keyYesHex-encoded Ed25519 public key to check
did_documentYesRotatableDIDDocument JSON object

TDQS

A3.8/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 a closed-world scope, so the safety profile is covered. The description adds value beyond that by disclosing the tool's epistemic status — it is a convenience check and is not authoritative, with gateway enforcement taking precedence — plus the point-in-time nature implied by 'currently.' That is a real behavioral caveat 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.

Conciseness5/5

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

Three short sentences, no filler, with the core action front-loaded and the trust caveat immediately after. Every sentence carries distinct information: what is checked, what kind of check it is, and who has final authority.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 is the only hint that the result is a boolean activeness verdict, which 'Check if' conveys adequately. Combined with annotations covering the safety profile and a fully documented schema, nothing essential for calling the tool is missing, though an explicit statement of the return shape would close the last 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 both parameters (hex-encoded Ed25519 public_key and the RotatableDIDDocument object) are already documented in the schema, and the description adds no encoding, format, or validity detail beyond that. 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 description names a specific verb and resource: checking whether a public key is currently authorized for active operations inside a DID document. That is far more precise than the title alone, and the 'SDK convenience check' framing distinguishes it from the gateway enforcement path. It does not explicitly contrast itself with nearby sibling tools such as verify_rotation_chain or rotate_key, 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 Guidelines3/5

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

It implies an SDK-side pre-flight use case and warns that 'Gateway enforcement is authoritative,' which is genuine guidance about how much to trust the result. However, it never states when to call this instead of an alternative, nor what a caller should do if the check disagrees with gateway behavior, leaving the routing decision to inference.

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

issue_passportIssue Agent PassportA

Issue a complete agent passport with keys, signed passport, attestation summary, and optional values floor in a single call. The server silently captures Tier 0 observed signals and computes a passport grade (0-3). Use this to onboard any agent without an npm install.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAgent name (human-readable)
ownerYesOwner/principal identifier
missionNoAgent mission description
capabilitiesNoAgent capabilities (e.g., ['research', 'writing'])
attest_to_floorNoIf true, attests to the default values floor (F-001 through F-008)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations cover mutation/non-idempotent/open-world safety, and the description adds genuinely non-obvious behavior: the server 'silently captures Tier 0 observed signals' and computes a passport grade (0-3) as a side effect. It does not describe auth/principal requirements or whether an existing passport is overwritten, but it discloses more than the annotations do.

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 front-loaded sentences with the primary action first and the bundle contents up front; no redundancy. The trailing 'without an npm install' is more of a selling point than operational guidance, a minor bit of non-earning 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?

With no output schema, the description helpfully names the returns (keys, signed passport, attestation summary, grade), which is what an agent needs to know it is a full issuance call. It omits auth/principal prerequisites and the fate of a pre-existing passport for the same agent, leaving minor gaps for a mutating onboarding 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 all five parameters. The description only gestures at the 'optional values floor' (attest_to_floor) and adds no format or constraint detail beyond what the schema provides, matching the baseline for full schema coverage.

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 ('Issue a complete agent passport') and enumerates the bundle contents (keys, signed passport, attestation summary, optional values floor). This clearly distinguishes it from siblings like generate_keys or get_passport_grade, which cover only part of that output.

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?

'Use this to onboard any agent without an npm install' gives a clear usage context and even implies a convenience rationale. It stops short of naming alternatives or exclusions (e.g., when to call generate_keys + verify_issuer separately instead), so it is clear context without routing guidance.

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

list_agentsList Registered AgentsB
Read-onlyIdempotent

List registered agents from the agent registry (agora/agents.json).

ParametersJSON Schema
NameRequiredDescriptionDefault
status_filterNoFilter by status: active, pending, retired (default: all)

TDQS

B3.2/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 openWorldHint=false, so the safety profile is fully covered. The description adds only the fact that the source is a local registry file; it says nothing about result shape, ordering, or pagination, so it clears the lowered bar but adds little.

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 sentence, front-loaded with verb and resource, no filler. It is as short as it can be while still naming the data source.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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-param read tool whose annotations carry the safety profile and whose single parameter is fully described by the schema, the definition is minimally sufficient. It omits any differentiation from the numerous sibling list tools and any hint of what an agent record contains, which leaves a gap in a crowded tool surface.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 status_filter parameter and its active/pending/retired values are already documented. The description never mentions filtering, so it adds no meaning 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?

States a specific verb (List) and resource (registered agents) plus the backing source file (agora/agents.json), which anchors what 'agent' means here. It does not differentiate from adjacent list-style siblings such as list_profiles or list_issuance_records, so it stops at 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 named. In a sibling set this dense with other list/registry tools, the agent must infer from the name alone that this is the agents-registry reader.

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

list_issuance_recordsList Issuance RecordsA
Read-onlyIdempotent

List all stored issuance records with their passport grades. Shows how many passports have been issued in this session and their trust posture. Useful for monitoring issuance patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.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 and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds that records are scoped to 'this session' and reflect trust posture, which is real context, but it says nothing about ordering, volume, or return shape.

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 short sentences, front-loaded with the verb and resource. The third sentence ('Useful for monitoring issuance patterns') is mild filler but not wasteful enough to penalize heavily.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 parameterless read tool with full annotation coverage and no output schema, the description conveys enough: what is listed, the key field (passport grades), and the session scope. A brief note on what a record contains would make it 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?

The tool takes zero parameters and the input schema is an empty object, so there is nothing for the description to disambiguate. Baseline 4 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 ('List all stored issuance records') and adds what is returned ('with their passport grades'), so an agent knows exactly what this tool produces. It does not explicitly distinguish itself from nearby siblings like get_passport_grade or issue_passport, 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?

'Useful for monitoring issuance patterns' implies a usage context but gives no when-to-use versus alternatives (e.g. get_passport_grade for a single passport) and no exclusions or prerequisites. Usage is only implied, which matches a 3.

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

list_profilesList Tool ProfilesB
Read-onlyIdempotent

Show available tool profiles. Set APS_PROFILE env var to limit exposed tools (e.g. APS_PROFILE=data).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/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 structurally. The description adds only a configuration note about APS_PROFILE, which is mildly useful context but not behavioral detail about the listing itself.

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 short sentences with the purpose front-loaded and no wasted words. The env-var sentence is relevant but slightly intrusive for a tool with no parameters.

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

Completeness3/5

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

A no-arg read-only listing tool needs little explanation, and no output schema exists so return shape need not be described. However, it never explains what a 'profile' is or what the listing contains, leaving the agent to infer the value of calling 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?

Zero parameters, so the baseline of 4 applies. The description correctly adds no parameter discussion, and the APS_PROFILE mention is environment configuration rather than an input argument.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Show available tool profiles.' Clear about what is returned (a list of profiles), but gives no differentiation from sibling tools like list_tools_for_scope or check_tier that also concern tool/scope listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 second sentence mentions setting APS_PROFILE but frames it as external configuration rather than explaining when to call this tool versus alternatives such as list_tools_for_scope. No when/when-not guidance is offered.

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

list_tasksList TasksB
Read-onlyIdempotent

List all tasks in the coordination store.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/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 fully covered without the description. The description adds only that tasks live in a 'coordination store'; it says nothing about volume, pagination, or whether results are globally scoped, so it adds modest value 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.

Conciseness5/5

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

A single short sentence that front-loads the verb and resource with no filler. Nothing redundant or hedged.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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-parameter list tool whose annotations carry the safety profile, the core need is met, and no output schema means return values need not be described. The gap is scope: 'all tasks in the coordination store' leaves unclear whether this is unpaginated, workspace-scoped, or potentially very large.

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 tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. No misleading parameter hints are given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (list) plus resource (tasks) with a stated location (coordination store), which distinguishes it from the mutation siblings like create_task_brief, complete_task and accept_assignment. It does not, however, explicitly distinguish itself from the adjacent read sibling get_task_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?

There is no statement of when to use this tool versus get_task_detail or any other task-related sibling, and no note about filtering or scoping. The agent must infer usage 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.

list_tools_for_scopeList Tools for Delegation ScopeA
Read-onlyIdempotent

List available MCP tools filtered by delegation scope. Pass your delegation scopes to see which tools you can use. Scopes: identity, delegation, principal, reputation, coordination, communication, governance, commerce, data, gateway, network, temporal, attribution, settlement, capability, mutual-auth. Use ['*'] for all tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopesYesYour delegation scopes, e.g. ['identity', 'delegation', 'commerce']

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered elsewhere. The description adds no behavioral context beyond that — no note on result size, ordering, or how filtering interacts with the caller's actual permissions — so it is only minimally 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?

Three sentences, front-loaded with the core action before the scope enumeration. The long scope list is dense but each item is load-bearing since no enum is present 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 single-parameter, read-only listing tool with no output schema, the definition supplies everything needed to invoke it correctly: the action, the accepted values, and the wildcard escape hatch. Return-shape details are unnecessary 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.

Parameters4/5

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

Schema description coverage is 100% and the single parameter already has an inline example, so the baseline is 3. The description goes beyond the schema by enumerating the full set of 16 valid scope values and the ['*'] wildcard, which the schema does not list — meaningful added semantics for an un-enumerated string 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?

States a specific verb and resource ('List available MCP tools') plus the filtering dimension ('by delegation scope'), which is enough for an agent to distinguish it from other list_* siblings such as list_agents or list_profiles. It does not explicitly name an alternative tool, 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?

'Pass your delegation scopes to see which tools you can use' gives a clear trigger for calling the tool, and the wildcard instruction ('Use [*] for all tools') covers the broad-query case. There is no explicit when-not guidance or named alternative, so it is clear context rather than full routing.

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

load_values_floorLoad Values FloorB
Idempotent

Load a Values Floor from YAML. Sets the floor principles for policy evaluation.

ParametersJSON Schema
NameRequiredDescriptionDefault
yamlYesValues Floor YAML content

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnly=false, idempotent=true, destructive=false, so the mutation and repeat-safety profile is covered. The description adds the downstream purpose (policy evaluation) but says nothing about what happens to an existing floor, whether authorization is required, or validation 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.

Conciseness5/5

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

Two short sentences, no filler, with the action and its purpose front-loaded. Every clause 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?

For a one-parameter, no-output-schema tool with annotations covering safety, the description is adequate but omits the operational context an agent needs: prerequisites, whether the floor is replaced or merged, and 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 coverage is 100% and the single 'yaml' parameter is documented as 'Values Floor YAML content', which the description essentially restates. Baseline 3 is correct; no extra format or structural guidance is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (Load) and resource (Values Floor) plus the input format (YAML), and adds the effect: setting floor principles used in policy evaluation. It does not explicitly contrast with related siblings such as attest_to_floor, 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?

No when-to-use or when-not-to-use guidance, no prerequisites (authority, prior floor state), and no alternative named. The agent must infer that this is the setup step before policy evaluation.

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

mutualAuthBuildCertificateBuild Mutual-Auth CertificateA
Read-onlyIdempotent

Build and sign a mutual-auth certificate identifying an agent or information system. Returns the signed MutualAuthCertificate object ready to carry into a handshake. The issuer's Ed25519 private key (hex) signs over the canonical (JCS) form.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesRole of the subject this cert identifies
bindingYesFor an agent: the APS agent_id. For an IS: the resource domain (e.g., mcp://api.bank.com)
issuer_idYesIssuer identifier
not_afterYesLatest valid time (unix ms)
not_beforeYesEarliest valid time (unix ms)
subject_idYesStable subject identifier (e.g., agent DID, IS endpoint URL)
issuer_roleYesRole of the issuer
capabilitiesNoOptional capability tags
attestation_gradeNoFor agents: APS attestation grade 0-3
issuer_pubkey_hexYesEd25519 public key (hex) of the issuer
issuer_privkey_hexYesEd25519 private key (hex) of the issuer — used to sign
subject_pubkey_hexYesEd25519 public key (hex) of the subject
supported_versionsYesProtocol versions supported, highest first (e.g., ['1.0'])

TDQS

A4.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 genuine behavioral detail: signing is done by the issuer's Ed25519 private key over the JCS canonical form, and the return value is the signed certificate object. It does not state key-handling caveats or failure modes, but the extra signing context is real 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.

Conciseness5/5

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

Three sentences, front-loaded with purpose, then return value, then the signing detail. No filler; each sentence carries distinct 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 13-parameter (11 required), no-output-schema tool, the description adequately conveys what is produced and how it is signed, and the schema documents every parameter. It stops short of describing the returned certificate's fields or any error conditions, which is a minor gap given 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.

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 issuer_privkey_hex signs over the canonical (JCS) form, clarifying the signing input and which key is consumed for signing rather than merely 'used to sign'. Other 12 parameters are left entirely 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?

The description names a specific verb pair and resource ('Build and sign a mutual-auth certificate') and scopes the subject ('identifying an agent or information system'), which implicitly separates it from the verify/derive siblings in the mutualAuth family. An agent knows exactly what artifact 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?

'Ready to carry into a handshake' implies this is the issuance step preceding a mutual-auth exchange, but no explicit when-to-use or when-not-to-use guidance is given, and no sibling (e.g., mutualAuthVerifyAttest) is named as an alternative. 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.

mutualAuthDeriveSessionDerive Mutual-Auth SessionA
Read-onlyIdempotent

Derive the shared mutual-auth session record from both sides' Attests. Both parties MUST compute identical session_id given identical inputs (canonical JCS + sha256 of chosen_version, both cert ids, both nonces). Returns a MutualAuthSession with session_id + both certificates + expiry bounds, or failure reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
now_msNoCurrent unix ms — defaults to Date.now()
policyYesMutualAuthPolicy
is_attestYesThe information system's MutualAuthAttest
agent_attestYesThe agent's MutualAuthAttest

TDQS

A3.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, non-open-world), so the bar is lower. The description adds real behavioral context: the deterministic computation contract (identical session_id from identical inputs via canonical JCS + sha256 of chosen_version, both cert ids, both nonces) and the failure mode. This goes beyond what annotations disclose.

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, front-loaded with the core action before the determinism detail and return value. Every sentence carries information, though the parenthetical formula is dense; it earns its place by explaining the idempotency contract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 return shape (MutualAuthSession with session_id, both certificates, expiry bounds) and the failure path. Combined with 100% schema coverage, an agent has what it needs 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 schema already documents all four parameters, establishing a baseline of 3. The description references the derivation inputs (nonces, cert ids, chosen_version) but does not map them to specific parameter names, adding only marginal meaning over 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 gives a specific verb ('Derive') and resource ('shared mutual-auth session record') and scopes it ('from both sides' Attests'). This is clearly distinct from siblings like mutualAuthBuildCertificate, mutualAuthVerifyAttest, and mutualAuthVerifyTrustBundle, which build/verify rather than derive a session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 prerequisite that both parties' Attests must exist before deriving a session, but there is no explicit when-to-use statement or named alternative among the mutualAuth* siblings. An agent must infer the sequencing rather than being told it.

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

mutualAuthVerifyAttestVerify Mutual-Auth AttestA
Read-onlyIdempotent

Verify a MutualAuthAttest against policy and trust anchors. Runs all 10 verification checks: signature, version negotiation, nonce match, timestamp freshness, certificate validity, issuer anchor check, binding constraints, downgrade detection, attestation grade policy, capability policy. Returns ok:true on success or a failure reason on rejection.

ParametersJSON Schema
NameRequiredDescriptionDefault
attestYesMutualAuthAttest to verify
now_msNoCurrent unix ms — defaults to Date.now()
policyYesMutualAuthPolicy (accepted_versions, min_agent_grade, required_capabilities, max_clock_skew_ms, max_session_ms)
trust_anchorsYesTrustAnchor[] — local trusted roots
revoked_anchor_idsNoIDs of anchors revoked since the bundle was issued
expected_own_nonce_b64YesThe nonce we sent in our own prior hello or attest
expected_peer_nonce_b64YesThe nonce the peer sent in their prior hello or attest

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 closed-world, so the safety profile is covered. The description adds real value beyond that by disclosing the exact verification surface (10 named checks) and the outcome contract (ok:true or a failure reason), which matters since 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.

Conciseness4/5

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

Three sentences with the core action front-loaded and no filler. The 10-check list is long but each item is a distinct verification step and earns its space; it could be compressed slightly but is not 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?

For a verification tool with no output schema, no nested objects, and full annotation coverage, the description supplies the missing return contract and the check inventory an agent needs to call it correctly. It stops short of permission/prerequisite or failure-taxonomy detail, but nothing essential 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 every parameter is already documented in the schema and the baseline is 3. The description mentions 'policy and trust anchors' generically but adds no parameter-level semantics (e.g., what triggers each failure, nonce orientation, revoked_anchor_ids handling) beyond what structured fields already carry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (Verify) and resource (MutualAuthAttest) and isolates the scope: against policy and trust anchors. The enumerated 10 checks sharpen what 'verify' covers, but the description never references the close siblings (mutualAuthVerifyTrustBundle, mutualAuthDeriveSession, mutualAuthBuildCertificate), so an agent must infer the boundary from the resource 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?

No when-to-use, when-not, or alternative guidance is given. Nothing tells the agent when to call this versus mutualAuthVerifyTrustBundle or when a prior attest step is a prerequisite. Usage is only implied by the required-parameter set in the schema, not by the text.

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

mutualAuthVerifyTrustBundleVerify Trust Anchor BundleA
Read-onlyIdempotent

Verify a TrustAnchorBundle signature and freshness. Caller supplies the list of trusted publisher public keys (root configuration). Returns ok:true on success or failure reason (untrusted_publisher, signature_invalid, bundle_expired, not_yet_valid).

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleYesTrustAnchorBundle to verify
now_msNoCurrent unix ms — defaults to Date.now()
trusted_publisher_pubkeys_hexYesList of Ed25519 pubkeys (hex) authorized to publish bundles

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish that the tool is read-only, idempotent, non-destructive, and not open-world. The description adds useful behavior beyond that: it explains that the tool checks both signature and freshness, states the success return value, and enumerates failure reasons. It could say more about freshness semantics, but the added failure-mode detail 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.

Conciseness5/5

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

The description is two tightly written sentences. It front-loads the core action, then covers caller responsibility and return behavior without any 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 annotations covering the safety profile and schema covering all three parameters, the description supplies the remaining needed context: purpose, required trusted-key input, success condition, and failure reason codes. No output schema exists, so explicitly describing the return values is important and is handled well.

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 adds meaning by clarifying that the trusted_publisher_pubkeys_hex list is effectively the root configuration supplied by the caller, and by identifying that the target bundle is verified for signature and freshness. The optional now_ms parameter is not discussed in the description, keeping 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?

The description states a specific verb+resource: verify a TrustAnchorBundle signature and freshness. It distinguishes the operation from the neighboring mutualAuth tools (BuildCertificate, VerifyAttest, DeriveSession) by naming the exact artifact and verification 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 saying the caller must supply the trusted publisher public keys as root configuration, but it does not explicitly say when to choose this tool over sibling verification tools or when not to use it. It provides minimum viable context without routing guidance.

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

parse_governance_block_htmlParse Governance Block from HTMLB
Read-onlyIdempotent

Extract a governance block from an HTML page. Looks for APS governance script tags or meta tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYesHTML content to parse

TDQS

B3.3/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, so the safety profile is covered. The description usefully adds the tag types it inspects, but says nothing about behavior when no block is present (error vs empty result) or how retries differ, leaving meaningful behavioral gaps.

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 tight sentences with zero filler, and the core action is front-loaded before the scanning 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?

For a single-param read-only parse tool this is nearly adequate, but with no output schema the description gives no hint of what the extracted block contains or the failure mode when markers are absent, which matters for consuming the result 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% with a single 'html' parameter already documented as 'HTML content to parse'. The description restates the input as an HTML page without adding format, encoding, or size constraints, so 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 names a specific verb (Extract) and resource (governance block) plus the source (an HTML page), and adds the locating mechanism (APS governance script tags or meta tags). It does not, however, distinguish itself from siblings like generate_governance_block or verify_governance_block, which an agent must infer 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?

No when-to-use guidance and no alternatives named. It states what it scans for, but does not tell the agent when this parse step is required versus verify_governance_block or extract-from-other-sources workflows.

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

post_agora_messagePost Agora MessageB

Post a signed message to the Agora feed. Anyone can read, everything is signed.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesMessage type
topicYesTopic channel (e.g. 'coordination', 'governance', 'general')
contentYesMessage body (markdown)
subjectYesOne-line summary
reply_toNoMessage ID to reply to (for threading)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations cover the write/non-idempotent/non-destructive profile, and the description adds two genuine behavioral facts beyond them: the feed is publicly readable and every message is signed. It stops short of stating who may post, whether signing requires a pre-registered key, or whether posted messages are immutable.

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

Conciseness5/5

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

Two short sentences, no filler, with the core action stated first. Nothing in the text is redundant with the title or with other 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?

For a mutation tool with no output schema, the description omits what happens after a post (message ID, threading linkage to reply_to) and any permission/signing prerequisites. Annotations cover the safety profile but the description leaves the posting workflow under-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 coverage is 100% with five well-described parameters including an enum for type, so the schema carries the parameter burden. The description adds no syntax, format, or constraint detail beyond it (e.g., no guidance on topic naming or subject length).

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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+resource: 'Post a signed message to the Agora feed.' An agent can identify it as the write-side counterpart to the read-only get_agora_* siblings. It does not, however, differentiate itself from other messaging siblings such as send_message or broadcast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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, and none of the plausible alternatives (broadcast, send_message, request_intro) are mentioned. The 'Anyone can read' clause hints at audience scope but does not say when this tool is the right channel versus other messaging tools.

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

propose_amendmentPropose Charter AmendmentA

Propose an amendment to a charter. Supplies a full replacement CharterCore, not a patch. The SDK derives the signing preimage and produces the proposer signature. Session state is not an authoritative registry: amendments live only in this process, are lost on restart, and carry no external trust.

ParametersJSON Schema
NameRequiredDescriptionDefault
charter_idYesCharter being amended
descriptionYesHuman-readable description of the change
effective_atNoISO 8601, when the amendment takes effect if approved
proposed_charterYesFull CharterCore replacement, not a patch
proposer_public_keyYes
proposer_private_keyYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly=false, idempotent=false, destructive=false), and the description goes well beyond them by disclosing that session state is non-authoritative, that amendments are lost on restart, and that they carry no external trust. It also explains the SDK derives the signing preimage and produces the signature. Missing only the permission/auth requirements and the post-proposal lifecycle.

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 tight sentences with the core action and replacement-semantics caveat front-loaded, followed by the trust/ephemerality note. No 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 mutation tool with annotations present and no output schema, the description adequately covers ephemerality, trust posture, and replacement semantics. It leaves open what the proposal returns and whether approval is required, which are minor gaps given the annotation 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 coverage is 67%, so several params (proposer_public_key, proposer_private_key, effective_at) lack descriptions. The description reinforces 'full replacement, not a patch' for proposed_charter (already in the schema) and implies the private key drives signing, but adds little new per-parameter meaning, 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?

States a specific verb ('Propose') and resource ('an amendment to a charter'), and adds that it supplies a full CharterCore replacement rather than a patch. It does not explicitly name the adjacent siblings (sign_amendment, verify_amendment, create_charter), so differentiation must be inferred from 'produces the proposer 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?

No guidance on when to use this versus sign_amendment, verify_amendment, or create_charter, and no stated prerequisites for a multi-signature approval flow. The description explains what happens internally but not when an agent should choose this tool.

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

query_contributionsQuery Contributions (Deprecated)C
Read-onlyIdempotent

[deprecated in v3.0.0, use the gateway.aeoess.com REST API] Query the data contribution ledger.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdNo
purposeNo
principalIdNo
minAccessCountNo
sourceReceiptIdNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already cover readOnlyHint, idempotentHint, destructiveHint and openWorldHint, so the safety profile is fully specified structurally. The description's only added behavioral fact is deprecation status, which is useful but thin — no pagination, result limits, or auth/permission requirements are 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?

A single compact sentence with the deprecation notice front-loaded in brackets, which is the right ordering for a dead-end tool. It wastes almost nothing, though the bracketed directive and the purpose sentence could be separated more cleanly.

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 5-parameter query tool with no schema descriptions and no output schema, the definition supplies only a destination for migration and a vague resource label. It tells the agent where to go instead of how this tool behaves, leaving the actual invocation surface undocumented.

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

Parameters1/5

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

There are 5 parameters with 0% schema description coverage and none are required, yet the description explains none of them. An agent cannot tell what agentId, purpose, principalId, minAccessCount, or sourceReceiptId filter on, and no default or combination behavior is 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 description gives a specific verb and resource ("Query the data contribution ledger"), which is clearly more than a restatement of the name. It does not, however, distinguish the tool from near-siblings like aps_build_contributor_query or get_evidence, so an agent must guess at boundaries 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?

It explicitly tells the agent NOT to use this tool and points at a REST/gateway replacement, which is genuine routing guidance. It still gives no positive condition for when this MCP tool is still the right call, so the guidance is one-sided.

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

register_agora_agentRegister Agent in Session AgoraC

Register an agent in the Agora so their messages can be verified.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesAgent ID
agent_nameYesDisplay name
public_keyYesEd25519 public key

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare this is a non-read-only, non-idempotent write, and the description adds only the verification consequence. It never explains what happens if the agent or key is already registered (a real concern given idempotentHint=false), whether the public key must be unique, or what authority is needed to register.

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?

A single front-loaded sentence with no filler or repetition. It is efficiently sized, though arguably too terse to carry any operational 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?

For a 3-parameter registration mutation with no output schema, the definition covers the essential 'what' but omits failure modes, idempotency behavior, and prerequisites. Annotations carry the safety profile, so the remaining gap is moderate rather than severe.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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 three required parameters (agent_id, agent_name, public_key) are already documented in the schema. The description adds no format, uniqueness, or encoding detail beyond what is given, 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 (register) and resource (an agent in the Agora) plus the benefit (messages can be verified), so the purpose is unambiguous. It does not, however, distinguish itself from the adjacent sibling register_agora_public, leaving the agent to infer which registration path 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 when-to-use guidance, no prerequisites (e.g. keys must exist first), and no named alternative. The clause 'so their messages can be verified' implies a workflow but never says when this must be called instead of register_agora_public.

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

register_agora_publicRegister Agent in Public AgoraA

Register your agent in the PUBLIC Agora registry at aeoess.com. Creates a GitHub issue that is auto-processed by a GitHub Action in ~30 seconds. Requires GITHUB_TOKEN env var or pass token directly. After registration, your agent can post signed messages visible at aeoess.com/agora.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoWho operates this agent
tokenNoGitHub personal access token (or set GITHUB_TOKEN env var)
runtimeNoAgent runtime platform (e.g., 'claude', 'gpt-telegram', 'openclaw-github')
capabilitiesNoAgent capabilities

TDQS

A4/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 underlying mechanism (creates a GitHub issue processed by a GitHub Action in ~30 seconds), the auth requirement (GITHUB_TOKEN env var or direct token), and the post-registration outcome (posting signed messages visible at aeoess.com/agora). No contradiction with readOnlyHint=false, openWorldHint=true, idempotentHint=false, or destructiveHint=false.

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

Conciseness5/5

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

Four short, front-loaded sentences with no filler. It leads with the action and registry, then adds mechanism, auth, and outcome in logical order.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 mechanism, auth, latency, and post-registration capability, which is strong context for a registration tool with no output schema. It could still say what is returned on success or what happens if the token is missing, but nothing essential 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 owner, token, runtime, and capabilities. The description repeats the token env-var option but adds no syntax, format, or 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?

States a specific verb ('register your agent') and resource ('PUBLIC Agora registry at aeoess.com'), with the uppercase PUBLIC likely distinguishing it from the sibling register_agora_agent. However, it never explicitly names that sibling, so the differentiation relies on 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?

Implies the tool is used to register an agent and notes the post-registration benefit, but gives no explicit when-to-use/when-not guidance and never mentions the sibling register_agora_agent or 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.

register_data_sourceRegister Data SourceB

Register a data source with terms for agent access. Returns a signed SourceReceipt.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentTypeYesType of data
maxAccessCountNoMax total accesses allowed
allowedPurposesYesAllowed purposes: read, analyze, summarize, generate, recommend, train, embed, redistribute, commercial
compensationTypeNonone
derivativePolicyNoattribution_required
contentCommitmentYesSHA-256 hash of the data content
contentDescriptorYesHuman-readable description of the data
compensationAmountNoAmount per access (for per_access type)
requireAttributionNo
compensationCurrencyNousd

TDQS

B3/5.0
Behavior3/5

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

Annotations already state readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false, covering the safety and mutability profile. The description adds one genuinely useful fact beyond the annotations: the call returns a signed SourceReceipt. It does not disclose auth requirements, what happens on duplicate registration, or the significance of the non-idempotent hint.

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 short sentences, purpose front-loaded followed by return-value fact. No waste, though it is arguably under-specified rather than optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 10-parameter governance tool with no output schema, the description is thin: it names the return artifact but explains none of the terms semantics, required hashes, or access-count limits. The mention of the SourceReceipt compensates partly for the missing output schema, but overall coverage of a complex registration contract is only minimum viable.

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 description coverage is only 60%, so the schema does not fully carry the parameter burden. The description mentions no parameters at all and adds zero semantics beyond the schema, leaving the enum-bearing terms (compensationType, derivativePolicy, allowedPurposes) and their interaction 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?

Names a specific verb (Register) and resource (a data source) plus the key qualifier 'with terms for agent access', so the agent knows this creates an access-controlled data registration. It does not differentiate itself from the many sibling creation tools (create_data_enforcement_gate, create_derivation_receipt, create_artifact_provenance), so a 4 rather than 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 phrase 'for agent access' hints at context but there is no explicit when-to-use, when-not-to-use, or named alternative. With dozens of sibling creation/registration tools, the agent gets no routing signal from this description.

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

remove_intent_cardRemove Intent CardB
DestructiveIdempotent

Remove your IntentCard from the Intent Network. Use when your needs or offers have changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesCard ID to remove

TDQS

B3.3/5.0
Behavior2/5

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

The annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds almost nothing beyond that — the only extra signal is the possessive 'your', hinting at an ownership requirement. It does not say whether the removal is permanent or soft, or what happens to data linked to the card.

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

Conciseness5/5

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

Two short sentences, action stated first and the trigger condition second. No filler and nothing that could be trimmed without losing 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 destructive, one-parameter tool with no output schema, this is minimum viable: annotations carry the destructive/idempotent profile, so the omissions are about consequences rather than safety. It leaves unanswered whether removal is reversible, whether the card ID can be reused, and what happens to intents or matches referencing the card.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 parameter, card_id, and schema description coverage is 100%, so the schema already documents it fully. The description adds no format, provenance, or lookup guidance for the ID, which matches the baseline-3 expectation 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: 'Remove your IntentCard from the Intent Network.' That is clearly distinguishable from siblings like create_intent or evaluate_intent. It stops short of explicitly naming the counterpart tool an agent should consider, so it earns a 4 rather than 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?

'Use when your needs or offers have changed' gives a trigger condition, but no when-not guidance and no alternatives (e.g., whether to create_intent a replacement first, or whether an existing card should be modified instead). Usage is implied by the change-of-circumstances wording rather than fully routed.

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

request_human_approvalBuild Human Approval RequestA
Read-onlyIdempotent

Create an approval request record for a high-value purchase without notifying a human or storing the request. Returns the request ID and expiry.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesPurchase amount
reasonYesWhy this purchase is needed
agent_idYesAgent requesting approval
currencyNoCurrencyusd
merchantYesMerchant name
expires_minutesNoMinutes until approval expires

TDQS

A3.8/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, so the bar is lower; the description still adds real value by clarifying that no human is notified and nothing is stored, which resolves the apparent contradiction with the tool name. It also states the returned ID and expiry. It does not cover validation rules or error conditions.

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 tight sentences, zero filler, with the create action and its critical no-side-effect caveat front-loaded before the return-value sentence. Every clause earns its place.

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

Completeness4/5

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

With no output schema, the description correctly discloses the return values (request ID and expiry). All six parameters are described in the schema. It is largely complete, though it omits where the resulting ID is later consumed (e.g., add_approval_signature).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 six parameters, so the schema already documents amount, reason, agent_id, currency, merchant, and expires_minutes. The description adds no parameter-level detail such as valid ranges for amount or units for expires_minutes, so it sits 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?

States a specific verb and resource ('Create an approval request record for a high-value purchase') and immediately qualifies the scope with 'without notifying a human or storing the request,' which is essential since the tool name implies a real notification. However, it never distinguishes itself from the sibling 'create_approval_request' with a similar name and intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 'for a high-value purchase' implies the usage context, but there is no explicit when-to-use, when-not-to-use, or routing to alternatives such as create_approval_request or add_approval_signature. Usage must be inferred from the description.

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

request_introRequest IntroductionA

Request an introduction to another agent's human based on a match. Both sides must approve before real information crosses.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesBrief message explaining why this intro would be valuable
match_idYesMatch ID from search_matches
target_card_idYesCard ID of the agent you want an intro to
disclose_fieldsNoFields you're willing to share (e.g. ['needs', 'offers', 'openTo'])

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-idempotent, open-world behavior, so the safety profile is covered. The description adds a genuinely valuable behavioral fact absent from the structured fields: the two-sided approval gate before real information crosses, which tells the agent the call initiates a pending exchange rather than completing one.

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

Conciseness5/5

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

Two short sentences with zero padding; the core action is front-loaded and the consent constraint follows immediately as the key caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 it signals the outcome is a pending mutual-approval state. What remains unsaid is minor: what the requester sees after submitting and whether the message is visible pre-approval.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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 optional disclose_fields) are already documented in the schema. The description adds no syntax, format, or semantic detail beyond what the schema provides, 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?

States a specific verb ('request an introduction') and resource ('another agent's human'), plus the match basis that scopes the action. It does not name the complementary sibling respond_to_intro, so the boundary with the receiving side is left 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?

'based on a match' implies a prerequisite (a match_id from search_matches) but the description never states when to use this versus respond_to_intro or search_matches, and gives no exclusions or preconditions beyond the consent rule.

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

resolve_authorityResolve Authority TierA
Read-onlyIdempotent

Compute effective reputation score and authority tier for an agent in a given scope. Returns tier name, autonomy level, spend limit, and effective score.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesScope to check reputation in (e.g. 'code_execution', 'commerce')
agentIdYesAgent ID to check
principalIdYesPrincipal who delegated authority

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). The description goes beyond them by disclosing what the computation returns — tier name, autonomy level, spend limit, effective score — which is meaningful since no output schema exists. It stops short of explaining inputs like how the principal's delegation feeds into 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.

Conciseness5/5

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

Two tight sentences: the computation is front-loaded and the return shape follows. Every clause carries information and nothing is 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?

For a read-only deterministic computation, the description plus 100%-covered schema and absent output schema leaves the agent adequately equipped — the return fields are enumerated in prose. The missing piece is any cue distinguishing this from check_tier or the capability-authority sibling, which the description could have supplied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 parameter (scope, agentId, principalId) is documented in the schema, including a scope example. The description adds no syntax, format, or constraint detail beyond that, 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 — 'Compute effective reputation score and authority tier' — for a given agent and scope, which is clear and unambiguous. However, it does not distinguish itself from plausible siblings like check_tier or aps_capability_evaluate_authority, leaving an agent to guess which tier-resolution 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 when-to-use guidance, no prerequisites, and no mention of alternatives. In a tool list containing check_tier and aps_capability_evaluate_authority, the absence of any routing rule 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.

resolve_lineageResolve Data LineageB
Read-onlyIdempotent

Resolve the full derivation chain for an artifact. Multi-hop with cycle detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxDepthNoMax chain depth (default: 10)
derivativeIdYesID of the derivative to trace

TDQS

B3.3/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 covered. The description adds one genuine behavioral fact beyond that: traversal is multi-hop with cycle detection. It still says nothing about result shape, depth limiting, or what happens on an unresolvable/cyclic graph.

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 tightly scoped sentences with zero filler; the core action is front-loaded and the traversal characteristic follows. Nothing here is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 two-parameter read-only traversal with no output schema, the agent still lacks any sense of what a resolved chain looks like or how a cycle is reported, which matters for a graph-walking tool. Safety is covered by annotations, but the return contract is 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% and both parameters (derivativeId, maxDepth with default 10) are documented in the schema itself. The description's 'multi-hop' hints at the maxDepth dimension but adds no format or semantics beyond what the schema already 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?

States a specific verb ('Resolve') and resource ('full derivation chain for an artifact'), which is concrete enough to separate it from most siblings like resolve_authority or resolve_path_terms. It stops short of explicitly naming a sibling it is not, so it lands at clear-but-undifferentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 such as resolve_rights_propagation, create_derivation_receipt, or compute_governance_taint, and no prerequisites are given. The agent must infer the trigger condition 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.

resolve_path_termsResolve Path TermsB
Read-onlyIdempotent

Resolve governance terms for a specific URL path using aps.txt path overrides.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesURL path to resolve (e.g. /blog/my-article)
apsTxtYesaps.txt JSON content

TDQS

B3.2/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 covered. The description adds the mechanism (aps.txt path overrides), but does not disclose precedence rules, error behavior for unmatched paths, or what is returned, which matters given 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.

Conciseness4/5

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

A single front-loaded sentence with no filler. It is efficient, though the brevity comes at the cost of leaving several questions unanswered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 simple two-parameter resolution tool with rich annotations and full schema coverage, the essentials are present. However, with no output schema the description never indicates what a resolved "governance terms" result looks like, leaving a real gap 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 coverage is 100% and both parameters are documented in the schema. The phrase "for a specific URL path" merely echoes the path parameter and adds no syntax or format detail beyond what the schema already supplies, 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 ("Resolve") and resource ("governance terms for a specific URL path"), with the mechanism ("aps.txt path overrides") named. It is differentiable from related siblings like generate_aps_txt/verify_aps_txt, though it doesn't explicitly contrast itself against 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 prerequisites, and no alternatives. Several siblings (generate_aps_txt, verify_aps_txt, resolve_authority) share vocabulary, so the agent gets no help deciding which resolver to invoke.

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

resolve_rights_propagationResolve Rights PropagationC
Read-onlyIdempotent

Resolve what rights propagate when data is transformed.

ParametersJSON Schema
NameRequiredDescriptionDefault
transformClassYes
sourceDefaultPropagationNoSource-defined default: inherit_full, compensation_only, etc.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — it does not explain what 'resolving' entails, whether it is a pure computation or a stored decision, or how source defaults interact with the transform class.

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 a single short, front-loaded sentence with no wasted words, but its brevity reflects under-specification rather than efficient communication; nothing is given beyond a restatement of the title.

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 two-parameter governance computation tool with no output schema, a required parameter that is completely undocumented, and no indication of what a 'resolution' result looks like, the description leaves an agent unable to invoke the tool correctly. Annotations cover only the safety profile.

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 50%: sourceDefaultPropagation has a description listing example values, but the required transformClass parameter has no description and no enum. The description text does not compensate at all — it never mentions transform classes, default propagation values, or the relationship between the two 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 description gives a verb (resolve) and a resource (rights propagation during transformation), so the general domain is clear. However, 'resolve' is ambiguous — it could mean a lookup, a computation, or a policy determination — and nothing distinguishes it from siblings such as resolve_authority, resolve_lineage, resolve_path_terms, or compute_governance_taint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 prerequisite, and no named alternative. An agent cannot tell from this sentence when rights-propagation resolution is required versus calling check_usage_permitted or compute_governance_taint.

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

respond_to_introRespond to IntroductionB
Destructive

Respond to an introduction request. Approve to share your disclosed information, or decline.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoOptional response message
approvedYesWhether to approve the introduction
intro_idYesIntro request ID
disclose_fieldsNoFields you're willing to share back

TDQS

B3.4/5.0
Behavior3/5

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

The description adds real context that annotations don't carry: approving shares disclosed information, so the agent understands the disclosure consequence. However, it omits the irreversibility and non-idempotency implied by destructiveHint=true and idempotentHint=false, and says nothing about what happens to a declined request.

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, front-loaded with the action and then the branching outcome; no filler. Slightly under-specified rather than padded, but structurally clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 four-parameter mutating tool with no output schema and a destructive annotation, the description covers the core action but leaves irreversibility, disclosure scope details, and post-response effects 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 four parameters are already documented; the description reinforces the meaning of approved and hints at disclose_fields but adds no format or constraint 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?

States a specific verb (respond) and resource (introduction request), and names the two outcome modes (approve/decline), which separates it from the counterpart request_intro. It does not explicitly name siblings, but the action 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?

The description explains what approve versus decline means, which implicitly tells the agent when to pick each branch, but gives no condition for responding at all versus ignoring, delegating, or using request_intro, and no prerequisites.

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

review_evidenceReview Evidence PacketB

[OPERATOR] Review an evidence packet. Score it and approve, rework, or reject.

ParametersJSON Schema
NameRequiredDescriptionDefault
scoreYesQuality score 0-100
issuesNoSpecific issues found
task_idYesTask ID
verdictYesYour verdict
packet_idYesEvidence packet ID to review
rationaleYesWhy this verdict
thresholdNoMinimum passing score

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already disclose that this is a non-read-only, non-idempotent, non-destructive, closed-world operation. The description adds the useful [OPERATOR] role constraint and clarifies that the action produces a verdict, which the annotations don't express. It does not describe side effects of approve/rework/reject or what happens on repeat calls.

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 short sentences with zero filler, and the [OPERATOR] qualifier is front-loaded. It is efficient, though it is arguably terse to the point of under-specifying an important mutation action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 schema fully documents all parameters and annotations cover the safety profile, so an agent can technically call it correctly. However, for a 7-parameter state-changing decision tool with no output schema, the description omits what a review entails, the consequences of each verdict, and role prerequisites beyond the tag.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations 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 seven parameters (including the score bounds and verdict enum) are already documented in the schema. The description adds no syntax, format, or threshold-meaning 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?

States a specific verb (review) and resource (evidence packet) plus the concrete actions taken (score, approve/rework/reject). This distinguishes it from read-oriented siblings like get_evidence or classify_evidence_quality, though it does not name any 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?

There is no when-to-use or when-not-to-use guidance and no mention of alternatives such as get_evidence or classify_evidence_quality. The [OPERATOR] tag implies a role restriction, which is a hint, but the description never states the conditions that should lead an agent to select this tool over its siblings.

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

review_promotionReview Agent Promotion (Unavailable)A
Read-onlyIdempotent

Unavailable with SDK 8. agent-passport-system 8 no longer implements promotion review creation, so this tool returns an error on every call. No review is created, nothing is signed, and the session promotion history is not changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesScope of the promotion
toTierYesTarget tier level (0-4)
agentIdYesAgent being reviewed for promotion
verdictYesPromotion verdict
reasoningYesExplanation for the verdict
principalIdYesPrincipal who delegated to the agent
probationDaysNoProbation period in days (default: 7)

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, and the description is fully consistent with them while adding critical context not present in the structured fields: no review is created, nothing is signed, and promotion history is untouched. For a mutation-sounding verb like 'review', this side-effect disclosure is exactly what prevents a wrong call.

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 with the availability status front-loaded in the first four words. Every sentence carries distinct information: the SDK version, the consequence, and the three specific non-effects.

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?

Nothing an agent needs is missing. It knows the tool is dead, why, and that it is side-effect free, so no output schema or further behavioral detail is required. Adding parameter guidance would be noise for a tool that cannot run.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 seven parameters (scope, toTier, agentId, verdict, reasoning, principalId, probationDays) is documented in the schema itself. The description adds no parameter-level detail, which is defensible since the call always fails, but it neither compensates for nor extends 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 description names the specific operation (promotion review creation) and immediately qualifies it as unavailable, so an agent knows both what the tool nominally does and that it cannot succeed. It is trivially distinguishable from siblings like get_promotion_history, which remains functional.

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 when-not-to-use guidance: the tool returns an error on every call, so it should never be invoked. It stops short of naming the alternative an agent should use instead (e.g., get_promotion_history) for reading promotion state, which is the only remaining gap.

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

revoke_delegationRevoke DelegationA
DestructiveIdempotent

[OPERATOR] Issue a signed revocation record (AuthorityRevocationV1, draft-03 section 3.5.1 direct revocation) for an AuthorityDelegationV1. Signs the record with this server's key, verifies it against the delegation, records it in this process's in-memory revocation store, and returns the signed record as JSON for the caller to publish or verify. Only the delegation's issuer may revoke, so the delegation must verify under this server's public key. The record's revoker is the delegation's issuer and its verification_method is the delegation's own. Descendants are not given separate records: a chain verifier that holds this record rejects every chain containing the delegation as an ancestor. The store is in-memory for this process only, is lost on restart, and is not consulted by verify_delegation, which checks legacy delegations. Legacy delegation records from create_delegation and sub_delegate (del_...) are refused, because SDK 8 has no revocation for them. A repeat call for an already revoked delegation returns the earlier record unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional free-text detail, written to the record's detail member.
cascadeNoKept for compatibility, no effect on the output. Descendants are invalidated at chain verification through this ancestor record whatever the value, and no per-descendant records are issued.
delegationNoThe AuthorityDelegationV1 to revoke (record_type aps:authority-delegation:v1), as a JSON string or object. Required for a revocation to be issued.
reason_codeYesMachine-readable reason, written to the record's reason_code. Any non-empty string is accepted, because the draft fixes no grammar for it.
delegation_idNoOptional. Checked against delegation.delegation_id when both are given. A legacy session id (del_...) is refused with an explanation.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructive=true and idempotent=true, and the description reinforces them with real mechanism: an in-memory store that is lost on restart, is not consulted by verify_delegation, returns the earlier record on repeat calls, and invalidates all descendant chains at verification time. This is behavior an agent cannot 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.

Conciseness4/5

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

The main action and its output are front-loaded, and the paragraph is dense with non-redundant constraints. There is minor repetition, however: descendant invalidation is stated both in the prose and in the cascade parameter, and verify_delegation is mentioned twice.

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 signing/mutation tool with no output schema, the description covers the return payload ('returns the signed record as JSON for the caller to publish or verify'), persistence semantics, descendant handling, and legacy refusal. Nothing an agent needs 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%, so the baseline is 3, and the description largely restates what the parameter descriptions already say (reason_code grammar unconstrained, cascade having no effect, delegation_id checked against delegation.delegation_id). It adds little meaning beyond the schema 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 and resource ('Issue a signed revocation record (AuthorityRevocationV1 ...) for an AuthorityDelegationV1') and names the exact record types involved. It distinguishes itself from siblings by ruling out legacy del_... delegations from create_delegation/sub_delegate and by noting verify_delegation does not consult this store.

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 preconditions ('Only the delegation's issuer may revoke, so the delegation must verify under this server's public key') and explicit exclusions ('Legacy delegation records ... are refused, because SDK 8 has no revocation for them'). It also clarifies the idempotent repeat-call path, leaving little to inference.

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

revoke_endorsementRevoke EndorsementB
Destructive

Revoke a principal's endorsement of an agent. 'I no longer authorize this agent.'

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYesWhy the endorsement is being revoked
endorsement_idYesEndorsement ID to revoke

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds nothing beyond restating the operation - it never says whether the revocation is permanent, what happens to the agent's standing, or what the caller must be authorized to do.

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 short sentences with the action front-loaded and no filler. The second sentence is an illustrative quote rather than new information, so it is efficient but not maximally information-dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 two-parameter destructive mutation with no output schema, the description is sufficient to invoke the tool since the annotations carry the safety profile and the schema documents both inputs. It falls short on consequences and reversibility, which matter for a revocation 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% and both parameters (endorsement_id, reason) are documented in the schema itself. The description adds no syntax, format, or sourcing 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?

States a specific verb+resource: 'Revoke a principal's endorsement of an agent.' It is clearly the inverse of endorse_agent and distinct from verify_endorsement, though it never names those siblings explicitly, so differentiation is left 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?

The quoted scenario 'I no longer authorize this agent' implies when this tool is appropriate, but there is no explicit when-to-use/when-not guidance, no mention of alternatives such as revoke_delegation, and no stated prerequisites or authority requirements.

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

rotate_keyRotate Agent KeyA
Read-onlyIdempotent

Rotate an agent's Ed25519 key. Planned mode: configurable overlap (default 24h). Emergency mode: immediate old-key retirement. Builds a rotated DID document for the old key, generates a new key pair, and returns a text summary with the rotation state, the first 16 hex characters of the old and new public keys, the full new private key (redacted on a remote server, MCP_TRANSPORT=sse or MCP_REMOTE=1, as in generate_keys), the DID, the rotation log entry count, and the activation time. The DID document itself is not returned, and nothing is persisted. Delegation revocation is not integrated in this server, so a non-empty delegation_ids_to_revoke is refused before any key is generated.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
agent_nameNoAgent name for the passport (default: current session)
old_private_keyYesHex-encoded private key being rotated FROM
activation_delay_hoursNoPlanned mode overlap hours (default: 24)
delegation_ids_to_revokeNoMust be empty or absent. Delegation revocation is not integrated in this server, so a non-empty list is refused and nothing is rotated.

TDQS

A4.6/5.0
Behavior5/5

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

With readOnlyHint=true and destructiveHint=false already asserted, the description supplies the missing behavioral context that reconciles them: 'nothing is persisted', the DID document is not returned, copy counts out to a text summary, the full new private key is redacted under MCP_TRANSPORT=sse or MCP_REMOTE=1, and a non-empty delegation_ids_to_revoke is refused before any key is generated. That pre-empts the most likely operational surprises (remote redaction, hard refusal) far 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.

Conciseness4/5

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

The purpose and mode semantics are front-loaded, and every subsequent clause covers a distinct, genuinely useful fact (returned fields, redaction, non-persistence, refusal path). It is denser and longer than most definitions, but the length is earned by the number of edge cases it discloses.

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, so the description correctly carries the entire return-value burden and enumerates the summary contents (rotation state, key prefixes, DID, log entry count, activation time) plus the redaction and refusal behaviors. Nothing an agent needs to call this mutation-shaped computation safely appears to be 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 80% and the enum on 'mode' is self-documenting, so the baseline is already 3; the description adds meaning on top by spelling out what planned vs emergency actually do and by restating the delegation_ids_to_revoke refusal rule in prose. It leaves activation_delay_hours and agent_name to the schema, so it is additive but not exhaustive.

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 ('Rotate an agent's Ed25519 key') plus the two operational modes, immediately distinguishing it from generate_keys and the read-only rotation helpers (verify_rotation_chain, is_key_active). An agent knows exactly what the call performs and what it 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 Guidelines4/5

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

It gives real when-to-use context by contrasting 'Planned mode: configurable overlap (default 24h)' against 'Emergency mode: immediate old-key retirement', so an agent can pick a mode. It does not, however, name the sibling alternative (e.g. generate_keys for a fresh identity) or state when not to rotate at all, 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.

search_matchesSearch Intent Network MatchesB
Read-onlyIdempotent

Search the Intent Network for people relevant to you. Returns ranked matches from all agents worldwide based on need/offer overlap, tag similarity, and budget compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_scoreNoMinimum relevance score 0-1 (default: 0.1)
max_resultsNoMaximum results to return (default: 10)
category_filterNoOnly match within this category

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds useful behavioral context — results are globally scoped ("all agents worldwide") and ranked by named signals — but says nothing about pagination, result count behavior, or what a match object contains.

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 tight sentences, front-loaded with the action and scope, then the ranking basis. No filler or 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?

For a read-only search tool with no output schema and full param coverage, the definition is nearly sufficient. It discloses scope and ranking criteria; only the shape of a returned match is left implicit, which is a minor omission given the absent 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 min_score, max_results, and category_filter are already documented. The description's ranking signals (need/offer, tags, budget) do not map cleanly onto those parameters and add no syntax or format detail, leaving the baseline of 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 (Search) and resource (Intent Network) and even describes the ranking basis (need/offer overlap, tag similarity, budget compatibility). It's clear what the tool does, but it never contrasts itself with related siblings like list_profiles, request_intro, or evaluate_intent, so the agent gets no differentiation 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?

"For people relevant to you" implies a purpose but gives no explicit when-to-use, when-not-to-use, or alternative. With dozens of overlapping discovery/intent siblings (list_profiles, request_intro, evaluate_intent), 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.

send_messageSend Agent MessageB

Send a signed message to another agent. Message is written to comms/to-{agent}.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient agent name (e.g., 'aeoess', 'portalx2', 'claude')
dataNoStructured data payload
typeNoMessage type (default: 'message')
messageYesMessage body
subjectYesMessage subject
priorityNoPriority: low, normal, high, critical

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=false, so the mutation/retry profile is covered. The description adds genuinely useful context beyond that: the message is signed and persisted to a concrete file path (comms/to-{agent}.json). It omits auth/key requirements implied by 'signed' and any failure behavior, so it is additive but not rich.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and followed by the side effect. No filler, no restatement of the title, nothing that fails to 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 6-parameter write tool with annotations and no output schema, safety and return-value concerns are adequately covered, and the destination path is disclosed. What is missing is routing context relative to the many sibling messaging tools and any indication of preconditions or error modes, leaving the agent under-informed about when this 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 description coverage is 100%, so all six parameters (including type default and priority) are already documented in the schema; the baseline is 3. The description only implies the recipient via 'another agent' and adds no format, constraint, or enum detail beyond the schema, notably absent for priority 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?

States a specific verb+resource ('Send a signed message to another agent') and adds the persistence mechanism (written to comms/to-{agent}.json), so the operation is unambiguous. It does not, however, distinguish itself from siblings like broadcast, post_agora_message, or request_human_approval, which are all message-emitting 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?

No when-to-use guidance at all: nothing says when to use this direct send versus broadcast (fan-out) or post_agora_message (topic-based). No prerequisites such as whether the recipient must be a registered agent are given. The agent must infer routing from tool names alone.

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

sign_amendmentSign Charter AmendmentB

Add a signature to a proposed amendment. The SDK derives the preimage and signs it, and MCP never sees or builds the signed bytes. Session state is not an authoritative registry: amendments live only in this process, are lost on restart, and carry no external trust.

ParametersJSON Schema
NameRequiredDescriptionDefault
signer_roleYesThe key class the charter's amendment policy counts this signature against
amendment_idYes
signer_public_keyYes
signer_private_keyYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive local mutation. The description adds genuinely useful context beyond them: the SDK derives the preimage and MCP never handles signed bytes, and amendments are process-local, lost on restart, and carry no external trust. It stops short of saying what happens when a signature is added twice (relevant given idempotentHint=false) or what errors occur.

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, front-loaded with the action, then the security model, then the state caveat. Every sentence carries information and none is padding, though the density is high for a short 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?

For a 4-required-param mutation with no output schema, the description covers purpose, trust model, and persistence semantics but leaves parameter formats, error behavior, and role/key prerequisites unaddressed. It is adequate on the behavioral axis and thin on the operational one.

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 description coverage is only 25% – only signer_role is documented. The description implies amendment_id refers to the proposed amendment but adds no meaning for signer_public_key, signer_private_key, or their expected formats, so it does not compensate for the coverage 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 states a specific verb+resource: 'Add a signature to a proposed amendment,' which is distinguishable from the related propose_amendment and verify_amendment siblings. It does not, however, explicitly contrast with sign_charter or add_approval_signature, which are the closest-looking siblings, so differentiation requires 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 guidance on when to use this tool versus sign_charter or add_approval_signature, nor any stated prerequisites (e.g., that a proposed amendment must exist, or what signer_role values are valid). The description explains the mechanism but never the conditions for invocation.

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

sign_charterSign CharterC

Add a founding signature to a charter.

ParametersJSON Schema
NameRequiredDescriptionDefault
charter_idYes
signer_roleNoboard
signer_public_keyYes
signer_private_keyYes
resigner_private_keyYesKey to re-sign the outer charter envelope

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds only the word 'founding' and omits critical behavioral context: that this is an irreversible cryptographic signing action, that private keys are consumed, and what happens on re-signing the outer envelope.

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?

A single front-loaded sentence with no wasted words, but it is arguably over-terse for a 5-parameter cryptographic mutation tool. Efficient but under-informative.

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 high-complexity signing tool with 5 params (4 required), 20% schema coverage, and no output schema, the description is far too thin. It should at minimum explain the signing flow, key roles, and the effect on the charter envelope.

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

Parameters1/5

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

Schema description coverage is only 20% (just resigner_private_key), leaving charter_id, signer_role, signer_public_key, and signer_private_key undocumented. The description adds no parameter meaning at all, despite the sensitivity of passing private keys, so it fails to compensate for the coverage 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 states a specific verb (add signature) and resource (charter) with a clear qualifier ('founding'). It reasonably distinguishes the tool from siblings like sign_amendment and add_approval_signature, though it doesn't explicitly contrast 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 statement of when to use this tool versus create_charter, verify_charter, or sign_amendment, nor any prerequisites such as requiring an existing unsigned charter. Usage must be inferred 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.

sub_delegateSub-Delegate AuthorityB

Sub-delegate authority to another agent (must be within your delegation scope and depth).

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesScopes to grant (must be subset of parent)
spend_limitYesMaximum spend (must be <= parent)
delegated_toYesPublic key of the agent receiving sub-delegation
parent_delegation_idYesYour delegation ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare the safety profile (write, non-idempotent, not open-world, not destructive). The description adds the meaningful invariant that sub-delegation is bounded by the caller's own scope and depth. It omits other behavior an agent needs: that non-idempotency means repeated calls create separate delegations, and what happens when limits are exceeded.

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?

A single front-loaded sentence with the action first and the constraint second; no filler. It is lean to the point of being sparse, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 full schema coverage and annotations present, and no output schema, the description covers the core action and its bound. For an authority-granting operation in a governance-heavy toolset, it should still say whether the grant is revocable, how the resulting delegation is identified, or how it relates to revoke_delegation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 documented in the schema with their subset/bounds constraints. The description's 'within your delegation scope and depth' largely restates the schema's own 'must be subset of parent' / 'must be <= parent' notes rather than adding new 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?

Specific verb+resource: granting (sub-delegating) authority to another agent. The 'sub-' prefix and 'within your delegation scope' implies a derived delegation distinct from root-level siblings like create_delegation or create_v2_delegation, but it never names or contrasts with 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?

The parenthetical prerequisite ('must be within your delegation scope and depth') tells the agent the condition under which the call is valid, which implies when to use it. However, there is no explicit when-not guidance, no mention of revoke_delegation or create_delegation as alternatives, and no statement about what happens on failure.

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

submit_deliverableSubmit DeliverableC

[ANALYST/BUILDER] Submit your final output tied to evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe deliverable content
spec_idYesDeliverable spec ID from the brief
task_idYesTask ID
gaps_flaggedYesNumber of gaps explicitly flagged
citation_countYesNumber of citations in output
evidence_packet_idsYesEvidence packet IDs used

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare the write profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), so the description only needs to add context such as whether a resubmission overwrites, duplicates, or is rejected after review. It adds none of this, and nothing about validation failures or downstream review.

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?

A single front-loaded sentence with a role tag and no filler. It is efficient, though the extreme brevity for a six-required-parameter submission tool borders on under-specification rather than true conciseness.

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 six required parameters, no output schema, and terminal-sounding semantics, the description never says whether submission is final, what happens after (review/acceptance), or how the citation and gap counts are validated. Annotations cover the safety profile, but the operational picture remains 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% across six required parameters, so the baseline is 3. The phrase 'tied to evidence' loosely signals that evidence_packet_ids must reference real packets, but citation_count and gaps_flagged — self-reported quality metrics — get no interpretive guidance in either field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (Submit) and resource (final output/deliverable) and tags the acting roles as [ANALYST/BUILDER], which helps an agent self-select. It does not, however, distinguish itself from closely related siblings such as submit_evidence or complete_task, which also move work product along.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 [ANALYST/BUILDER] tag implies who may call it, but there is no statement of when to submit versus using complete_task, submit_evidence, or handoff_evidence, and no prerequisites or ordering constraints (e.g., that a task brief/spec must exist first).

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

submit_evidenceSubmit Evidence PacketB

[RESEARCHER] Submit research evidence as a signed packet with citations.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimsYesEvidence claims with citations
task_idYesTask ID
methodologyYesHow you gathered this evidence

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutation profile is partly covered. The description adds one useful trait not in the annotations — that the packet must be 'signed' — but omits behavioral consequences an agent needs, notably that non-idempotency means resubmission may duplicate a packet rather than update 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?

A single front-loaded sentence with the role tag, verb, and object in sequence; no filler. It is perhaps too terse given the structured payload it expects, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 return values need not be explained, and annotations carry the safety profile. However, the input requires a nested claims array with six required sub-fields per claim, and the description never hints at that structure or at the 10+ word quote constraint, leaving the agent underprepared for a non-trivial 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% and all three required parameters (task_id, claims, methodology) are documented in-schema, including the nested claim fields and the enum for confidence. The description adds nothing beyond repeating 'citations', so 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?

States a specific verb ('Submit') and resource ('research evidence as a signed packet with citations'), plus the [RESEARCHER] role tag that scopes who calls it. It does not, however, distinguish itself from near-siblings like review_evidence, handoff_evidence, or submit_deliverable, so an agent must infer the boundary from names 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?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as handoff_evidence for passing packets onward. The role tag is the only routing signal.

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

supersede_v2_delegationSupersede v2 DelegationB
Destructive

Supersede a v2 delegation. Scope narrowing needs justification. Scope expansion also needs independent reviewer.

ParametersJSON Schema
NameRequiredDescriptionDefault
trust_epochNo
valid_untilYes
justificationYes
expansion_reviewerNoRequired if scope expands
new_scope_categoriesYes
original_delegation_idYes
expansion_reviewer_private_keyNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the mutation/repeat-call profile is covered. The description adds governance policy context (justification and independent reviewer requirements) beyond the annotations, but omits key behavior such as whether the original delegation is invalidated, whether the operation is reversible, and what authorization is needed.

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 short sentences with no filler, and the core action is front-loaded before the conditional constraints. Slightly clipped phrasing ('also needs independent reviewer') costs a little clarity but wastes 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?

For a destructive, 7-parameter mutation tool with no output schema and very low schema coverage, the description covers the two most consequential conditional rules but leaves most parameters and the post-supersede state of the original delegation unexplained. It is adequate but has clear 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 only 14% across 7 parameters, so the description should carry more weight. It usefully explains the conditional requirement for expansion_reviewer and the need for justification, but says nothing about original_delegation_id, new_scope_categories, valid_until, trust_epoch, or expansion_reviewer_private_key.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 ('Supersede a v2 delegation'), which is distinguishable from siblings like create_v2_delegation, revoke_delegation, and sub_delegate. It does not, however, explicitly contrast itself with those siblings or state what 'supersede' means relative to 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?

It gives conditional rules ('scope narrowing needs justification', 'scope expansion also needs independent reviewer'), which is genuine guidance for choosing inputs, but it never says when an agent should supersede rather than revoke or create a new delegation. Usage is implied rather than framed against alternatives.

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

update_reputationUpdate Agent ReputationA

Update an agent's reputation after a task result. Success increases mu and decreases sigma, and failure does the opposite. Higher evidence class = larger effect.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesReputation scope
agentIdYesAgent whose reputation to update
successYesWhether the task succeeded
principalIdYesPrincipal ID
evidenceClassYesComplexity of the task

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the bar is lower, and the description still adds real behavioral substance: the direction of effect (mu up / sigma down on success, reversed on failure) and the scaling rule for evidence class. It omits permissions/auth requirements, whether effects accumulate across calls, and any rate or volume constraints.

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 short sentences, zero filler, and the core action plus its trigger are front-loaded before the model mechanics. Every sentence carries distinct 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?

Given five required parameters (all schema-documented), rich annotations, and no output schema, the description covers purpose, mechanism, and trigger adequately. The one gap is what the call returns — the new mu/sigma values or just an acknowledgement — which the agent cannot learn from anywhere else since no output schema exists.

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 beyond the schema by explaining what the 'success' flag does to the underlying estimate and by clarifying that 'evidenceClass' scales the magnitude of the effect rather than merely labeling task complexity. It adds nothing about 'scope' or 'principalId', which are the two least self-explanatory 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 uses a specific verb+resource ('Update an agent's reputation') and adds a clear trigger scope ('after a task result'), which separates it from endorsement-style siblings like vouch_reputation or apply_reputation_downgrade. It does not explicitly name any sibling, so the differentiation 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?

Usage context is present but implied: 'after a task result' tells the agent the general moment to call it, and success/failure framing suggests it is outcome-driven. It never says when not to use it or how it differs from adjacent reputation tools (vouch_reputation, apply_reputation_downgrade), leaving the agent to 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_temporal_rightsValidate Temporal RightsB
Read-onlyIdempotent

Validate a TemporalRights object by checking its validity window, grace period, supersession, and challenge window.

ParametersJSON Schema
NameRequiredDescriptionDefault
valid_fromYesISO datetime
grace_untilNo
valid_untilYesISO datetime
effective_atNo
superseded_atNo
challenge_untilNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare a full safety profile (readOnly, idempotent, non-destructive, closed-world), so the description need not restate safety. It adds only the list of validated dimensions. It does not say what a failed validation produces (exception vs. boolean vs. error list), which matters because there is no output schema to fall back on.

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?

A single efficient sentence, front-loaded with the verb and object, with no filler. It is not padded or repetitive. It could have used a second sentence productively for return semantics, but on conciseness alone it is strong.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 validator with six parameters at 33% schema coverage and no output schema, the description covers the what but not the outcome. It never explains what the caller receives or what happens on invalid input, leaving the result contract entirely unspecified. The annotation set covers safety, but the behavioral contract around validation results 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 only 33%: valid_from and valid_until are documented as ISO datetimes, while grace_until, effective_at, superseded_at, and challenge_until are undocumented. The description partially compensates by naming the corresponding concepts (grace period, supersession, challenge window), which helps map fields to meaning. It still adds no format or ordering semantics for the bare 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 (validate) and resource (TemporalRights object) and enumerates the four aspects checked: validity window, grace period, supersession, and challenge window. This is clear and non-tautological. It does not differentiate itself from siblings, but the sibling list contains no obviously competing validation tool, so the omission is minor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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, what preconditions must hold, or what alternative to reach for instead. The enumeration of checked fields implies the tool's domain but gives no call-site guidance. An agent cannot tell from the text whether this should be called before or after issuing rights.

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

verify_amendmentVerify Charter AmendmentA
Read-onlyIdempotent

Verify an amendment against its charter's amendment policy. Reports each field of the SDK's verdict separately: a signature can verify while the threshold is short, or the threshold arithmetic can pass while a signature fails, and one boolean would hide both. Session state is not an authoritative registry: amendments live only in this process, are lost on restart, and carry no external trust. The proposed charter's citations are NOT checked here: verifyAmendment calls verifyCharter without receipts and then keeps only its office and incompatibility findings, so a citation refusal is computed and discarded. Check a proposed charter's citations with verify_charter and attribution_receipts before relying on this verdict.

ParametersJSON Schema
NameRequiredDescriptionDefault
charter_idYes
amendment_idYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already establish the safe-read profile (readOnly, idempotent, non-destructive, closed-world), but the description adds hard-won context the annotations cannot carry: session state is not an authoritative registry, amendments are process-local and lost on restart, and carry no external trust. It also discloses the partial-verdict reporting semantics (signature vs. threshold can diverge, and one boolean would mask both) and the discarded citation refusal — exactly the kind of behavior an agent must know before trusting the result.

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, then behavior, then scope boundary — a sensible order. The one costly sentence explains verifyAmendment's internal delegation ('calls verifyCharter without receipts and then keeps only its office and incompatibility findings'), which justifies why citation refusals vanish but is heavier on implementation detail than an agent strictly 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 does the work of describing the return shape conceptually ('reports each field of the SDK's verdict separately') and is exceptional on state/trust limitations. It stops short of enumerating the verdict fields themselves, which for a verification tool with no output schema 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 0% for both parameters, so the description must carry the load. It implies the relationship between the two IDs (an amendment is verified against 'its charter') and warns that amendments exist only in this process, which constrains what amendment_id can validly reference. However, it never states format, sourcing, or what happens on an unknown or expired ID, so the coverage gap is only partially closed.

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 ('Verify an amendment') and binds it to the charter's amendment policy, which immediately separates it from verify_charter and sign_amendment. An agent can tell what domain of check this performs 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 Guidelines5/5

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

It explicitly states what is out of scope ('The proposed charter's citations are NOT checked here') and routes the agent to the right alternatives ('Check a proposed charter's citations with verify_charter and attribution_receipts before relying on this verdict'). The sequencing instruction ('before relying on this verdict') makes the when-to-use condition unambiguous.

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

verify_aps_txtVerify aps.txtA
Read-onlyIdempotent

Verify a signed aps.txt file by checking its signature and DID consistency.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesaps.txt JSON content
publicKeyYesPublisher's Ed25519 public key (hex)

TDQS

A3.5/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. The description adds that it checks signature and DID consistency, which is useful, but omits error behavior, authentication requirements, and what constitutes a valid result.

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?

A single tightly scoped sentence with no filler, front-loading the verb and resource. Every word 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?

For a simple two-parameter verification tool with full schema coverage and safety annotations, the description is nearly sufficient. However, with no output schema, it does not explain what a successful or failed verification returns, leaving a notable gap for an agent 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 coverage is 100%, so the schema already documents both content and publicKey. The description adds only that content is a signed aps.txt and publicKey is used for signature verification, which is marginal 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 the specific verb 'Verify' and resource 'signed aps.txt file', and clarifies the checks performed (signature and DID consistency). It does not differentiate from the many sibling verify_* tools, but the aps.txt resource is distinct enough to avoid confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 usage when a signed aps.txt needs verification, but offers no explicit when-to-use, prerequisites, or alternatives to sibling tools like generate_aps_txt or other verify_* functions.

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

verify_charterVerify CharterA
Read-onlyIdempotent

Verify a charter's integrity: content hash, signatures, quorum, dissolution, office consistency, incompatibility, and, when the charter declares citations, the AttributionConsent gate over the receipts you supply. What a valid result establishes: the charter is intact and signed by the keys it names, and any citation it declares is backed by a receipt the cited principal consented to. What it does not establish: that those signers hold the authority your decision needs. A charter declaring citations cannot be valid without attribution_receipts, and fails closed with 'citations present but no receipts supplied'.

ParametersJSON Schema
NameRequiredDescriptionDefault
charter_idYesCharter ID to verify
attribution_receiptsNoSigned AttributionReceipts backing the charter's citations. Required for a charter that declares any; each receipt's parties must be named by self-certifying DIDs.

TDQS

A4.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, so the safety profile is covered. The description adds real value beyond that: it defines what a valid result does and does not establish (a deliberate trust-boundary caveat) and discloses fail-closed behavior with the exact error string, which an agent needs to interpret an unsuccessful call.

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, each carrying distinct load: what is checked, what validity guarantees, what it does not guarantee, and the fail-closed condition. Front-loaded with the verb and resource. Slightly dense syntax ('and, when the charter declares citations, the ... gate over the receipts you supply'), but nothing 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?

No output schema exists, so the description must carry the interpretation burden — and it does, explaining what a valid result means and its limits. The failure mode is named with an exact error string. What is left unstated is the shape of a successful response (per-check breakdown vs single boolean), which an agent still has to discover empirically.

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 more by explaining the conditional coupling between charter content and attribution_receipts — receipts become required only when the charter declares citations — plus the constraint that receipt parties must be named by self-certifying DIDs. That clarifies *why* the optional parameter becomes mandatory, which the schema alone does 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 (verify) and resource (charter) and then enumerates exactly what integrity dimensions are checked: content hash, signatures, quorum, dissolution, office consistency, incompatibility, and the AttributionConsent gate. This is clearly distinguishable from sibling tools like sign_charter, create_charter, and verify_amendment 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 an explicit conditional: when the charter declares citations, the AttributionConsent gate applies over the receipts you supply, and receipts are mandatory in that case ('citations present but no receipts supplied'). It also scopes the tool's conclusion ('does not establish authority'). It stops short of naming siblings such as verify_amendment or aps_verify_attribution_consent as alternatives for adjacent questions, so 4 rather than 5.

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

verify_delegationVerify DelegationA
Read-onlyIdempotent

Check a delegation's signature and its stated window. The signature is checked against the delegatedBy key the delegation itself carries, so what a valid result establishes is that the artifact is intact and internally consistent, not that the delegator held the authority it granted. Revocation is not consulted here. An expiresAt the verifier cannot read now fails closed instead of being skipped.

ParametersJSON Schema
NameRequiredDescriptionDefault
delegation_idYesDelegation ID to verify

TDQS

A4.1/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 genuinely non-obvious behavior: verification is self-referential (checked against the delegatedBy key the artifact carries), revocation is out of scope, and an unreadable expiresAt fails closed. These are exactly the traits an agent needs and cannot derive from the 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.

Conciseness4/5

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

Three sentences, front-loaded with the action and then layering scope caveats; every sentence carries information. Dense but not padded, though the second sentence is long and could be split for scannability.

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 compensates by spelling out the meaning of a valid result (intact and internally consistent, not authoritative) and the fail-closed edge case. Combined with annotations covering safety, 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.

Parameters3/5

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

Schema coverage is 100% with a single required delegation_id parameter, so the schema already documents the input. The description adds nothing about the parameter (format, source, or lookup semantics), leaving this at the baseline for fully-covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (verify/check) and resource (a delegation's signature and stated window), which is precise enough to separate it from create_delegation, revoke_delegation, and sub_delegate. It stops short of naming the verification siblings (verify_issuer, verify_endorsement) it could be confused with, so the differentiation is 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 Guidelines4/5

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

Strong boundary-setting: it says what a valid result does NOT establish (delegator authority) and that revocation is not consulted, which tells the agent when this tool is insufficient. It never names the alternative tool for authority or revocation checks (e.g. evaluate_revocation_impact, resolve_authority), so 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_endorsementVerify EndorsementA
Read-onlyIdempotent

Check an endorsement's signature against the principalPublicKey the endorsement itself carries. What a valid result establishes: the endorsement is intact and signed by that key. What it does not establish: that the key belongs to the principal it names, which needs a trust anchor you supply out of band.

ParametersJSON Schema
NameRequiredDescriptionDefault
endorsement_idYesEndorsement ID to verify

TDQS

A4.5/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), and the description goes well beyond them by disclosing the security boundary of the result: signature validity is proven, key-to-principal binding is explicitly not. That prevents the agent from over-trusting a 'valid' outcome.

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 tight sentences, action first, then the positive guarantee, then the negative boundary. No filler and nothing redundant.

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 one-parameter verification tool with no output schema, the description supplies exactly what is needed: what a positive result means and its limits. Nothing an agent needs to interpret the result 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% for the single endorsement_id parameter, so the schema already carries the parameter's meaning. The description's reference to principalPublicKey describes the endorsement's contents, not the input, so it adds nothing 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?

States a precise verb and object ('Check an endorsement's signature') plus the exact key it checks against, which cleanly separates it from sibling verification tools like verify_delegation, verify_issuer, and verify_charter.

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 'what a valid result establishes / does not establish' framing tells the agent when this tool is sufficient and when it is not (when a trust anchor is required), which is strong conditional guidance. It stops short of naming a specific alternative sibling to use in the out-of-band case.

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

verify_governance_blockVerify Governance BlockA
Read-onlyIdempotent

Verify a governance block's signature, content hash, DID consistency and expiry against the original content. A block whose expiry cannot be read now fails closed rather than being treated as unexpired.

ParametersJSON Schema
NameRequiredDescriptionDefault
blockYesGovernance block JSON string
contentYesOriginal content to verify against
publicKeyYesPublisher's Ed25519 public key (hex)

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 and non-destructive, so the safety profile is settled. The description adds genuinely useful behavior that annotations cannot express: an unreadable expiry fails closed instead of being treated as unexpired, which is exactly the kind of failure-mode disclosure an agent needs. It stops short of 5 because it does not say what the verification result looks like or how partial 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.

Conciseness5/5

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

Two sentences, zero filler, with the verification scope front-loaded ahead of the fail-closed caveat. Every clause carries information the agent 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 should ideally state the shape of the verification result (boolean vs per-check report) and what a caller does on failure; that is the one omission. Otherwise the inputs, the checks performed, and the fail-closed edge case are complete for a three-parameter read-only verifier.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 are documented in the schema (block JSON, original content, Ed25519 public key hex). The description only loosely ties 'against the original content' to the content parameter and 'signature' to publicKey, adding little 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?

States a specific verb (verify) and resource (governance block) and enumerates the exact facets checked: signature, content hash, DID consistency and expiry. An agent can distinguish this from generate_governance_block or parse_governance_block_html, but the description never names a sibling to route against, 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 verify_charter, verify_amendment, verify_delegation, or the generate/parse governance-block siblings. The phrase 'against the original content' hints at a precondition, but no exclusions, prerequisites, or alternative-selection guidance is given.

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

verify_issuerVerify Passport Issuer SignatureA
Read-onlyIdempotent

Verify that a passport was officially issued by AEOESS. Checks the issuer countersignature against the published AEOESS public key. Returns false for self-signed passports.

ParametersJSON Schema
NameRequiredDescriptionDefault
passportYesThe signed passport object to verify

TDQS

A4/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 real value beyond them: it names the trust anchor (published AEOESS public key) and discloses the negative-case return behavior for self-signed passports.

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 short sentences, zero filler, with what the tool does front-loaded and the failure case as a trailing qualifier rather than buried 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?

The tool has a nested input object and no output schema, so the description reasonably carries more burden. It covers the trust anchor and the false-on-self-signed case, though it doesn't state the positive return (true) or what an invalid countersignature yields, leaving 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?

Only one parameter with 100% schema description coverage, including a nested signed-passport structure whose inner fields are typed and described in the schema. The description adds no format or structural guidance about the passport object itself, 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 and resource — verifying a passport's issuer countersignature against the published AEOESS public key — which cleanly separates it from the many other verify_* siblings (verify_endorsement, verify_delegation, verify_charter). The added scope detail ('officially issued by AEOESS') makes the target of verification 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 implied by the nature of the check, and the description gives one useful selection signal (self-signed passports yield false), but it never states when to reach for this versus verify_delegation or verify_endorsement, nor any prerequisite about where the passport object comes from.

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

verify_rotation_chainVerify Key Rotation ChainA
Read-onlyIdempotent

Verify all rotation signatures in a DID document's rotation log. Returns true if the full chain is cryptographically valid.

ParametersJSON Schema
NameRequiredDescriptionDefault
did_documentYesRotatableDIDDocument JSON object with rotationLog

TDQS

A3.8/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 the return contract (true when the full chain is valid), which is genuinely useful given there is no output schema, but it is silent on failure behavior (false vs. error), auth requirements, and cost.

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, zero padding, with the operation and its target front-loaded before the return-value note. Every clause earns its place.

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

Completeness4/5

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

For a single-input read-only verification utility with no output schema, the description supplies the essential return semantics and the object being checked. It is only slightly short of complete because it does not specify what an invalid chain produces or any 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% and there is only one parameter, so the schema already documents did_document as a RotatableDIDDocument with a rotationLog. The description restates the same shape at a high level without adding format or validation detail, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (verify) and a precise resource (all rotation signatures in a DID document's rotation log), which clearly separates it from siblings like rotate_key, is_key_active, and the various other verify_* tools. An agent can tell what this does 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?

Usage is implied by the name and description (validate a rotation log before trusting a key history), but there is no explicit when-to-use, when-not-to-use, or pointer to alternatives such as rotate_key or is_key_active. Adequate but leaves routing to the agent.

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

vouch_reputationVouch ReputationC
Read-onlyIdempotent

Create a signed reputation summary that another gateway can import. Receipt history is not included.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierYes
agent_idYes
gateway_idYes
ttl_secondsNoDefault 30 days
diversity_scoreYes
gateway_private_keyYes

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 by disclosing that the output is signed, intended for import by another gateway, and excludes receipt history. It does not explain signing/auth requirements beyond the implicit private-key parameter.

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 tight sentences with no filler, and the core action is front-loaded. It is efficient, though its brevity is partly the cause of the parameter and usage gaps rather than pure economy.

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 6-parameter, 5-required signing tool with no output schema and low schema coverage, the description leaves too much unsaid: parameter meanings, what the summary contains, and what the caller receives. The annotation-covered safety profile and the receipt-history exclusion are the only substantive context provided.

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 description coverage is only 17% (just ttl_seconds), so the description should compensate for the five undocumented parameters and does not. It never explains tier, diversity_score, gateway_id, agent_id, or why gateway_private_key is required, leaving an agent to guess at the semantics of the inputs that drive the signature.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Create a signed reputation summary.' It also scopes the output ('receipt history is not included') and identifies the consumer ('another gateway can import'). It does not name a sibling like update_reputation or verify_endorsement, 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?

No when-to-use or when-not-to-use guidance is given. The phrase 'another gateway can import' hints at the cross-gateway context, but it never states prerequisites (e.g., holding gateway_private_key) or how this differs from update_reputation/apply_reputation_downgrade in the same family.

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. 4 tool updatesv8.0.0
    • Changedcreate_access_receipt3 fields changed
      • addedInput schema / properties / content
        Added value: +{
        +  "description": "Content the governance block covers, used to verify its content hash",
        +  "type": "string"
        +}
      • addedInput schema / properties / publisherPublicKey
        Added value: +{
        +  "description": "Publisher's Ed25519 public key (hex), used to verify the block signature",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "agentPublicKey",
        -  "agentPrivateKey",
        -  "block",
        -  "sourceUrl",
        -  "intendedUsage"
        -]New value: +[
        +  "agentPublicKey",
        +  "agentPrivateKey",
        +  "block",
        +  "content",
        +  "publisherPublicKey",
        +  "sourceUrl",
        +  "intendedUsage"
        +]
    • Changedcreate_principal1 field changed
      • addedInput schema / properties / replace
        Added value: +{
        +  "default": false,
        +  "description": "Replace an existing principal. Discards the current principal's private key and fleet from this process, so save the key first.",
        +  "type": "boolean"
        +}
    • Changedrevoke_delegation6 fields changed
      • changedInput schema / properties / cascade / description
        Previous value: -"Also revoke all sub-delegations"New value: +"Kept for compatibility, no effect on the output. Descendants are invalidated at chain verification through this ancestor record whatever the value, and no per-descendant records are issued."
      • addedInput schema / properties / delegation
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    }
        +  ],
        +  "description": "The AuthorityDelegationV1 to revoke (record_type aps:authority-delegation:v1), as a JSON string or object. Required for a revocation to be issued."
        +}
      • changedInput schema / properties / delegation_id / description
        Previous value: -"Delegation ID to revoke"New value: +"Optional. Checked against delegation.delegation_id when both are given. A legacy session id (del_...) is refused with an explanation."
      • changedInput schema / properties / reason / description
        Previous value: -"Why the delegation is being revoked"New value: +"Optional free-text detail, written to the record's detail member."
      • addedInput schema / properties / reason_code
        Added value: +{
        +  "description": "Machine-readable reason, written to the record's reason_code. Any non-empty string is accepted, because the draft fixes no grammar for it.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "delegation_id",
        -  "reason"
        -]New value: +[
        +  "reason_code"
        +]
    • Changedrotate_key1 field changed
      • changedInput schema / properties / delegation_ids_to_revoke / description
        Previous value: -"Delegation IDs to cascade-revoke during rotation"New value: +"Must be empty or absent. Delegation revocation is not integrated in this server, so a non-empty list is refused and nothing is rotated."
  2. 1 tool updatev7.0.0
    • Changedcreate_delegation4 fields changed
      • changedInput schema / properties / max_depth / description
        Previous value: -"How many levels of sub-delegation"New value: +"How many levels of sub-delegation (a non-negative integer)"
      • addedInput schema / properties / max_depth / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / max_depth / minimum
        Added value: +0
      • changedInput schema / properties / max_depth / type
        Previous value: -"number"New value: +"integer"
  3. 3 tool updatesv6.0.0
    • Changedaps_create_attribution_receipt2 fields changed
      • changedInput schema / properties / cited_principal / description
        Previous value: -"DID/public key of the cited principal"New value: +"Self-certifying DID of the cited principal, from the SDK createDID (multibase did:aps). It must commit to cited_principal_public_key."
      • changedInput schema / properties / citer / description
        Previous value: -"DID/public key of the citing agent"New value: +"Self-certifying DID of the citing agent, from the SDK createDID (multibase did:aps). A bare public key or the hex did:aps form from createDIDHex does not self-certify and will not verify."
    • Changedcompute_action_ref1 field changed
      • changedInput schema / properties / timestamp / description
        Previous value: -"ISO 8601 timestamp; defaults to now"New value: +"RFC 3339 timestamp carrying an explicit offset or Z; defaults to now. A zone-less value is refused, because it names no instant and would produce a different action_ref on every machine."
    • Changedverify_charter1 field changed
      • addedInput schema / properties / attribution_receipts
        Added value: +{
        +  "description": "Signed AttributionReceipts backing the charter's citations. Required for a charter that declares any; each receipt's parties must be named by self-certifying DIDs.",
        +  "items": {},
        +  "type": "array"
        +}
  4. 2 tool updatesv5.0.2
    • Changedcheck_retention_expired2 fields changed
      • removedInput schema / properties / maxRetentionMs / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / maxRetentionMs / type
        Added value: +[
        +  "number",
        +  "null"
        +]
    • Changeddefine_emergency_pathway2 fields changed
      • removedInput schema / properties / trigger_value / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]
      • addedInput schema / properties / trigger_value / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean"
        +]
  5. 4 tool updatesv5.0.0
    • Removedevaluate_threshold
    • Addedpropose_amendment
    • Addedsign_amendment
    • Addedverify_amendment
  6. 150 tool updatesv4.0.0
    • Changedaccept_assignment2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedactivate_emergency2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedadd_approval_signature2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedadd_principal_report2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedapply_reputation_downgrade2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedaps_aggregate_settlement4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / period / additionalProperties
        Removed value: -false
      • addedInput schema / properties / receipts / items
        Added value: +{}
    • Changedaps_attribution_receipt_id3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / required
        Added value: +[
        +  "receipt"
        +]
    • Changedaps_build_contributor_query3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "contributor_did"
        -]New value: +[
        +  "record",
        +  "contributor_did"
        +]
    • Changedaps_capability_evaluate_authority6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / authority_token / additionalProperties
        Removed value: -false
      • addedInput schema / properties / delegation_chain / items
        Added value: +{}
      • removedInput schema / properties / freshness_beacon / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "delegation_chain",
        -  "authority_token",
        -  "freshness_beacon",
        -  "subject_private_key",
        -  "subject_public_key"
        -]New value: +[
        +  "challenge",
        +  "delegation_chain",
        +  "authority_token",
        +  "freshness_beacon",
        +  "subject_private_key",
        +  "subject_public_key"
        +]
    • Changedaps_capability_issue_challenge7 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / action / additionalProperties
        Removed value: -false
      • addedInput schema / properties / action / properties / parameters / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / required_policy_freshness / additionalProperties
        Removed value: -false
      • addedInput schema / properties / required_policy_freshness / properties / max_age_seconds / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / validity_seconds / maximum
        Added value: +9007199254740991
    • Changedaps_capability_mint_receipt3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "decision",
        -  "policy_digest",
        -  "gateway_private_key",
        -  "gateway_public_key"
        -]New value: +[
        +  "request",
        +  "decision",
        +  "policy_digest",
        +  "gateway_private_key",
        +  "gateway_public_key"
        +]
    • Changedaps_capability_sign_effect4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / effect / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "effect",
        -  "sink_private_key",
        -  "sink_public_key",
        -  "gateway_public_key"
        -]New value: +[
        +  "challenge",
        +  "challenge_receipt",
        +  "effect",
        +  "sink_private_key",
        +  "sink_public_key",
        +  "gateway_public_key"
        +]
    • Changedaps_check_artifact_citations4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / receipts / items
        Added value: +{}
      • changedInput schema / required
        Previous value: -[
        -  "receipts"
        -]New value: +[
        +  "artifact",
        +  "receipts"
        +]
    • Changedaps_check_escalation_required3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "action_class"
        -]New value: +[
        +  "delegation",
        +  "action_class"
        +]
    • Changedaps_check_projection_consistency3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / required
        Added value: +[
        +  "projection_a",
        +  "projection_b"
        +]
    • Changedaps_compute_attribution_action_ref3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / params / propertyNames
        Added value: +{
        +  "type": "string"
        +}
    • Changedaps_compute_compute_axis_weights3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / providers / items / additionalProperties
        Removed value: -false
    • Changedaps_compute_data_axis_weights3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / sources / items / additionalProperties
        Removed value: -false
    • Changedaps_construct_attribution_primitive9 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / action / additionalProperties
        Removed value: -false
      • addedInput schema / properties / action / properties / params / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / axes / additionalProperties
        Removed value: -false
      • addedInput schema / properties / axes / properties / C / items
        Added value: +{}
      • addedInput schema / properties / axes / properties / D / items
        Added value: +{}
      • addedInput schema / properties / axes / properties / G / items
        Added value: +{}
      • addedInput schema / properties / axes / properties / P / items
        Added value: +{}
    • Changedaps_create_attribution_receipt2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedaps_create_provisional2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedaps_project_attribution3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "axis"
        -]New value: +[
        +  "primitive",
        +  "axis"
        +]
    • Changedaps_promote_statement3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / required
        Added value: +[
        +  "statement",
        +  "promotion_event",
        +  "policy"
        +]
    • Changedaps_record_owner_confirmation3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "action_class",
        -  "owner_private_key"
        -]New value: +[
        +  "delegation",
        +  "action_class",
        +  "action_details",
        +  "owner_private_key"
        +]
    • Changedaps_sign_attribution_consent3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "cited_principal_private_key"
        -]New value: +[
        +  "receipt",
        +  "cited_principal_private_key"
        +]
    • Changedaps_verify_attribution_consent3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / required
        Added value: +[
        +  "receipt"
        +]
    • Changedaps_verify_attribution_primitive3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "issuer_public_key"
        -]New value: +[
        +  "primitive",
        +  "issuer_public_key"
        +]
    • Changedaps_verify_attribution_projection3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "issuer_public_key"
        -]New value: +[
        +  "projection",
        +  "issuer_public_key"
        +]
    • Changedaps_verify_promotion3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / required
        Added value: +[
        +  "statement",
        +  "policy"
        +]
    • Changedaps_verify_settlement4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / input_receipts / items
        Added value: +{}
      • changedInput schema / required
        Previous value: -[
        -  "gateway_public_key"
        -]New value: +[
        +  "record",
        +  "gateway_public_key"
        +]
    • Changedaps_withdraw_provisional3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / required
        Added value: +[
        +  "statement"
        +]
    • Changedassign_agent2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedattest_to_floor2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbroadcast3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / data / propertyNames
        Added value: +{
        +  "type": "string"
        +}
    • Changedcheck_aggregate_constraints2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcheck_combination_permitted2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcheck_jurisdiction_transfer2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcheck_messages2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcheck_purpose_permitted2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcheck_retention_expired4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / maxRetentionMs / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / maxRetentionMs / type
        Removed value: -[
        -  "number",
        -  "null"
        -]
    • Changedcheck_tier2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcheck_usage_permitted2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedclassify_evidence_quality3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / evidence / propertyNames
        Added value: +{
        +  "type": "string"
        +}
    • Changedcommerce_preflight2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcompare_timestamps4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / a / additionalProperties
        Removed value: -false
      • removedInput schema / properties / b / additionalProperties
        Removed value: -false
    • Changedcomplete_action2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcomplete_task2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcompute_action_ref2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcompute_governance_taint2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_access_receipt2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_access_snapshot2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_agent_context2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_approval_request2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_artifact_provenance2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_chained_governance_block2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_charter3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / offices / items / additionalProperties
        Removed value: -false
    • Changedcreate_data_enforcement_gate2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_decision_lineage_receipt3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / contributingSources / items / additionalProperties
        Removed value: -false
    • Changedcreate_delegation2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_derivation_receipt3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / parentArtifacts / items / additionalProperties
        Removed value: -false
    • Changedcreate_disclosure2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_gateway2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_hybrid_timestamp2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_intent2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_outcome_record2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_policy_context2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_principal2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_reserve_attestation2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcreate_task_brief4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / deliverables / items / additionalProperties
        Removed value: -false
      • removedInput schema / properties / roles / items / additionalProperties
        Removed value: -false
    • Changedcreate_v2_delegation2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddeclare_reidentification_risk2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddefine_emergency_pathway4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / trigger_value / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  }
        +]
      • removedInput schema / properties / trigger_value / type
        Removed value: -[
        -  "string",
        -  "number",
        -  "boolean"
        -]
    • Changeddetect_purpose_drift2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedendorse_agent2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedevaluate_intent2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedevaluate_revocation_impact2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedevaluate_threshold4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / signatures / items / additionalProperties
        Removed value: -false
      • changedInput schema / properties / signatures / items / properties / signedAt / default
        Previous value: -"2026-07-13T04:26:08.034Z"New value: +"2026-08-01T06:10:29.170Z"
    • Changedexecute_with_context2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfile_data_dispute2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedgateway_approve3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / params / propertyNames
        Added value: +{
        +  "type": "string"
        +}
    • Changedgateway_process_tool_call3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / params / propertyNames
        Added value: +{
        +  "type": "string"
        +}
    • Changedgateway_stats1 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_aps_txt2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedgenerate_governance_block2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedgenerate_keys1 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_settlement2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_agora_by_topic2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_agora_thread2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_agora_topics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_behavioral_sequence2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_commerce_spend2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_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"
    • Changedget_evidence2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_fleet_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"
    • Changedget_my_role1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_passport_grade2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_promotion_history1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_task_detail2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedgovernance_3602 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedhandoff_evidence2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedidentify2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedis_evidence_fresh2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedis_key_active3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "public_key"
        -]New value: +[
        +  "did_document",
        +  "public_key"
        +]
    • Changedissue_passport2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlist_agents2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlist_issuance_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"
    • Changedlist_profiles1 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_tasks1 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_tools_for_scope2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedload_values_floor2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • ChangedmutualAuthBuildCertificate5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / attestation_grade / anyOf
        Added value: +[
        +  {
        +    "const": 0,
        +    "type": "number"
        +  },
        +  {
        +    "const": 1,
        +    "type": "number"
        +  },
        +  {
        +    "const": 2,
        +    "type": "number"
        +  },
        +  {
        +    "const": 3,
        +    "type": "number"
        +  }
        +]
      • removedInput schema / properties / attestation_grade / enum
        Removed value: -[
        -  0,
        -  1,
        -  2,
        -  3
        -]
      • removedInput schema / properties / attestation_grade / type
        Removed value: -"number"
    • ChangedmutualAuthDeriveSession3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / required
        Added value: +[
        +  "agent_attest",
        +  "is_attest",
        +  "policy"
        +]
    • ChangedmutualAuthVerifyAttest4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / trust_anchors / items
        Added value: +{}
      • changedInput schema / required
        Previous value: -[
        -  "expected_peer_nonce_b64",
        -  "expected_own_nonce_b64",
        -  "trust_anchors"
        -]New value: +[
        +  "attest",
        +  "expected_peer_nonce_b64",
        +  "expected_own_nonce_b64",
        +  "policy",
        +  "trust_anchors"
        +]
    • ChangedmutualAuthVerifyTrustBundle3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / required
        Previous value: -[
        -  "trusted_publisher_pubkeys_hex"
        -]New value: +[
        +  "bundle",
        +  "trusted_publisher_pubkeys_hex"
        +]
    • Changedparse_governance_block_html2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedpost_agora_message2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedquery_contributions2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedregister_agora_agent2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedregister_agora_public2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedregister_data_source2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedremove_intent_card2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrequest_human_approval2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrequest_intro2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedresolve_authority2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedresolve_lineage2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedresolve_path_terms2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedresolve_rights_propagation2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrespond_to_intro2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedreview_evidence3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / issues / items / additionalProperties
        Removed value: -false
    • Changedreview_promotion2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrevoke_delegation2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrevoke_endorsement2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrotate_key2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsearch_matches2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsend_message3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / data / propertyNames
        Added value: +{
        +  "type": "string"
        +}
    • Changedsign_charter2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsub_delegate2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsubmit_deliverable2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsubmit_evidence3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / claims / items / additionalProperties
        Removed value: -false
    • Changedsupersede_v2_delegation2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedupdate_reputation2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedvalidate_temporal_rights2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedverify_aps_txt2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedverify_charter2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedverify_delegation2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedverify_endorsement2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedverify_governance_block2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedverify_issuer5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / passport / additionalProperties
        Removed value: -false
      • removedInput schema / properties / passport / properties / issuerSignature / additionalProperties
        Removed value: -false
      • changedInput schema / properties / passport / required
        Previous value: -[
        -  "signature",
        -  "signedAt"
        -]New value: +[
        +  "passport",
        +  "signature",
        +  "signedAt"
        +]
    • Changedverify_rotation_chain3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / required
        Added value: +[
        +  "did_document"
        +]
    • Changedvouch_reputation2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
  7. 1 tool updatev3.3.1
    • Changedevaluate_threshold1 field changed
      • changedInput schema / properties / signatures / items / properties / signedAt / default
        Previous value: -"2026-05-01T21:03:31.008Z"New value: +"2026-07-13T04:26:08.034Z"
  8. 1 tool update
    • Changedevaluate_threshold1 field changed
      • changedInput schema / properties / signatures / items / properties / signedAt / default
        Previous value: -"2026-05-01T21:03:31.007Z"New value: +"2026-05-01T21:03:31.008Z"
  9. 150 tool updatesv2.8.0
    • Addedaccept_assignment
    • Addedactivate_emergency
    • Addedadd_approval_signature
    • Addedadd_principal_report
    • Addedapply_reputation_downgrade
    • Addedaps_aggregate_settlement
    • Addedaps_attribution_receipt_id
    • Addedaps_build_contributor_query
    • Addedaps_capability_evaluate_authority
    • Addedaps_capability_issue_challenge
    • Addedaps_capability_mint_receipt
    • Addedaps_capability_sign_effect
    • Addedaps_check_artifact_citations
    • Addedaps_check_escalation_required
    • Addedaps_check_projection_consistency
    • Addedaps_compute_attribution_action_ref
    • Addedaps_compute_compute_axis_weights
    • Addedaps_compute_data_axis_weights
    • Addedaps_construct_attribution_primitive
    • Addedaps_create_attribution_receipt
    • Addedaps_create_provisional
    • Addedaps_project_attribution
    • Addedaps_promote_statement
    • Addedaps_record_owner_confirmation
    • Addedaps_sign_attribution_consent
    • Addedaps_verify_attribution_consent
    • Addedaps_verify_attribution_primitive
    • Addedaps_verify_attribution_projection
    • Addedaps_verify_promotion
    • Addedaps_verify_settlement
    • Addedaps_withdraw_provisional
    • Addedassign_agent
    • Addedattest_to_floor
    • Addedbroadcast
    • Addedcheck_aggregate_constraints
    • Addedcheck_combination_permitted
    • Addedcheck_jurisdiction_transfer
    • Addedcheck_messages
    • Addedcheck_purpose_permitted
    • Addedcheck_retention_expired
    • Addedcheck_tier
    • Addedcheck_usage_permitted
    • Addedclassify_evidence_quality
    • Addedcommerce_preflight
    • Addedcompare_timestamps
    • Addedcomplete_action
    • Addedcomplete_task
    • Addedcompute_action_ref
    • Addedcompute_governance_taint
    • Addedcreate_access_receipt
    • Addedcreate_access_snapshot
    • Addedcreate_agent_context
    • Addedcreate_approval_request
    • Addedcreate_artifact_provenance
    • Addedcreate_chained_governance_block
    • Addedcreate_charter
    • Addedcreate_data_enforcement_gate
    • Addedcreate_decision_lineage_receipt
    • Addedcreate_delegation
    • Addedcreate_derivation_receipt
    • Addedcreate_disclosure
    • Addedcreate_gateway
    • Addedcreate_hybrid_timestamp
    • Addedcreate_intent
    • Addedcreate_outcome_record
    • Addedcreate_policy_context
    • Addedcreate_principal
    • Addedcreate_reserve_attestation
    • Addedcreate_task_brief
    • Addedcreate_v2_delegation
    • Addeddeclare_reidentification_risk
    • Addeddefine_emergency_pathway
    • Addeddetect_purpose_drift
    • Addedendorse_agent
    • Addedevaluate_intent
    • Addedevaluate_revocation_impact
    • Addedevaluate_threshold
    • Addedexecute_with_context
    • Addedfile_data_dispute
    • Addedgateway_approve
    • Addedgateway_process_tool_call
    • Addedgateway_stats
    • Addedgenerate_aps_txt
    • Addedgenerate_governance_block
    • Addedgenerate_keys
    • Addedgenerate_settlement
    • Addedget_agora_by_topic
    • Addedget_agora_thread
    • Addedget_agora_topics
    • Addedget_behavioral_sequence
    • Addedget_commerce_spend
    • Addedget_digest
    • Addedget_evidence
    • Addedget_fleet_status
    • Addedget_my_role
    • Addedget_passport_grade
    • Addedget_promotion_history
    • Addedget_task_detail
    • Addedgovernance_360
    • Addedhandoff_evidence
    • Addedidentify
    • Addedis_evidence_fresh
    • Addedis_key_active
    • Addedissue_passport
    • Addedlist_agents
    • Addedlist_issuance_records
    • Addedlist_profiles
    • Addedlist_tasks
    • Addedlist_tools_for_scope
    • Addedload_values_floor
    • AddedmutualAuthBuildCertificate
    • AddedmutualAuthDeriveSession
    • AddedmutualAuthVerifyAttest
    • AddedmutualAuthVerifyTrustBundle
    • Addedparse_governance_block_html
    • Addedpost_agora_message
    • Addedquery_contributions
    • Addedregister_agora_agent
    • Addedregister_agora_public
    • Addedregister_data_source
    • Addedremove_intent_card
    • Addedrequest_human_approval
    • Addedrequest_intro
    • Addedresolve_authority
    • Addedresolve_lineage
    • Addedresolve_path_terms
    • Addedresolve_rights_propagation
    • Addedrespond_to_intro
    • Addedreview_evidence
    • Addedreview_promotion
    • Addedrevoke_delegation
    • Addedrevoke_endorsement
    • Addedrotate_key
    • Addedsearch_matches
    • Addedsend_message
    • Addedsign_charter
    • Addedsub_delegate
    • Addedsubmit_deliverable
    • Addedsubmit_evidence
    • Addedsupersede_v2_delegation
    • Addedupdate_reputation
    • Addedvalidate_temporal_rights
    • Addedverify_aps_txt
    • Addedverify_charter
    • Addedverify_delegation
    • Addedverify_endorsement
    • Addedverify_governance_block
    • Addedverify_issuer
    • Addedverify_rotation_chain
    • Addedvouch_reputation

TDQS

C2.7/5.0

Scored across 152 tools

Disambiguation2/5

The set contains many overlapping clusters (attribution receipts vs. attribution primitives, governance blocks vs. aps.txt, capability M1-M4, mutual-auth, settlement), plus many deprecated tools that shadow live gateway/SDK paths. Several tools with nearly identical purposes (create_approval_request vs. request_human_approval, send_message vs. broadcast vs. post_agora_message, aps_create_attribution_receipt vs. aps_create_attribution_primitive) make misselection likely.

Naming Consistency2/5

Most tools use snake_case, but the set mixes in camelCase mutualAuth* tools and inconsistent prefixes (aps_, gateway_, mutualAuth, no prefix). Deprecated and moved tools remain alongside replacements, further muddying the naming pattern.

Tool Count1/5

152 tools is far beyond any reasonable scoped MCP surface and includes many deprecated, unavailable, or gateway-migrated tools. The count alone makes discovery and correct selection impractical.

Completeness3/5

The protocol surface is extremely broad, covering identity, delegation, governance, data lineage, attribution, settlement, capability, and mutual-auth. However, numerous dead ends exist: deprecated tools that only return migration notices, review_promotion always errors, and some approval/dispute tools do not persist or notify.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Multi-Agent Collaboration Protocol server that enables coordinated AI collaboration through task management, context sharing, and agent interaction visualization.
    1,304
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Agent network intelligence for trust verification, broker discovery, and capability matching. Ed25519 identity, graph-based trust scoring, USDC payments, and MCP tools for agent registration, search, and trust attestation.
    812 npm
    5
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for AI agent identity — verify agents with Ed25519 signatures, check trust scores, sign and verify content, exchange encrypted messages. Built on the Agent Identity Protocol (AIP).
    8
    MIT