Skip to main content
Glama

Agenda Intelligence MD

PyPI version CI License: MIT

Agenda Intelligence MD is a deterministic evidence-packet linter and compliance orchestration engine for claim-backed AI output. It provides verifiable trust boundaries, guardrail enforcement, and evidence-readiness triage across A2A (Agent-to-Agent), MCP (Model Context Protocol), CLI / Python API, and Serverless Edge Workers (Cloudflare).


Core concepts

Agenda Intelligence MD is a deterministic evidence-packet linter for claim-backed AI output.

Give it claims, the source IDs each claim relies on, optional quotations, and the supplied source text. It returns broken references, quote mismatches, lexical-support gaps, unmatched numbers, claims that negate the source they cite, and the next reviewer actions.

It reports packet completeness, not whether a claim is true:

  • not a factuality verifier;

  • no autonomous live source retrieval;

  • no authorization, approval, or compliance decision;

  • human review is required for every result.


Related MCP server: Brave Search MCP Server

First run

Run the canonical synthetic packet from a source checkout:

git clone https://github.com/vassiliylakhonin/agenda-intelligence-md
cd agenda-intelligence-md
python -m venv .venv
.venv/bin/python -m pip install -e .
.venv/bin/agenda-intelligence check examples/evidence-packet/request.json

Expected shape:

packet_status=packet_complete claims=2 sources=1 factuality=not_assessed
  c1: packet_complete (lexical_support=supported, coverage=1.0)
  c2: packet_complete (lexical_support=supported, coverage=1.0)

Use JSON for an agent loop or CI pipeline:

.venv/bin/agenda-intelligence check examples/evidence-packet/request.json --format json
.venv/bin/agenda-intelligence check examples/evidence-packet/request.json --strict

--strict exits non-zero unless every claim is packet_complete.

Find where a claim could be supported, before deciding what it cites:

.venv/bin/agenda-intelligence discover examples/evidence-review/manifest.json

discover derives literal patterns from each claim — figures and quoted spans first, then content terms, rarest first — and matches every one against every source, reporting the line that matched. Nothing is sampled and no model is called, so it behaves the same on 40 sources and on 4,000. It names the sources a claim's own figures reach but it does not cite, and the ones it cites where not one pattern occurs. Candidates are places to look: nothing here verifies a claim, and a source that supports one in different words does not appear at all.

Review local source files without copying their full text into JSON:

.venv/bin/agenda-intelligence review examples/evidence-review/manifest.json \
  --out evidence-review.md --strict

The manifest keeps claims explicit and points to local UTF-8, Markdown, DOCX, or PDF sources. Paths are resolved inside the manifest directory. DOCX support uses the Python standard library; PDF extraction requires pip install -e ".[documents]". The command makes no network or model call and does not include source text in its JSON or Markdown result. See docs/evidence-review.md.

Install the pinned release without cloning the source and check your own packet:

pip install "agenda-intelligence-md==1.11.0"
agenda-intelligence check /path/to/evidence-packet.json --strict

Generate an interactive standalone HTML reviewer report from local documents:

.venv/bin/agenda-intelligence review examples/evidence-review/manifest.json --format html

The evidence-packet contract

The request has two required collections:

  • claims: a claim ID, claim text, declared source_ids, and optional verbatim quotes;

  • sources: a source ID and the text supplied by the caller.

Request schema: schemas/v1/evidence-packet-request.schema.json

Response schema: schemas/v1/evidence-packet-response.schema.json

Runnable example: examples/evidence-packet/request.json

The response has three packet statuses:

Status

Meaning

packet_complete

References resolve and the named source text has strong lexical overlap with the claim.

source_review_required

References resolve, but lexical support is weak, a numeric value is not present, or the claim and its closest source sentence disagree on negation.

packet_incomplete

A source is missing, a quote is absent, or the claim has no source reference.

factuality_status is always not_assessed. A complete packet can still rely on a wrong, stale, biased, or irrelevant source.

Numeric support is format-aware but deliberately conservative. Equivalent scaled values, percentages, and common date forms are compared canonically ($10M10,000,000 USD, 62%62 percent, and 12 May 20242024-05-12). Currency is part of the comparison: 10M USD does not support 10M EUR, and the linter performs no currency conversion or approximate-value inference.

Quote presence remains strict after Unicode, typography, whitespace, ellipsis, soft-hyphen, and PDF line-break hyphenation normalization. When an otherwise absent quote has a typo-level candidate at 95% similarity or higher, the quote check may include a bounded near_miss diff for the reviewer. It still reports status: absent and keeps the packet incomplete. Candidates whose numeric facts or negation cues differ are not presented as harmless near misses.

What weighted term overlap can and cannot see

Lexical support is an IDF-weighted share of a claim's content terms that appear in the source it names. Terms that occur throughout the supplied corpus carry less weight than rare entities, while a single-document packet preserves the original plain-overlap scale. Corpus text, sentences, numeric facts, and term sets are indexed once per check run and reused across claims.

Negation is checked. not and no are stopwords and never reach the ratio, so "the board approved it" and "the board did not approve it" score the same against the same source. Where a claim and its closest sentence in the cited source disagree on negation or denial, the claim is downgraded to weak and carries lexical_support_polarity_mismatch. Polarity is read at sentence scope: a negation elsewhere in the same document does not flag an unrelated claim.

Reversed roles are not checked, and are not claimed to be. "A approved a facility for B" and "B approved a facility for A" contain the same terms and both score supported. Deciding who did what to whom is not something term overlap can do, and no heuristic here pretends otherwise. A reviewer still has to read the sentence. The limit is pinned by a test (test_polarity_check_does_not_claim_to_catch_reversed_roles) so it stays visible.

Unicode text is tokenized, but language understanding is not claimed. Cyrillic and Arabic words are no longer discarded, common Russian and Arabic function words are excluded from lexical coverage, and common English, Russian, and Arabic negation cues are checked. A conservative deterministic fold covers common English plurals/verb suffixes and Russian noun/adjective inflections. It is not a full morphological analyzer and does not resolve translation, cross-language support, paraphrases, or semantic roles. Those remain model or reviewer tasks.


Agent Guardrail & Self-Correction Loop

Validate packets and automatically run agent self-correction feedback loops in LangChain, LlamaIndex, CrewAI, DSPy, or vanilla LLM loops:

from agenda_intelligence.integrations import EvidenceClaim, EvidencePacket, EvidencePacketGuardrail, EvidenceSource

guardrail = EvidencePacketGuardrail(strict=True, max_repair_attempts=2)

# Optional zero-dependency typed input; plain dictionaries remain supported.
packet = EvidencePacket(
    claims=(EvidenceClaim("c1", "The board approved the budget.", ("s1",)),),
    sources=(EvidenceSource("s1", "The board approved the budget after review."),),
)

# Direct check
result = guardrail.check(packet)
if not guardrail.is_complete(result):
    repair_prompt = guardrail.get_repair_prompt(packet_json, result)
    # Provide repair_prompt back to LLM to revise output

# Automated retry loop with custom LLM generation function
final_packet, success, repair_history = guardrail.validate_or_repair(
    packet_json,
    llm_repair_fn=lambda prompt: my_llm_chain.invoke({"prompt": prompt}),
)

# Event-loop pipelines can await check_async(...) or validate_or_repair_async(...).
# LangGraph can use the dependency-free async node returned by:
node = guardrail.as_langgraph_node(packet_key="evidence_packet", result_key="evidence_check")

Concurrency & A2A Demos

The repository includes runnable end-to-end demonstrations of the agent-first architecture:

  • Bounded concurrency example (examples/infinite-swarm-batch.py): Sends 250 synthetic requests and reports transport latency and actual task states. It is a load demonstration, not a capacity benchmark or comparison with staff.

  • A2A step-up simulation (examples/agent-to-agent-negotiation.py): Demonstrates a synthetic request being stopped until operator-authorization evidence is supplied. No real transaction is authorized.

  • Profile scaffolder (scripts/agent-factory.py): Creates starter files for a proposed vertical profile. Generated files are inactive until schemas, implementation, tests, and review are added.


GitHub Action CI Integration

Add deterministic evidence linting to your repository CI workflow (.github/workflows/evidence-lint.yml):

name: Evidence Lint
on: [push, pull_request]

permissions:
  contents: read
  security-events: write

jobs:
  lint-evidence:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Validate evidence packet
        uses: vassiliylakhonin/agenda-intelligence-md@main
        with:
          path: 'evidence/packet.json'
          command: 'check'
          format: 'sarif'
          strict: 'true'

With format: sarif, findings are uploaded to GitHub code scanning and point to the corresponding claim_id line in the packet JSON. text and json output remain available.


Python API

import json
from pathlib import Path

from agenda_intelligence.services import check_evidence_packet, build_repair_prompt

packet = json.loads(Path("examples/evidence-packet/request.json").read_text())
result = check_evidence_packet(packet)
print(result["response"]["packet_status"])

# Generate actionable markdown repair instructions for an agent
if result["response"]["packet_status"] != "packet_complete":
    prompt = build_repair_prompt(packet, result["response"])
    print(prompt)

The service layer is stateless. It does not persist packet contents or fetch missing sources.


What this is

  • A small JSON contract for claim-backed AI output.

  • A deterministic preflight before human review.

  • A CLI and Python service suitable for local and CI use.

  • A local-file review adapter that returns a reviewer-facing Markdown or JSON result.

  • An inspectable base for domain-specific compatibility profiles.

What this is not

  • A general LLM evaluation platform.

  • A GRC, vendor-management, or document-storage system.

  • An agent authorization or policy-enforcement layer.

  • Legal, compliance, sanctions, financial, investment, insurance, or trading advice.

  • Proof that a source or claim is factually correct.


Why a repo full of markdown?

The repository predates the evidence-packet focus and also packages agent reasoning instructions. Files under skills/ are executable instructions for compatible agent runtimes, not ordinary prose documentation. They remain available for compatibility, but they are not the primary product interface.


MCP

The packaged MCP server exposes the same evidence-packet preflight to agent clients:

{
  "mcpServers": {
    "agenda-intelligence": {
      "command": "uvx",
      "args": ["--from", "agenda-intelligence-md", "agenda-intelligence-mcp"]
    }
  }
}

Run a focused stdio example against an editable install:

.venv/bin/python examples/evidence-packet/mcp_client.py \
  --command ".venv/bin/agenda-intelligence-mcp"

The example initializes the MCP server, calls check_evidence_packet with the synthetic packet, and prints only the review summary. See examples/evidence-packet/mcp_client.py and MCP.md.

Before using the result for an irreversible or high-stakes action, record the goal, supplied evidence, suspected unreliable evidence, assumptions, intended action, and stop/escalation conditions. The tool checks packet structure, not whether a claim is true or an action is authorized.

Existing MCP tools such as audit_claims, verify_quotes, grounded_check, and verify_claims remain compatible; no tool was removed or renamed.

pre_action_check adds a stateless action boundary on top of the existing claim audit. It returns continue, request_evidence, require_approval, or stop from caller-supplied evidence, risk, policy-check results, and an optional external approval reference. The caller still authenticates the actor, stores approvals, enforces the result, and performs the action. The request and response contracts are pre-action-check-request.schema.json and pre-action-check-response.schema.json. Twenty illustrative replay cases are in examples/pre-action-check/replay-cases.json.

Two authoring tools, create_brief and append_evidence, let an agent assemble a brief or an evidence pack step by step inside the contract instead of hand-building JSON and validating it afterwards. Both are deterministic and stateless: they validate on every call and return the document to the caller. They do not write files, retrieve sources, draft prose, or assess factual truth, and append_evidence never infers a supported claim status on its own.

Claude Code plugin installation also remains available:

/plugin marketplace add vassiliylakhonin/agenda-intelligence-md
/plugin install agenda-intelligence@agenda-intelligence

Compatibility profiles and adapters

The strategic-intelligence shell, HTTP API, A2A adapter, Cloudflare Workers, and five domain profiles remain in the repository. They demonstrate how the same service layer can be wrapped for different transports and domains. They represent active prototypes and technical wedges for vertical domains.

Compatibility surface

Reference

Strategic agenda analysis

Agenda-Intelligence.md

HTTP API

docs/deployment/http-api.md

A2A adapter

docs/deployment/a2a-adapter.md

Middle Corridor example

docs/use-cases/kazakhstan-middle-corridor.md

CIS secondary-sanctions example

docs/use-cases/cis-secondary-sanctions.md

Agentic interaction example

docs/use-cases/agentic-interaction-trust.md

Gulf maritime example

docs/use-cases/gulf-maritime-exposure.md

Kazakhstan market-entry example

docs/use-cases/kazakhstan-market-entry-readiness.md

Live A2A demo pack

docs/agenstry/demo-pack.md

The compatibility profiles are evidence-routing examples only. They do not provide legal, compliance, sanctions, financial, investment, insurance, or trading advice. Human review is required before any commercial action.


Verification Contract

The repository keeps three checks separate:

  1. check reports packet completeness and lexical-support diagnostics.

  2. grounded-check performs the older claim-to-corpus lexical diagnostic.

  3. verify-claims applies declared freshness, authority, independence, jurisdiction, and identifier rules to caller-supplied evidence.

None discovers the right sources for the caller. verified in the bounded Claim Verdict contract means the supplied evidence meets that declared contract; it is not absolute truth.


Schemas

Canonical schemas live under schemas/v1/. Packaged copies under src/agenda_intelligence/data/schemas/v1/ must remain byte-equivalent; CI checks this invariant.

Start with:

The full registry is in agent-manifest.json.


Before / after and benchmarks

The older agenda-analysis evaluation surface remains available for regression and compatibility work:

These are evaluation fixtures, not customer evidence or production benchmarks.


AnalysisBank

analysis-bank/ contains compatibility fixtures for reasoning-memory retrieval and failure-pattern regression. It is not part of the primary evidence-packet workflow.


Web3 UI & Autonomous Micropayment Rails (x402 on Base)

Agenda Intelligence MD natively integrates the x402 protocol on Base (Chain ID 8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913), unlocking zero-custody, machine-to-machine micropayments and self-service compliance intelligence for autonomous AI agents and institutional reviewers.

Interactive Web3 Screener: /corridor-bankability

Visit the interactive Trans-Caspian Corridor Bankability Screener at /corridor-bankability on any hosted Worker (e.g., https://agenda-intelligence-a2a.vassiliy-lakhonin.workers.dev/corridor-bankability):

  • Brave / Web3 Wallet Connection: Native browser wallet connect via Base network.

  • Instant CapEx & Covenant Stress-Testing: Evaluate debt covenants, sovereign guarantee backing, and DSCR metrics across Aktau-Baku, Poti-Constanța, and Middle Corridor transit legs.

  • On-Chain $25 USDC Unlock: Pay the $25.00 IFI Dossier unlock directly with your wallet to receive an unredacted institutional bankability report with full sensitivity tables and multilateral bank readiness scores.

Autonomous Agent Discovery & x402 Pricing Tiers

Every agent in the fleet advertises native x402 metadata via agentCard to autonomous registries (e.g., skillget.dev, AgenstryBot, ZeroMockProof):

Tier

Price (USDC on Base)

Scope & Capability

Endpoint

Micro-Check

$0.05

Instant single-probe compliance & screening triage

/v1/settle

Corridor Bankability Dossier

$25.00

Full unredacted IFI deal dossier with debt metrics

/v1/corridor-bankability/screen

Dedicated Pro Tenant

$490.00 / mo

High-throughput dedicated rate limits & API token

/v1/settle

Smart Fallback for Autonomous AI Agents

Autonomous agents interacting over A2A (message/send) or REST (/v1/...) can send natural language prompts (e.g., "Screen LLP KazTransSupply in Kazakhstan for secondary sanctions", "Due diligence for rare earth extraction in East Kazakhstan", or "Assess MT Gulf Pioneer transiting Hormuz"). The smart fallback engine heuristics extract counterparties, commodities, chokepoints, and jurisdictions with sensible defaults while explicitly declaring inferred_parameters: true to guarantee compliance traceability.


Status

Surface

Status

Evidence-packet request/response schemas

Implemented

check_evidence_packet Python service

Implemented

agenda-intelligence check packet auto-detection

Implemented

agenda-intelligence review local-file workflow

Implemented for UTF-8, Markdown, DOCX, and optional PDF input

agenda-intelligence review --format html

Implemented (Generative UI)

check_evidence_packet MCP tool

Implemented

AI Fleet (Vertical Workers)

Active (12 profiles deployed on Cloudflare Edge)

Interactive Web3 UI (/corridor-bankability)

Active (Brave / Web3 Wallet on Base)

x402 Base Micropayments

Active (USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913)

Agent Financial Guard

Implemented (Pre-sign transaction firewall for AI agents)

M2M Escrow Arbiter & Base Contract

Implemented (Autonomous B2B dispute resolution on Base)

Live Source Retrieval

Optional per profile; currently unconfigured in the hosted fleet

Current classification: Ecosystem Expansion & R&D.


Documentation

Topic

File

Pitch Deck (12 Slides)

docs/pitch/PITCH_DECK.md

Case Studies

docs/pitch/CASE_STUDIES.md

Unit Economics

docs/pitch/UNIT_ECONOMICS.md

Adoption

ADOPTION.md

Quickstart

docs/quickstart.md

Evidence audit

docs/evidence-audit.md

Local evidence review

docs/evidence-review.md

Factuality boundary

docs/factual-verification.md

Evaluation

docs/evaluation.md

Source policy

SOURCE_POLICY.md

Security

SECURITY.md

Threat model

docs/threat-model.md

Roadmap

ROADMAP.md


Repository layout

schemas/v1/                    public JSON contracts
src/agenda_intelligence/       Python service and transport adapters
examples/evidence-packet/      canonical packet example
tests/                         contract and regression tests
skills/                        compatibility agent instructions
deploy/cloudflare-worker/      compatibility Worker implementation
docs/                          reference and compatibility documentation

Development

pip install -e ".[dev]"
make ci
make verification-report

make verify-local also runs the compatibility Cloudflare Worker tests. make verification-report runs both verification surfaces and writes .verification/results.json: a deterministic, machine-readable record of the checks and hashed contracts. It uses no paid APIs and deliberately makes no claim about factual truth, live deployment health, adoption, or market value.


Roadmap

The current phase focuses on Product-Led Growth & Ecosystem Expansion. We are rapidly iterating on Generative UI for interactive evidence dashboards, deploying new vertical AI workers for adjacent domains (e.g., ESG, supply chain), and registering capabilities with agent catalogs (Agenstry).

See ROADMAP.md for the active expansion initiatives.


License

MIT

Available Tools

31 tools
agentic_interaction_trustAInspect

Triage the trust evidence for an agent-mediated interaction (identity, operator or principal authorization, tool scope, session authentication, action intent) before a high-stakes action executes. Pass a structured trust_request (actor, target_surface, requested_action, dated_sources, risk_question, decision_stage) matching agentic-interaction-trust-request.schema.json. Returns a triage recommendation, trust signal, decision-readiness score, and the specific missing trust evidence. Evidence triage only: not cybersecurity monitoring, identity verification, or authorization; human review is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
trust_requestYesStructured agentic interaction trust request. Call get_schema('agentic_interaction_trust_request') for the full nested contract.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses what the tool returns (triage recommendation, trust signal, decision-readiness score, missing trust evidence), its scope ('Evidence triage only'), and a key operational constraint (human review required). It does not mention authentication requirements or side effects, but 'triage' and 'evidence triage only' imply a read-only analysis.

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

Conciseness4/5

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

The description is dense but purposeful: purpose, input contract, return values, scope boundaries, and human-review requirement are all covered in three sentences. It is front-loaded with the core purpose. The only minor redundancy is repeating the 'evidence triage only' boundary after already saying 'not cybersecurity monitoring, identity verification, or authorization'.

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

Completeness4/5

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

Given the nested input object, no output schema, and no annotations, the description does a solid job: it specifies the required input shape, the return components, the non-goals, and the human-review requirement. The reference to an external schema file and get_schema adds a small dependency, but the description is still sufficient for an agent to decide whether to invoke this tool and what to pass.

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

Parameters3/5

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

Schema coverage is 100% because trust_request has a description, so the baseline is 3. The description adds the list of key fields (actor, target_surface, requested_action, dated_sources, risk_question, decision_stage) and references the schema file, but it does not explain the semantics of each field beyond their names. The schema's own description points to get_schema for the full nested contract, which is helpful but not fully self-contained.

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 opens with a specific verb and resource: 'Triage the trust evidence for an agent-mediated interaction' before a high-stakes action. It also names the exact input contract and output components, and explicitly distinguishes itself from cybersecurity monitoring, identity verification, and authorization, making it clearly separable from siblings like pre_action_check and validate_evidence.

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 clearly states when to use the tool ('before a high-stakes action executes') and what input to pass. It also provides exclusions ('not cybersecurity monitoring, identity verification, or authorization') and notes human review is required. However, it does not name specific sibling tools as alternatives, so the routing guidance is implicit rather than fully explicit.

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

agent_output_verificationAInspect

Decide whether another agent's claim-backed output is safe to relay onward. Use before forwarding, publishing, or acting on a downstream agent's answer that cites evidence: it reports which claims are grounded, which are unsafe to relay, and which evidence references are orphaned. Pass audit_json matching evidence-audit.schema.json (claims, evidence records, optional unsupported_claims). Returns a relay verdict with per-claim findings and owner actions. Evidence-readiness only: it does not verify factual truth, fetch or validate cited sources, or authorize an action.

ParametersJSON Schema
NameRequiredDescriptionDefault
audit_jsonYesClaim-level evidence audit of the output being relayed. Call get_schema('evidence_audit') for the full nested contract.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of the behavior, and it is unusually transparent: it says the tool reports per-claim findings, returns a relay verdict, and explicitly states it is evidence-readiness only and does not do factual validation, source fetching, or action authorization.

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 definition is compact but information-dense: purpose, use-before conditions, input guidelines, output description, and limitations each earn their place. The most decision-relevant constraint is front-loaded in the first sentence.

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 tool with one required nested object and no output schema, the description is complete enough. It covers what to pass, how it behaves, what will be returned, and what is explicitly not done, giving an agent a realistically safe basis to invoke and interpret the tool.

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

Parameters4/5

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

The schema already documents the single audit_json parameter fully, so the baseline is 3. The description adds helpful operational meaning by requiring JSON matching evidence-audit.schema.json, listing claims, evidence records, and optional unsupported_claims, so the agent knows exactly what contract to satisfy and where to find more detail.

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

Purpose5/5

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

The description states a specific verb and resource: deciding whether another agent's claim-backed output is safe to relay. It goes further by naming the value it produces: which claims are grounded, which are unsafe to relay, and which evidence references are orphaned, positioning it clearly against related verification 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?

The description explicitly lists when to use it: before forwarding, publishing, or acting on downstream claim-backed output. It gives clear exclusions by noting it does not verify factual truth, fetch sources, or authorize action; however, it does not name a specific sibling tool as the alternative for those cases, so the guidance is strong but not fully routed.

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

analyzeAInspect

Generate an auditable strategic-risk memo from a structured Agenda request. Use for sanctions, regulatory, geopolitical, trade, corridor, or policy-risk questions where the agent needs a memo with assumptions, scenarios, evidence discipline, and regional routing. Pass request matching agenda-request.schema.json. Returns a validated agenda-memo; when ANTHROPIC_API_KEY is unset it returns the assembled system_prompt for the host model to complete. No live source retrieval and no legal, compliance, financial, or investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYesAgenda request with question, geography, audience, depth, evidence mode, and output format. Call get_schema('agenda_request') for the full nested contract.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses several key behaviors: it returns a validated memo, or when ANTHROPIC_API_KEY is unset returns the assembled system_prompt for the host model to complete. It also clearly states limitations: 'No live source retrieval and no legal, compliance, financial, or investment advice.' This is valuable behavioral context beyond what any structured field would provide. A minor gap: it doesn't explicitly state whether the tool is a write operation or how it interacts with other components, but the description is quite thorough for a tool with one parameter.

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 a compact block of three sentences. The first sentence states purpose and scope. The second explains the request format and return behavior. The third lists limitations. Every sentence adds distinct value, no repetition, and key information is front-loaded. This is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 this tool has one nested parameter, no output schema, and no annotations, the description is quite complete. It covers what the tool does, when to use it, how the request is structured, the two possible return behaviors, and limitations. The only minor gap is that it doesn't detail the structure of the returned memo (output format) in depth, but since the request includes an output_format field and the sibling tools like validate_memo exist, an agent can infer the rest. This is solid coverage for a moderately complex tool.

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

Parameters4/5

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

Even though schema coverage is 100% and the request parameter is well-described in the schema (including an example and description), the description adds critical semantics: it explains that the request must match 'agenda-request.schema.json' and mentions the return behavior variation. It also references get_schema('agenda_request') for the full contract. This goes beyond the schema's basic property list, helping the agent understand how to construct the request properly. A 4 is appropriate since the schema already does heavy lifting, but the description adds meaningful guidance.

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

Purpose5/5

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

The description clearly states the tool's purpose: it generates an auditable strategic-risk memo from a structured Agenda request. It specifies the resource (Agenda request), the output (validated agenda-memo or system_prompt), and the scope (sanctions, regulatory, geopolitical, trade, corridor, or policy-risk questions). This distinguishes it from siblings like validate_memo, audit_claims, or specific risk tools (cis_secondary_sanctions_exposure) which serve different functions.

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 when to use: 'Use for sanctions, regulatory, geopolitical, trade, corridor, or policy-risk questions where the agent needs a memo with assumptions, scenarios, evidence discipline, and regional routing.' It doesn't explicitly name alternatives or when-not-to-use, but the context is clear enough that an agent could infer it's for memo generation rather than validation or specific deep dives. A slight deduction for not naming specific sibling tools as alternatives.

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

append_evidenceAInspect

Append a claim and its sources to an evidence pack and re-validate the result. Use when building an evidence pack incrementally as sources are read, instead of assembling the whole document by hand. Omit pack_json to start a new pack (topic is then required). A claim whose text already exists gains the new sources instead of being duplicated, and unsupported_claims is kept consistent with per-claim support_status. support_status is never inferred as supported: omitted it defaults to unsupported (no sources) or partially_supported (sources supplied). Returns the updated pack to the caller; it does not write files, fetch URLs, verify quotes, score source reliability, or verify factual truth.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimYesClaim text to add, or the exact text of an existing claim to extend.
topicNoPack topic. Required only when pack_json is omitted.
sourcesNoSource objects matching evidence-pack.schema.json: name, source_type, freshness, supports, limits, and optional url.
pack_jsonNoExisting evidence-pack object to extend. Omit to create a new pack from topic.
evidence_modeNoHow the pack was sourced. Defaults to reasoning_only for a new pack; when supplied it overwrites the value on an existing pack.
support_statusNoAnalyst judgement of claim support. Omit to take the conservative default; pass it explicitly to upgrade a claim or to change an existing one.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly. It discloses deduplication behavior, consistency maintenance of unsupported_claims, conservative support_status defaults, return behavior, and explicit non-goals. This is exemplary transparency for a mutation tool.

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 dense but every clause earns its place. It front-loads the core action and use case, then efficiently covers defaults, deduplication, return value, and boundaries without repetition or fluff.

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

Completeness4/5

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

For a 6-parameter tool with nested objects and no output schema, the description is highly complete: it explains return value, defaults, deduplication, and non-goals. It does not detail the exact shape of the returned pack or error behavior, but that is a minor gap given the richness elsewhere.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaningful semantics beyond the schema: existing claims gain sources instead of duplicating, support_status default logic, and the pack_json/topic relationship. This elevates it above baseline.

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

Purpose5/5

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

The description states a specific verb and resource: 'Append a claim and its sources to an evidence pack and re-validate the result.' It clearly distinguishes this from validation/audit siblings by emphasizing incremental construction and explicitly listing non-goals such as verifying quotes or factual truth.

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 context: 'Use when building an evidence pack incrementally as sources are read, instead of assembling the whole document by hand.' It also provides exclusions ('does not write files, fetch URLs...'), though it does not name alternative sibling tools directly.

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

audit_claimsAInspect

Validate a claim-level evidence audit and summarize support quality. Use after drafting or receiving a memo to check whether important claims point to evidence IDs with explicit support levels, uncertainty hooks, and risk-if-wrong notes. Pass audit_json matching evidence-audit.schema.json. Returns validity, support-level distribution, orphan evidence references, and unsupported-claim counts. It does not verify factual truth or source reputation.

ParametersJSON Schema
NameRequiredDescriptionDefault
audit_jsonYesParsed claim-level evidence-audit object to validate and summarize.

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It clearly states the tool returns validity, support-level distribution, orphan evidence references, and unsupported-claim counts. It also explicitly declares what it does not do (verifying truth or source reputation). It does not mention destructive actions or authentication needs, but the non-destructive nature is implied by 'returns' statements.

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

Conciseness5/5

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

The description is compact with four sentences, each serving a distinct purpose: stating the core action, usage context, input requirement, and output summary with a limitation. No redundant information.

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

Completeness5/5

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

Given the single parameter, lack of output schema, and annotations, the description covers all necessary aspects: what the tool does, when to use it, what input to provide, what it returns, and its limitations. It is fully adequate for the agent to use correctly.

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

Parameters5/5

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

Schema coverage is 100%, and the description adds significant meaning beyond the schema: it specifies that audit_json should match evidence-audit.schema.json, which guides the agent on expected structure. This is a crucial detail not present in the schema's description.

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

Purpose5/5

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

The description clearly states the tool validates a claim-level evidence audit and summarizes support quality. It specifies the resource (claim-level evidence audit) and the action (validate and summarize), distinguishing it from sibling tools like validate_brief and validate_evidence which likely operate on different scopes.

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 says when to use the tool ('after drafting or receiving a memo to check whether important claims point to evidence IDs...') and what it does not do ('does not verify factual truth or source reputation'), providing good guidance on appropriate contexts. However, it does not explicitly name alternative tools for different scenarios, which would strengthen the guidance.

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

check_evidence_packetAInspect

Check a caller-provided evidence packet before human review. Use when an AI output declares claims, source IDs, optional verbatim quotes, and the full supplied source text. Returns packet_complete, source_review_required, or packet_incomplete per claim and overall, with broken references, quote mismatches, lexical-support gaps, unmatched numbers, and owner actions. Deterministic and local-text only: it does not retrieve sources, score source authority, assess factual truth, or authorize an action.

ParametersJSON Schema
NameRequiredDescriptionDefault
packet_jsonYesClaims plus the complete source texts those claims reference. Call get_schema('evidence_packet_request') for the full nested contract.

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly states the tool is deterministic and local-text only, and explicitly lists what it returns (broken references, quote mismatches, etc.). It also clearly states what it does not do. This is strong behavioral disclosure, though it could add details on side effects (but it's read-only, which is implicit from local-text only). Score 4, not 5, because it doesn't explicitly state idempotency or error handling, but it's very transparent.

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 sentences, with the first sentence front-loading the purpose and usage condition. The second sentence lists return types and exclusions concisely. Every clause earns its place, and it's neither verbose nor missing information.

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

Completeness5/5

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

Given the tool has only one parameter with a nested structure, the description references get_schema for the full contract, which covers the parameter semantics. The output is described in terms of return values (packet_complete, etc.) and the exclusions are clear. There's no output schema, but the description lists the key output types. The tool is complex but the description covers everything an agent needs to decide whether to call it and what to expect.

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. The description adds value by explaining the purpose of the packet_json parameter (claims plus complete source texts) and points to get_schema for the full contract. This goes beyond just naming the parameter, so it earns a 4.

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

Purpose5/5

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

The description clearly states the tool checks a caller-provided evidence packet before human review, with specific verbs and resource. It distinguishes itself from siblings by listing its deterministic scope and what it does NOT do, which helps an agent differentiate it from tools like verify_claims or validate_evidence.

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 'Use when an AI output declares claims, source IDs, optional verbatim quotes, and the full supplied source text.' This gives a concrete trigger condition. It also lists exclusions ('does not retrieve sources, score source authority, assess factual truth, or authorize an action'), which helps an agent decide against using it for those purposes. However, it doesn't name specific sibling tools as alternatives, but the exclusions are enough to route correctly.

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

check_memo_qualityAInspect

Check a schema-shaped Agenda memo against post-hoc evidence-readiness quality guardrails. Use after validate_memo or on any external model memo to catch schema-valid but unsafe output: approval/clearance overreach, hidden evidence gaps, generic monitoring, weak owner actions, or evidence-mode discipline failures. Returns schema_valid separately from ok; it does not verify factual truth.

ParametersJSON Schema
NameRequiredDescriptionDefault
memo_jsonYesParsed Agenda memo JSON object to check for evidence-readiness quality.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the tool returns schema_valid separately from ok, does not verify factual truth, and checks for specific quality issues. This is fairly transparent about 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?

The description is two sentences: first defines purpose, second gives usage and behavioral notes. Every sentence is necessary and adds value, with no extraneous 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?

Despite no output schema, the description explains the return structure (schema_valid separate from ok) and lists what the tool catches. It is sufficiently informative for a single-parameter tool with 100% schema coverage.

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

Parameters3/5

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

Schema coverage is 100% with a clear parameter description. The tool description adds little beyond restating that the memo is 'schema-shaped,' so the parameter meaning is already adequately conveyed by the schema.

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

Purpose5/5

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

The description clearly states the tool checks an Agenda memo against evidence-readiness quality guardrails, listing specific failure modes. It distinguishes itself from siblings like validate_memo by noting it catches schema-valid but unsafe output and does not verify factual truth.

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

Usage Guidelines4/5

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

Explicitly says to use after validate_memo or on any external model memo, and states what it does not do (verify factual truth). Provides context for when to use but lacks explicit when-not-to-use scenarios.

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

cis_secondary_sanctions_exposureAInspect

Triage secondary-sanctions exposure for a CIS-domiciled counterparty (Kazakhstan, Uzbekistan, Kyrgyzstan, Tajikistan, Turkmenistan, Georgia, Armenia, Azerbaijan, Moldova) for EU / UK / UAE / Singapore enhanced due diligence against OFAC EO 14114, the EU sanctions package, UK OFSI, and FATF / EAG typologies. Pass a structured exposure_request (counterparty, exposure_facets, jurisdiction_review_scope, dated_sources, risk_question, decision_stage) matching cis-secondary-sanctions-request.schema.json. Returns a triage recommendation, decision-readiness score, exposure dimensions, evidence gaps, and minimum sources before review. Local stdio runs on user-supplied evidence only (no live retrieval); a name match is not identity verification; human review is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
exposure_requestYesStructured CIS secondary-sanctions exposure request. Call get_schema('cis_secondary_sanctions_request') for the full nested contract.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden, and it delivers: it discloses that local stdio runs on user-supplied evidence only, that no live retrieval happens, that a name match is not identity verification, and that human review is required. It also names the exact output components 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?

The description is information-dense and well-ordered: purpose, input contract, output, then operational caveats. It is longer than average, but the legal-regime enumeration and field listing are necessary for correct invocation. Slightly compressed phrasing would make it a 5.

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

Completeness5/5

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

Despite having no output schema and no annotations, the description explains the required input shape, the legal review scope, the output dimensions, the evidence limitations, and the need for human review. This is adequate for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

The schema already provides 100% coverage for the single parameter, including nested object examples and a pointer to get_schema for the full contract. The tool description restates the key fields but does not add materially new semantics beyond what the schema already captures.

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 precise verb ('triage'), a specific resource ('secondary-sanctions exposure for a CIS-domiciled counterparty'), and enumerates the legal frameworks and jurisdictions involved. This clearly communicates what the tool does and distinguishes it as a specialized risk-assessment tool among the sibling 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?

The description gives concrete usage context: EU/UK/UAE/Singapore enhanced due diligence against OFAC EO 14114, EU sanctions, UK OFSI, and FATF/EAG typologies. It does not explicitly say when to prefer this tool over a sibling or when not to use it, so it falls short of full alternative routing guidance.

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

create_briefAInspect

Assemble an agenda brief from supplied fields and report which required fields are still missing. Use when producing a brief inside the protocol instead of hand-building JSON: call it with whatever is known so far, read missing_required, and call again with the remaining fields. Call with no arguments to get an empty scaffold plus the required field list. evidence_mode defaults to reasoning_only. Returns the assembled brief object and its schema errors to the caller; it does not write files, retrieve sources, draft prose, or verify factual truth.

ParametersJSON Schema
NameRequiredDescriptionDefault
scenariosNoOptional scenario objects with name, description, and indicators.
confidenceNoOptional confidence as a level string or a level/score/reasoning object.
watch_nextNoObservable indicators to monitor next. At least one is required.
bottom_lineNoOne-line decision-relevant conclusion.
what_changedNoWhat is materially different now versus the prior state.
evidence_modeNoHow the brief was sourced. Defaults to reasoning_only; set explicitly when sources were actually supplied.
signal_markersNoOptional qualifying markers that do not replace signal_classification.
why_it_mattersNoOptional consequence framing.
affected_actorsNoOptional list of actors materially affected.
main_uncertaintyNoThe premise that would most change the conclusion if false.
data_integrity_notesNoOptional surfaced concerns about prompt injection, source anomalies, or retrieval limits. Records a concern; it is not an automated trust verdict.
signal_classificationNoSignal class from agenda-brief.schema.json (for example signal, weak_signal, structural_shift). Call get_schema('agenda_brief') for the full enum.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly. It discloses the iterative 'missing_required' return, the evidence_mode default, the scaffold behavior, the returned schema errors, and explicit non-side-effects: no file writes, source retrieval, prose drafting, or factual verification. This is far richer than a bare mutation or read hint.

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 a tight paragraph with no filler. Every sentence earns its place: purpose, usage loop, scaffold behavior, default, and exclusions. It is front-loaded with the core action and gives enough detail without becoming a manual.

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

Completeness5/5

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

Given 12 parameters, no output schema, and no annotations, the description covers all decision-relevant context: how to invoke iteratively, how to bootstrap with no arguments, what the response includes, and what the tool will not do. An agent has enough to select and call the tool correctly without further inference.

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 value beyond the schema by specifying the evidence_mode default and the tool's missing-required reporting, which tells the agent how to use the 12 parameters iteratively rather than merely what each field means.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Assemble an agenda brief from supplied fields and report which required fields are still missing.' This clearly distinguishes it from siblings like validate_brief, which validate existing briefs, and get_schema, which returns schemas. It also states what it returns, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description gives an explicit usage pattern: call with known fields, read missing_required, call again with remaining fields, or call with no arguments for a scaffold. It also gives a default behavior ('evidence_mode defaults to reasoning_only') and states clear when-not conditions (does not write files, retrieve sources, draft prose, or verify factual truth), so an agent knows when to avoid it.

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

deep_diveAInspect

Reserved placeholder for a future Agenda Intelligence v2 deep-dive workflow. Do not use for current detailed analysis. For production work today, call analyze with request.depth set to scenario or red_team. This tool only returns a planned status message and performs no analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
aspectNoOptional future deep-dive aspect. Currently ignored because the tool is reserved.

TDQS

A4.7/5.0
Behavior5/5

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

The description fully discloses behavior: it only returns a planned status message, performs no analysis, and the aspect parameter is ignored. Without annotations, the description carries the burden and does so completely.

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 no wasted words. Front-loaded with the critical 'do not use' message, then provides alternative.

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

Completeness5/5

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

Despite being a placeholder, the description is complete: explains purpose, current non-functionality, and alternative. No output schema needed for a status message tool.

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

Parameters3/5

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

Schema coverage is 100% and the schema already describes the parameter as optional and ignored. The description adds no new meaning beyond confirming it's ignored, so a baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states this is a reserved placeholder for a future deep-dive workflow, differentiating it from sibling tools by explicitly directing to use 'analyze' instead. It specifies the tool's action: returns a status message and performs no analysis.

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?

Provides explicit guidance: 'Do not use for current detailed analysis' and 'For production work today, call analyze with request.depth set to scenario or red_team'. This clearly tells when to not use and identifies the alternative.

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

generate_repair_promptAInspect

Generate actionable self-correction instructions for an LLM agent from an evidence packet request. Inspects validation and claim-level issues (missing sources, misquoted excerpts, unmatched numbers, polarity/negation mismatches, weak lexical support) and formats a structured markdown prompt for the agent to revise its claims and citations.

ParametersJSON Schema
NameRequiredDescriptionDefault
packet_jsonYesEvidence packet request JSON to analyze and generate repair instructions for. Call get_schema('evidence_packet_request') for the full nested contract.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does a good job: it names the internal analysis steps (missing sources, misquoted excerpts, polarity mismatches, etc.) and the output form (structured markdown prompt). It stops short of disclosing edge-case behavior such as invalid or incomplete packet handling, but the core behavior is clear.

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 packed sentences front-load the purpose and then enumerate the issue types and output format. Every phrase contributes meaning, and there is no redundant restating of the tool name.

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

Completeness4/5

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

Given a single nested-object parameter and no output schema, the description covers the input purpose, analysis scope, and output type, and directs the agent to the full contract. It would be more complete with explicit return-value details or error behavior, but what is present is largely sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter already has a baseline explanation. The description adds a useful pointer to get_schema('evidence_packet_request') and reinforces the parameter's purpose, but it does not elaborate on how each nested field is used. A 3 is appropriate since the schema carries most of 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?

The description states a distinct action ('Generate actionable self-correction instructions') and a specific resource ('from an evidence packet request'), then details the issue categories it inspects and the markdown prompt it produces. This clearly separates it from sibling validation/audit tools like validate_evidence or audit_claims.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 use when repair instructions are needed from an evidence packet, but it does not explicitly state when to choose this over alternative tools, nor does it mention exclusions or prerequisites. An agent must infer the selection logic from the tool name and general context.

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

get_lensAInspect

Return the full markdown for one packaged regional or sector lens. Use after list_lenses when an agent needs the actual specialist context, such as the Central Asia/Caspian or sanctions lens, for a strategic-risk task. Pass lens_type and lens_id exactly as listed. Returns static markdown; it does not retrieve live events or decide which lens should be used.

ParametersJSON Schema
NameRequiredDescriptionDefault
lens_idYesSpecific lens identifier returned by list_lenses.
lens_typeYesLens family from list_lenses: 'regional' or 'sector'.

TDQS

A4.9/5.0
Behavior5/5

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

No annotations exist, so description carries full burden. It discloses static markdown, idempotent nature, and limitations (no live events, no decision).

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 concise sentences front-loading purpose, then guidance, then behavioral notes. No redundancy.

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

Completeness5/5

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

Despite no output schema, description states return type (static markdown) and clarifies non-live nature. Complete for tool's simplicity.

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%, baseline 3. Description adds context: parameters must be passed exactly as listed, lens_type is a family from list_lenses.

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

Purpose5/5

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

The description clearly states the tool returns the full markdown for a lens, specifying the resource type (regional or sector) and distinguishing from list_lenses.

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 when to use (after list_lenses for actual context) and what not to do (no live events, no decision-making). Provides instruction to pass parameters exactly.

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

get_protocolAInspect

Return packaged Agenda Intelligence protocol markdown. Use when an agent needs the reasoning contract, evidence-discipline rules, or operating instructions before producing strategic-risk analysis. Pass name='entrypoint' for the main protocol. Returns markdown text from the installed package; it does not analyze a question or validate user data.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProtocol document name. Use 'entrypoint' for the main Agenda-Intelligence.md.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, description fully describes behavior: returns markdown from installed package, no side effects, specific parameter hint. No contradictions.

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, no fluff. First sentence states purpose, second gives usage, third adds exclusions and parameter hint. Very efficient.

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?

Covers all necessary aspects: return type, usage context, initial parameter value, limitations. Complete for a simple retrieval tool with no 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 coverage is 100% with description for 'name' parameter. Description adds specific guidance: 'Pass name=\"entrypoint\" for the main protocol', slightly exceeding 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?

Clearly states 'Return packaged Agenda Intelligence protocol markdown' with specific verb and resource. Differentiates from sibling tools like audit_claims and validate_brief by specifying it returns protocol text, not analysis.

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 when to use: 'when an agent needs the reasoning contract...' and what not to use for: 'does not analyze a question or validate user data.' Provides clear context for selection.

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

get_schemaAInspect

Return a packaged Agenda Intelligence JSON Schema so an agent can construct a valid payload before calling validate_brief, validate_evidence, validate_memo, analyze, or a vertical worker. Pass name as the schema key (for example agenda_brief, evidence_pack, agenda_memo, middle_corridor_deal_risk_request), its file name, or its bare stem; omit name to list the available schema keys. Returns the schema document and its version. Contract discovery only: it does not validate data, fill in a template, or verify factual truth.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSchema key, file name, or bare stem. Omit to list all available schema names.

TDQS

A5/5.0
Behavior5/5

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

Despite no annotations, the description fully discloses the tool's behavior: it returns a schema document and version, is read-only, and explicitly states what it does not do (validate data, fill templates, verify truth).

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 clear, well-structured sentences. Every word adds value, and the purpose is front-loaded.

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

Completeness5/5

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

Given the tool's simplicity (one optional parameter, no output schema), the description is complete: it explains purpose, usage, parameters, and limitations without gaps.

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

Parameters5/5

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

The schema description coverage is 100%, and the description adds valuable context by listing example schema keys (agenda_brief, evidence_pack, etc.) and explaining the effect of omitting the parameter.

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

Purpose5/5

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

The description clearly states the tool returns a packaged Agenda Intelligence JSON Schema for constructing valid payloads before calling specific tools. It distinguishes itself from sibling tools by specifying its role in schema discovery, not validation or analysis.

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 tells how to use the name parameter (provide a key, file name, or omit to list all), and clarifies the tool is for contract discovery only, not for validation or factual checking.

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

get_signalAInspect

Return one packaged strategic-risk signal markdown file by ID. Use after list_signals when an agent needs the full text of a specific archived signal for context or examples. Pass signal_id without the .md extension. Returns static markdown from the installed package; it does not fetch live updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
signal_idYesSignal identifier returned by list_signals, without a file extension.

TDQS

A4.7/5.0
Behavior4/5

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

Discloses that it returns static markdown from package and does not fetch live updates. No annotations provided, so description carries burden. Additional detail on error or permissions would improve, but sufficient for a simple read operation.

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 concise sentences: purpose, usage context, behavioral note. No wasted words; front-loaded with key info.

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?

Simple tool with one parameter and no output schema. Description fully covers purpose, use case, parameter format, and behavior, making it complete for an agent.

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%. Description adds context: signal_id comes from list_signals and should not include .md extension. This aids correct usage beyond 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?

Clearly states verb (return), resource (strategic-risk signal markdown file), and scope (by ID). Distinguishes from sibling list_signals which returns multiple signals.

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 specifies when to use ('after list_signals') and what for ('full text of a specific archived signal'). Also instructs to pass signal_id without .md extension, avoiding common error.

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

grounded_checkAInspect

Check whether a caller-supplied corpus of source texts lexically supports each claim. Use when you have claims plus the full text of the sources they should rest on and need a deterministic grounded/weakly_grounded/ungrounded verdict per claim before human review. Pass request_json matching grounded-check-request.schema.json (claims with claim_id/claim_text and optional verbatim quotes, corpus documents with corpus_id/text). Returns per-claim grounding status, coverage, best-matching passage, unmatched numeric values, quote checks, and owner actions. Local-text only: no outbound requests, no source discovery, no source-reliability scoring, and no factual-truth verification — grounding in a wrong corpus does not make a claim true.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_jsonYesGrounded-check request: claims (claim_id, claim_text, optional quotes) plus corpus documents (corpus_id, text).

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It discloses being local-text only, deterministic, and lists specific excluded behaviors (source discovery, reliability scoring, factual truth). This fully informs the agent of boundaries.

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 front-loaded sentences: purpose, usage, exclusions, output. Every sentence adds unique value with no redundancy or fluff.

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

Completeness5/5

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

Given one complex parameter, no annotations, and no output schema, the description fully covers inputs, outputs, and behavioral constraints. It clearly differentiates from 18+ siblings, making it complete for agent decision-making.

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 already describes the single parameter with 100% coverage, but description adds meaningful context: references a specific schema file, mentions optional verbatim quotes, and describes the return fields (grounding status, coverage, best passage, etc.), compensating for missing output schema.

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

Purpose5/5

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

The description uses a specific verb ('check') and resource ('corpus of source texts supporting claims'), clearly stating the tool's function. It distinguishes from siblings like 'verify_claims' and 'audit_claims' by specifying it checks lexical support, not factual truth.

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 states when to use: when you have claims and full source texts needing a deterministic verdict before human review. Also explicitly states when not: no outbound requests, source discovery, reliability scoring, or factual verification, implying alternative tools for those cases.

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

gulf_maritime_exposureAInspect

Triage maritime sanctions and chokepoint-disruption exposure for a vessel/voyage transiting the Strait of Hormuz, Persian/Arabian Gulf, Gulf of Oman, Bab-el-Mandeb, or Red Sea (Iran-oil, Russia price-cap, dark-fleet, STS transfer, flag-hopping, P&I gap, AIS manipulation). Pass a structured exposure_request (vessel/voyage, route, cargo, counterparties, dated_sources, risk_question, decision_stage) matching gulf-maritime-exposure-request.schema.json. Returns a triage recommendation, exposure signal, decision-readiness score, supplied vs. minimum-required sources, and evidence gaps. Pre-compliance evidence triage only: no live retrieval, does not resolve vessel ownership or verify identity, no legal or sanctions advice; human review is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
exposure_requestYesStructured Gulf maritime exposure request. Call get_schema('gulf_maritime_exposure_request') for the full nested contract.

TDQS

A4.5/5.0
Behavior4/5

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

The description explicitly discloses that the tool is pre-compliance evidence triage only, with no live retrieval, does not resolve vessel ownership or verify identity, no legal or sanctions advice, and requires human review. With no annotations provided, the description carries the full burden, and it does so clearly. It adds context about decision-readiness scoring and evidence gaps that are not present in the schema. It could be more explicit about whether it mutates state, but the read-only nature is strongly implied by 'triage' and the return 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?

The description is dense but well-structured: one sentence for the scope and risk facets, one for the input format/returns, and one for limitations and human review. No filler words. The key limitation (no live retrieval, human review required) is front-loaded before the returns are fully described, which is a good ordering for risk-sensitive tools.

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?

The tool has a single parameter with extensive schema documentation and an explicit pointer to the full schema via get_schema('gulf_maritime_exposure_request'). The description covers all key behavioral context, inputs, returns, and caveats. The output schema is absent, but the description covers the key outputs (triage recommendation, exposure signal, decision-readiness score, source comparison). For a complex, sensitive tool, no critical information for correct invocation is missing.

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

Parameters4/5

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

The schema description coverage is 100% for the single top-level parameter (exposure_request), with a detailed inline description and a reference to the full schema via get_schema. The tool description adds value by explaining the purpose of passer input (vessel/voyage, route, cargo, counterparties, dated_sources, risk_question, decision_stage) and confirming the matching schema. It doesn't repeat field-by-field semantics but points to the authoritative schema contract, which is appropriate at this parameter's level.

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

Purpose5/5

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

The description clearly states the tool triages maritime sanctions and chokepoint-disruption exposure for vessels/voyages through specific regions (Hormuz, Persian/Arabian Gulf, Gulf of Oman, Bab-el-Mandeb, Red Sea). It names specific risk facets (Iran-oil, Russia price-cap, dark-fleet, STS transfer, flag-hopping, P&I gap, AIS manipulation) and explicitly notes the input schema reference. This distinguishes it from broader sibling tools like middle_corridor_deal_risk or cis_secondary_sanctions_exposure, which focus on other geographies/risks.

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 provides clear guidance on when the tool is appropriate — for pre-compliance evidence triage of vessel/voyage risk in specific Gulf/Red Sea regions. It explicitly states the tool does NOT do live retrieval, resolve ownership, verify identity, or provide legal advice, and calls for human review. However, it does not explicitly name alternative sibling tools to use when those excluded functions are needed, so it falls slightly short of an explicit 'instead use X' pattern.

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

kazakhstan_market_entry_readinessBInspect

Grade a Kazakhstan market-entry file (distribution, import, service, showroom, EPC, renewable-energy, infrastructure, technology-transfer, or partner-entry) against a staged source-requirement taxonomy before a launch, budget, or partner commitment. Pass a structured readiness_request (entry_mode, sector, market_entry_file, dated_sources, decision_stage) matching market-entry-readiness-request.schema.json. Returns a gate decision, readiness label, evidence gaps, claim audit, owner actions, and watch-next indicators. Evidence triage only: not legal, compliance, customs, tax, sanctions, or launch-authorization advice; no live retrieval; human review is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
readiness_requestYesStructured Kazakhstan market-entry readiness request. Call get_schema('market_entry_readiness_request') for the full nested contract.

TDQS

B3.2/5.0
Behavior2/5

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

There are no annotations, so the description carries the full behavioral burden. It does mention 'Evidence triage only', but it omits important constraints like how it handles missing sources or whether it flags incomplete requests. It doesn't disclose if it outputs certain errors, how it handles edge cases, or notable limitations beyond not being legal advice. Also, it says 'no live retrieval', but that's a constraint; overall behavioral transparency 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.

Conciseness4/5

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

The description is rich and informative, covering purpose, inputs, outputs, and limitations in a clear, front-loaded manner. It's a long sentence but not wasteful; each part adds value. However, it could be slightly tightened, like removing 'distribution, import...' list if it's already in the schema, but it's not redundant.

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

Completeness3/5

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

Given the schema fully describes the request structure, and a tool helps, the description is fairly complete for inputs and outputs. It clarifies the output items and limitations, but it doesn't explain how the gate decision is derived, or what 'watch-next' indicators mean, or what happens with incomplete sources. There's also no info on output format beyond a label. It's adequate but leaves some 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?

The description mentions the main parameter 'readiness_request' and says it must match a schema, but since schema coverage is 100% and there's one parameter, the description adds minimal semantic meaning. It repeats that it's a structured request without adding details like the significance of 'decision_stage' or how it influences the output. It's adequate but not enriching.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 has a clear topic and specific action, saying it grades a Kazakhstan market-entry file against a staged source-requirement taxonomy and returns a gate decision. However, while it lists many entry modes, it doesn't directly mention that this tool is the one to use for 'readiness' versus other assess tools. It's still quite specific and useful, just not perfectly distinguishing it from siblings like validate_brief.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 input requires a structured readiness_request and explains what it returns, but it doesn't explicitly say when to prefer this tool over alternatives, nor does it mention any exclusions like 'use validate_evidence for evidence packets'. The context of 'before a launch, budget, or partner commitment' implies usage windows, but that's not explicit guidance on tool selection.

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

list_lensesAInspect

List packaged regional and sector lens IDs available to Agenda Intelligence. Use before get_lens when an agent needs to discover which geography or sector reference packs can be loaded. Optionally filter by lens_type='regional' or 'sector'. Returns metadata only; it does not return full lens markdown or run analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
lens_typeNoOptional filter. Use 'regional' for geography lenses or 'sector' for sector lenses.

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It states the tool returns metadata only, not full lens markdown or analysis results, and implies it is a read-only operation. No contradictions.

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 redundancy, and the key function is front-loaded. Every sentence adds value.

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

Completeness4/5

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

With no output schema, the description clarifies the return type (metadata only, not full content). It adequately covers purpose, usage, and limitations for a simple listing tool. Slightly more detail on metadata fields could improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 parameter. The description adds 'Optionally filter by lens_type="regional" or "sector"', which mirrors the schema description without adding new information. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists packaged regional and sector lens IDs, with the verb 'list' and resource 'lens IDs'. It distinguishes itself from the sibling tool get_lens by saying 'Use before get_lens'.

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

Usage Guidelines5/5

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

The description explicitly says 'Use before get_lens when an agent needs to discover which geography or sector reference packs can be loaded' and mentions optional filtering by lens_type. This provides clear when-to-use and when-not-to-use guidance.

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

list_signalsAInspect

List packaged strategic-risk signal records vendored from Global Think Tank Analyst. Use to discover available signal IDs before calling get_signal, or to show a static archive index inside an agent workflow. Returns the packaged signals/index.json snapshot. Read-only and offline: it does not fetch live news or update the archive.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: returns a snapshot, read-only, offline, and does not fetch live news. This is comprehensive for a tool with no annotations.

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

Conciseness5/5

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

The description is concise (three sentences), front-loaded with the core purpose, and every sentence adds unique value. No wasted words.

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

Completeness5/5

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

Given no parameters, no output schema, and low complexity, the description covers purpose, usage, and behavioral traits completely. No missing information for an agent to use the tool correctly.

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

Parameters4/5

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

The tool has zero parameters, so a baseline score of 4 is appropriate. The description does not need to add parameter meaning as none exist.

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 the tool lists packaged strategic-risk signal records from a specific source, clearly identifying the verb and resource. It distinguishes from sibling tools like get_signal by indicating its role as a discovery tool for signal IDs.

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 provides explicit use cases: discovering signal IDs before calling get_signal or showing a static archive index. It implies not to use for live updates by stating it is read-only and offline, though it doesn't name specific alternatives for live fetching.

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

list_source_categoriesAInspect

List source requirement category slugs packaged with Agenda Intelligence. Use this first when you do not know which category to pass to source_plan or source_coverage. Returns category IDs and per-pack counts. Discovery only: it does not discover sources, validate coverage, or verify factual truth.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Discloses it returns category IDs and per-pack counts, is discovery-only, and does not discover sources or verify truth. Lacks explicit statement of idempotence or safety, but adequate given no annotations.

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

Conciseness5/5

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

Four crisp sentences, front-loaded with purpose, then usage, output, and limitations. No wasted words.

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?

Fully covers purpose, usage, output, and boundaries for a simple parameterless tool with no 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?

No parameters with 100% schema coverage, but description adds value by explaining output (category IDs and per-pack counts) and usage context beyond schema.

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

Purpose5/5

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

The description clearly states it lists source requirement category slugs, specifies the action ('List'), and distinguishes from sibling tools like source_plan and source_coverage.

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 'Use this first when you do not know which category to pass to source_plan or source_coverage' and notes limitations, providing clear when-to-use and when-not-to-use guidance.

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

middle_corridor_deal_riskAInspect

Screen a Kazakhstan / Middle Corridor (Trans-Caspian) trade deal for sanctions-adjacent and corridor risk before signature, shipment, insurer handoff, or committee review. Pass a structured deal_risk_request (route, cargo, counterparties, dated_sources, risk_question, decision_stage) matching middle-corridor-deal-risk-request.schema.json. Returns a triage recommendation, risk signal, decision-readiness score, supplied vs. minimum-required source categories, evidence gaps, and a high-risk-jurisdiction presence flag. Pre-compliance evidence triage only: no live retrieval, no factual-truth verification, no legal or sanctions advice; human review is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
deal_risk_requestYesStructured Middle Corridor deal-risk request. Call get_schema('middle_corridor_deal_risk_request') for the full nested contract.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and exceeds it. It discloses exactly what the tool returns (triage recommendation, risk signal, decision-readiness score, supplied vs. minimum-required source categories, evidence gaps, high-risk-jurisdiction flag), and — critically — what it does NOT do (no live retrieval, no factual-truth verification, no legal/sanctions advice). It even routes the agent to get_schema for the full contract rather than hiding the nesting.

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?

Five dense, purposeful sentences, each earning its place: trigger points, input contract reference, output enumeration, and firm scope limitations. The disclaimers about no legal advice and human review are operationally necessary for a sanctions-adjacent tool and not padding. Loses one point for density — the single-sentence cascade of disclaimers could be lightly structured — but there is no appreciable waste.

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

Completeness4/5

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

For a high-complexity tool (nested request object, sanctions-adjacent domain, 1 param with 100% schema coverage, no output schema, no annotations), the description compensates thoroughly: it enumerates all six output components since no output schema exists, explains the input shape, and points to the full contract location. Loses a point because, without an output schema, the return-value prose list is the only contract and its structure/format remains unspecified — a minor gap given how much the description gets right.

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 value above baseline by enumerating the key fields inside deal_risk_request (route, cargo, counterparties, dated_sources, risk_question, decision_stage) and pointing to 'middle-corridor-deal-risk-request.schema.json' plus the get_schema call for the full nested contract. The schema's own description similarly guides the agent to get_schema('middle_corridor_deal_risk_request'). The only reason not to give a 5 is that the description's list is illustrative rather than exhaustive of the nested contract, so the agent must still fetch the schema for field-level semantics.

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

Purpose5/5

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

The description opens with a specific verb + resource + scope: 'Screen a Kazakhstan / Middle Corridor (Trans-Caspian) trade deal for sanctions-adjacent and corridor risk.' It names exact trigger points (before signature, shipment, insurer handoff, committee review) and the corridor focus clearly distinguishes it from siblings like gulf_maritime_exposure and cis_secondary_sanctions_exposure without needing to compare schemas.

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

Usage Guidelines4/5

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

The 'when' is explicit and well-covered: 'before signature, shipment, insurer handoff, or committee review,' and the 'when-not' is also clear with 'Pre-compliance evidence triage only: no live retrieval, no factual-truth verification, no legal or sanctions advice; human review is required.' It misses a point only by not naming alternative sibling tools explicitly (e.g., when to prefer cis_secondary_sanctions_exposure instead), though the corridor-specific scope makes this largely self-evident.

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

pre_action_checkAInspect

Route a caller-controlled action to continue, request_evidence, require_approval, or stop using caller-supplied claim evidence, risk tier, policy checks, and an optional external approval reference. Resubmit the same run_id after adding evidence or approval. Readiness only: the tool does not authenticate, authorize, enforce, persist state, or perform the action.

ParametersJSON Schema
NameRequiredDescriptionDefault
action_requestYesStructured pre-action check request. Call get_schema('pre_action_check_request') for the full nested contract.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and handles it well. It explicitly discloses non-behaviors: 'does not authenticate, authorize, enforce, persist state, or perform the action.' This is meaningful, non-obvious context that prevents an agent from assuming side effects.

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

Conciseness5/5

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

Three dense sentences with no filler: the main routing behavior is front-loaded, the resubmission workflow follows, and the readiness boundary closes. 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?

The description names the four possible routes, covers input families, and clarifies non-effects, which is strong for a tool with no output schema and no annotations. It does not explain the exact decision criteria that map policy checks and evidence to a specific route, but it points to get_schema for the full nested contract.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by identifying the semantically important inputs—'caller-supplied claim evidence, risk tier, policy checks, and an optional external approval reference'—and by explaining the resubmission semantics around run_id.

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 opens with a specific verb ('Route') and names both the object ('a caller-controlled action') and the four possible outcomes: continue, request_evidence, require_approval, or stop. It also distinguishes itself as a readiness-only decision router, separating it from sibling validation/analysis 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?

The description gives clear contextual guidance: it is a readiness check that does not enforce or persist, and it explicitly instructs callers to 'Resubmit the same run_id after adding evidence or approval.' It does not name alternative tools explicitly, so some inference about when to choose this over siblings remains.

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

score_outputAInspect

Score a before/after pair of agenda-analysis text with the bundled heuristic rubric. Use in evals or demos to compare whether an Agenda Intelligence rewrite improved structure, evidence labeling, uncertainty handling, and decision-readiness. Pass before_text and after_text as plain strings. Returns a heuristic score and breakdown; it is not a factuality, legal, compliance, or investment judgment.

ParametersJSON Schema
NameRequiredDescriptionDefault
after_textYesRevised analysis text to score against the protocol rubric.
before_textYesOriginal analysis text before Agenda Intelligence processing.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool uses a 'heuristic rubric' and returns a 'heuristic score and breakdown', and clarifies it is not definitive. However, it lacks details on side effects, authorization needs, or rate limits. The behavioral insight is partial but adequate for a non-destructive evaluation tool.

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 a single, well-structured paragraph. It front-loads the core purpose, follows with usage guidance, provides technical input instructions, clarifies limitations, and mentions output. Every sentence earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 explain the output format. It mentions 'Returns a heuristic score and breakdown' but does not detail the breakdown structure or where the rubric originates. Given the tool's role in evals/demos and many siblings, the description is adequate but lacks output specifics that would help an agent use the result effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (before_text, after_text) as plain strings. The description restates this ('Pass before_text and after_text as plain strings') and adds minor context ('Revised analysis text...' and 'Original analysis text...'). This adds little beyond the schema, achieving 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?

The description clearly states it 'Score a before/after pair of agenda-analysis text' and specifies the evaluation criteria (structure, evidence labeling, uncertainty handling, decision-readiness). The name and description align well. However, it does not explicitly differentiate from sibling tools like 'analyze' or 'validate', though the pair-input nature is distinctive.

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 says 'Use in evals or demos to compare whether an Agenda Intelligence rewrite improved...', providing clear context. It also explicitly states what it is not: 'not a factuality, legal, compliance, or investment judgment.' This helps an agent know when not to use it. It does not name specific alternatives among siblings, but the guidance is sufficient.

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

source_coverageAInspect

Diagnose whether an evidence pack covers the must_check source types for a category. Use after collecting evidence to find source gaps before relying on a memo. Pass evidence_json and optionally category; if category is omitted, the tool uses evidence_json.source_category. Returns matched and missing source types. It does not discover new sources, verify truth, or change validate_evidence results.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional source requirement category slug; overrides evidence_json.source_category.
evidence_jsonYesParsed evidence pack to compare against source requirements.

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It clearly states the tool returns matched and missing source types, and explicitly lists limitations (does not discover new sources, verify truth, or change validate_evidence results).

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 concise sentences with no wasted words. Front-loaded with purpose, then usage, then limitations. Perfect structure.

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

Completeness5/5

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

Given no output schema, the description adequately covers return values (matched and missing source types). Inputs are well described. The tool is simple and the description is complete.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. However, description adds meaning by explaining the optional behavior of category (overrides evidence_json.source_category) and the purpose of evidence_json. This extra context justifies a 4.

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

Purpose5/5

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

The description uses the specific verb 'diagnose' and resource 'source coverage', clearly stating the tool's purpose. It distinguishes from siblings by explicitly listing what it does not do (discover new sources, verify truth, change validate_evidence results).

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 states when to use: 'Use after collecting evidence to find source gaps before relying on a memo.' Also clarifies what it does not do, guiding agent away from misuse.

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

source_planAInspect

Return required source categories for a strategic-risk evidence pack. Use before collection or review to know which source types should be checked for a domain such as sanctions, elections, conflict, cyber, or energy. Pass the source category slug as category. Returns a checklist of must_check and optional source types; it does not search the web, fetch documents, or validate an evidence pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesSource requirement category slug, for example sanctions, elections, or energy. Call list_source_categories for the full set.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It clearly states the tool returns a checklist of source types and does not perform web searches, fetch documents, or validate packs. This adequately discloses behavioral traits for a read-only, deterministic tool. No side effects are implied, and the description does not contradict any annotations (since none are provided).

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

Conciseness5/5

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

The description is three sentences, no wasted words. The first sentence states the primary purpose, the second provides use context, and the third clarifies boundaries and what it returns. It is front-loaded with the most important 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 the tool has only one parameter (with enum), no output schema, and no annotations, the description provides sufficient context. It explains the return value ('checklist of must_check and optional source types') and what the tool does not do. The reference to list_source_categories in the input schema adds helpful cross-tool context. Overall, an agent can correctly select and invoke this tool based on the description.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds minimal meaning beyond the schema: it says 'Pass the source category slug as category' and gives examples, but the schema already has an enum and description with examples. The description does not provide new information about the parameter's format or constraints.

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

Purpose5/5

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

The description clearly states the tool returns required source categories for a strategic-risk evidence pack. It further explains the use case (before collection or review) and provides domain examples (sanctions, elections, energy). The statement of what it does not do (search, fetch, validate) distinguishes it from other 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?

The description explicitly says when to use the tool ('before collection or review') and what it does not do, implicitly guiding when not to use it. However, it does not explicitly mention alternative tools by name (except list_source_categories in the schema). The context from the description is sufficient for an agent to decide usage.

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

validate_briefAInspect

Validate a caller-provided agenda brief against agenda-brief.schema.json. Use before running scoring, evidence audit, or publication steps to catch missing sections and schema drift. Pass the parsed brief object as brief_json. Returns validation status and schema errors only; it does not judge factual truth, retrieve sources, or improve the brief.

ParametersJSON Schema
NameRequiredDescriptionDefault
brief_jsonYesParsed agenda brief JSON object to validate against the bundled schema.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, description carries full burden. It clearly states returns only validation status and schema errors, and does not judge truth, retrieve sources, or improve the brief. This discloses boundaries and behavioral traits well.

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 purpose, then constraints. No wasted words. Highly efficient.

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

Completeness4/5

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

For a simple validation tool with one parameter and no output schema, description covers use cases, limitations, and return type. Missing details on output structure or error handling, but adequate given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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% (1 param fully described). Description adds minimal value: 'Pass the parsed brief object' and 'against the bundled schema'—essentially restating schema metadata. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states it validates an agenda brief against a schema, with specific use cases (before scoring, audit, publication). It explicitly distinguishes itself from other tools by stating what it does not do (judge truth, retrieve sources, improve the brief).

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?

Description provides explicit when-to-use guidance ('before scoring, evidence audit, or publication steps'). It implicitly indicates when not to use it by listing what it does not do, but does not name specific alternative sibling tools.

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

validate_evidenceAInspect

Validate a caller-provided evidence pack against evidence-pack.schema.json. Use when you need to confirm that claims, evidence IDs, provenance fields, and optional source_category metadata are structurally usable by Agenda Intelligence. Pass the parsed evidence pack as evidence_json. Returns schema validity and errors; it does not verify whether evidence is true, current, or sufficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
evidence_jsonYesParsed evidence-pack JSON object to validate against the bundled schema.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that validation is against a schema and does not verify truth, but does not explicitly state it is read-only or discuss permissions, rate limits, or side effects. Adequate but not comprehensive.

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 efficient content: first states core purpose, second adds usage guidance and limitations. Front-loaded, no redundancy.

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

Completeness3/5

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

Given single parameter and no output schema, description mentions 'Returns schema validity and errors' but lacks detail on return format. Does not differentiate from similar sibling 'validate_brief'. Adequate but leaves some gaps.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds minimal extra meaning beyond 'Pass the parsed evidence pack as evidence_json', largely restating the schema description. No additional constraints or format details.

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

Purpose5/5

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

The description clearly states the tool validates an evidence pack against a schema, with a specific verb and resource. It distinguishes from siblings like 'audit_claims' by clarifying it does not verify truth or sufficiency, only structural usability.

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

Usage Guidelines4/5

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

Explicitly says 'Use when you need to confirm... structurally usable' and delineates what it does not do (truth, currency, sufficiency). Provides clear context but could name alternatives for truth verification.

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

validate_memoAInspect

Validate an Agenda memo against agenda-memo.schema.json. Use after a host model or external process drafts a memo and before treating it as an Agenda Intelligence artifact. Pass the parsed memo as memo_json. Returns validity and schema errors; it does not score truthfulness, retrieve sources, or rewrite the memo.

ParametersJSON Schema
NameRequiredDescriptionDefault
memo_jsonYesParsed Agenda memo JSON object to validate against the output schema.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description fully discloses behavior: it returns validity and schema errors, and explicitly states limitations (does not score truthfulness, retrieve sources, or rewrite). This gives the agent a clear understanding of the tool's boundaries.

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

Conciseness5/5

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

The description is three sentences, each serving a distinct purpose: purpose, usage, and limitations. It is front-loaded with the main action and contains no superfluous information.

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

Completeness5/5

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

Despite lacking an output schema, the description explains the return value (validity and schema errors). It also clarifies exclusions. With one well-documented parameter and clear behavioral boundaries, the description is complete for this validation tool.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents the parameter. The description adds 'Parsed Agenda memo JSON object' which is consistent but does not significantly enhance understanding beyond the schema's description.

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

Purpose5/5

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

The description explicitly states 'Validate an Agenda memo against agenda-memo.schema.json', using a specific verb and resource. It further distinguishes itself by stating what it does not do (score truthfulness, retrieve sources, rewrite). This clearly separates it from sibling 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?

The description provides explicit usage context: 'Use after a host model or external process drafts a memo and before treating it as an Agenda Intelligence artifact.' While it does not name specific alternatives, the constraints on what it does not do implicitly guide when not to use it.

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

verify_claimsAInspect

Issue a bounded factual Claim Verdict from caller-supplied evidence records. Evaluates freshness, authoritative source class, independent source groups, conflicts, jurisdiction, and exact subject identifiers as of a declared date. Returns verified, contradicted, partially_supported, unresolved, or not_verifiable. No source discovery or live retrieval; verified means the declared evidence threshold is met, not absolute truth. Human review remains required.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_jsonYesClaim verification request. Call get_schema('claim_verification_request') for the full nested contract.

TDQS

A4.6/5.0
Behavior5/5

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

There are no annotations provided, so the description carries the full burden of behavioral disclosure. It explains what the tool does not do (no source discovery, no live retrieval, no absolute truth claim), defines 'verified' operationally, and mandates human review. These non-obvious caveats are exactly the kind of context agents need.

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

Conciseness5/5

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

The description is compact, front-loaded with what the tool does, and every sentence adds value: verdict vocabulary, evaluation dimensions, limitations, and operational caveats. No repetition or 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?

Given a single nested request parameter and no output schema, the description covers the output vocabulary, the input concepts, the judgment criteria, and the key caveats. The one clear gap is that the exact nested contract is deferred to get_schema rather than described in the tool text, but that is a reasonable trade-off for such a nested structure.

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

Parameters4/5

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

The schema describes the top-level wrapper and points to get_schema for details, so the baseline is 3. The description adds meaningful conceptual semantics by mapping the evaluation dimensions (freshness, source class, source groups, conflicts, jurisdiction, subject identifiers, as-of date) to what the claims and evidence parameters should contain.

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

Purpose5/5

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

The description clearly identifies the operation ('Issue a bounded factual Claim Verdict'), the resource ('caller-supplied evidence records'), and the specific output verdicts. It distinguishes itself from sibling tools by explicitly fencing off source discovery and live retrieval, making the niche unmistakable.

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 strong contextual signals for usage: use it when evidence is already supplied and a bounded evidentiary verdict is needed. It also provides explicit when-not clauses ('No source discovery or live retrieval', 'not absolute truth', 'Human review remains required'). It does not name specific sibling alternatives, 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.

verify_quotesAInspect

Check whether quoted fragments appear in caller-provided source text. Use when you have local excerpts and need to catch citation drift or misquoted snippets. Accepts an evidence pack (sources/evidence items with a quote) or an evidence-audit doc with claims[].supporting_quotes; span checks carry the originating claim_id. Pass pack_json plus texts mapping evidence_id to plain text. Returns present, absent, and missing_source_text results. Local-text only: it does not make outbound requests, discover sources, score source reputation, gather news, or verify factual truth.

ParametersJSON Schema
NameRequiredDescriptionDefault
textsNoOptional mapping from evidence_id to caller-provided plain source text.
pack_jsonYesEvidence pack (evidence IDs + quote fragments) or evidence-audit doc (claims with supporting_quotes) to check.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavior: input structures (evidence pack or audit doc), output (present, absent, missing_source_text), and limitations (no outbound requests, no factual truth verification). No contradictions.

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 a single, well-structured paragraph. Each sentence adds value: purpose, usage context, input format, output, and limitations. No wasted words.

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

Completeness5/5

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

Given two parameters (one required), nested objects, and no output schema, the description is thorough. It explains input types, output types, and what the tool does not do, ensuring the AI agent can invoke it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds meaning beyond schema: explains that pack_json can be an evidence pack or audit doc, and that span checks carry claim_id. This adds useful context.

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

Purpose5/5

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

The description clearly states the tool's verb ('Check'), resource ('quoted fragments appear in caller-provided source text'), and scope. It distinguishes itself from siblings by explicitly listing what it does not do (e.g., no outbound requests, no source reputation).

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 when to use the tool ('Use when you have local excerpts and need to catch citation drift or misquoted snippets') and lists exclusions ('Local-text only: it does not make outbound requests...'). It does not name specific alternative tools, but the context is clear.

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

Tool Schema Changelog

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

  1. 1 tool updatev1.7.1
    • Addedgenerate_repair_prompt
  2. 12 tool updatesv1.5.0
    • Addedagent_output_verification
    • Changedagentic_interaction_trust4 fields changed
      • changedInput schema / properties / trust_request / description
        Previous value: -"Structured agentic interaction trust request matching agentic-interaction-trust-request.schema.json."New value: +"Structured agentic interaction trust request. Call get_schema('agentic_interaction_trust_request') for the full nested contract."
      • addedInput schema / properties / trust_request / examples
        Added value: +[
        +  {
        +    "actor": {
        +      "authentication_context": "session_cookie",
        +      "declared_name": "Example Shopping Agent",
        +      "declared_type": "ai_agent",
        +      "declared_user_agent": "ExampleShoppingAgent/1.0",
        +      "operator": "Example Consumer"
        +    },
        +    "asset_or_resource": "order-123",
        +    "dated_sources": [
        +      {
        +        "date": "2026-05-28",
        +        "id": "ait-1",
        +        "source_type": "agent_identity_claim",
        +        "title": "Declared agent identity header"
        +      }
        +    ],
        +    "decision_stage": "pre_execution",
        +    "requested_action": "complete purchase of two restricted-delivery items",
        +    "requested_output": "structured_json",
        +    "risk_question": "Is this agent-mediated checkout ready to allow, step up, or route to human review?",
        +    "target_surface": "checkout"
        +  }
        +]
      • addedInput schema / properties / trust_request / properties
        Added value: +{
        +  "actor": {
        +    "properties": {
        +      "authentication_context": {
        +        "enum": [
        +          "anonymous",
        +          "session_cookie",
        +          "api_key",
        +          "oauth",
        +          "mTLS",
        +          "signed_agent_manifest",
        +          "unknown",
        +          "other"
        +        ],
        +        "type": "string"
        +      },
        +      "declared_agent_id": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "declared_name": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "declared_type": {
        +        "enum": [
        +          "ai_agent",
        +          "automation_script",
        +          "api_client",
        +          "browser_bot",
        +          "human_delegated_agent",
        +          "unknown",
        +          "other"
        +        ],
        +        "type": "string"
        +      },
        +      "declared_user_agent": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "operator": {
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "declared_type",
        +      "declared_name"
        +    ],
        +    "type": "object"
        +  },
        +  "asset_or_resource": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "dated_sources": {
        +    "items": {
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "decision_stage": {
        +    "enum": [
        +      "pre_execution",
        +      "in_session",
        +      "post_alert",
        +      "policy_review",
        +      "committee_review",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "notes": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "requested_action": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "requested_output": {
        +    "enum": [
        +      "structured_json",
        +      "markdown_summary",
        +      "both"
        +    ],
        +    "type": "string"
        +  },
        +  "risk_question": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "target_surface": {
        +    "enum": [
        +      "checkout",
        +      "account",
        +      "api",
        +      "mcp_tool",
        +      "a2a_endpoint",
        +      "content_or_catalog",
        +      "auth_flow",
        +      "support_or_messaging",
        +      "other"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / trust_request / required
        Added value: +[
        +  "actor",
        +  "target_surface",
        +  "requested_action",
        +  "decision_stage",
        +  "dated_sources",
        +  "risk_question"
        +]
    • Changedanalyze4 fields changed
      • changedInput schema / properties / request / description
        Previous value: -"Agenda request with question, geography, audience, depth, evidence mode, and output format."New value: +"Agenda request with question, geography, audience, depth, evidence mode, and output format. Call get_schema('agenda_request') for the full nested contract."
      • addedInput schema / properties / request / examples
        Added value: +[
        +  {
        +    "audience": "founder",
        +    "decision_context": "Whether to open a USD correspondent banking relationship in Almaty in Q3.",
        +    "depth": "decision_pack",
        +    "evidence_mode": "reasoning_only",
        +    "geography": "Kazakhstan",
        +    "output_format": "structured_json",
        +    "question": "How exposed is a Kazakhstan-incorporated payments fintech to secondary US sanctions risk over the next 12 months?",
        +    "time_horizon": "12 months"
        +  }
        +]
      • addedInput schema / properties / request / properties
        Added value: +{
        +  "audience": {
        +    "enum": [
        +      "founder",
        +      "analyst",
        +      "policymaker",
        +      "investor"
        +    ],
        +    "type": "string"
        +  },
        +  "audience_detail": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "decision_context": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "depth": {
        +    "enum": [
        +      "quick_brief",
        +      "standard",
        +      "scenario",
        +      "red_team",
        +      "decision_pack"
        +    ],
        +    "type": "string"
        +  },
        +  "evidence_mode": {
        +    "enum": [
        +      "reasoning_only",
        +      "user_provided",
        +      "mixed"
        +    ],
        +    "type": "string"
        +  },
        +  "geography": {},
        +  "output_format": {
        +    "enum": [
        +      "structured_json",
        +      "markdown"
        +    ],
        +    "type": "string"
        +  },
        +  "question": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "time_horizon": {
        +    "minLength": 1,
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / request / required
        Added value: +[
        +  "question"
        +]
    • Addedappend_evidence
    • Addedcheck_evidence_packet
    • Changedcis_secondary_sanctions_exposure4 fields changed
      • changedInput schema / properties / exposure_request / description
        Previous value: -"Structured CIS secondary-sanctions exposure request matching cis-secondary-sanctions-request.schema.json."New value: +"Structured CIS secondary-sanctions exposure request. Call get_schema('cis_secondary_sanctions_request') for the full nested contract."
      • addedInput schema / properties / exposure_request / examples
        Added value: +[
        +  {
        +    "counterparty": {
        +      "jurisdiction": "Kazakhstan",
        +      "name": "Example Kazakhstan Trading LLP",
        +      "ownership_layers": [
        +        "Holding A (KZ)",
        +        "Holding B (UAE)"
        +      ],
        +      "sector": "trading_house"
        +    },
        +    "dated_sources": [
        +      {
        +        "date": "2026-05-20",
        +        "id": "s1",
        +        "source_type": "ofac_sdn_extract",
        +        "title": "OFAC SDN list excerpt"
        +      }
        +    ],
        +    "decision_stage": "onboarding",
        +    "exposure_facets": [
        +      "ownership_or_control",
        +      "ict_or_dual_use_goods",
        +      "transit_or_re_export"
        +    ],
        +    "jurisdiction_review_scope": [
        +      "ofac",
        +      "eu",
        +      "uk_ofsi"
        +    ],
        +    "risk_question": "Does the disclosed ownership chain create indirect exposure under OFAC EO 14114 or EU sanctions package?"
        +  }
        +]
      • addedInput schema / properties / exposure_request / properties
        Added value: +{
        +  "counterparty": {
        +    "properties": {
        +      "jurisdiction": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "name": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "notes": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "ownership_layers": {
        +        "type": "array"
        +      },
        +      "registered_identifiers": {
        +        "type": "array"
        +      },
        +      "sector": {
        +        "enum": [
        +          "trading_house",
        +          "logistics_forwarder",
        +          "bank",
        +          "fintech",
        +          "broker_dealer",
        +          "manufacturer",
        +          "ict_or_electronics",
        +          "metals_or_mining",
        +          "energy_or_petrochem",
        +          "agribusiness_or_grain",
        +          "construction",
        +          "professional_services",
        +          "holding_or_spv",
        +          "unknown",
        +          "other"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "jurisdiction"
        +    ],
        +    "type": "object"
        +  },
        +  "dated_sources": {
        +    "items": {
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "decision_stage": {
        +    "enum": [
        +      "onboarding",
        +      "periodic_review",
        +      "pre_transaction",
        +      "post_alert",
        +      "committee_review",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "exposure_facets": {
        +    "items": {
        +      "enum": [
        +        "ownership_or_control",
        +        "financial_flows",
        +        "ict_or_dual_use_goods",
        +        "metals_or_mining",
        +        "energy_or_petrochem",
        +        "agribusiness_or_grain",
        +        "transit_or_re_export",
        +        "correspondent_banking",
        +        "professional_enablers",
        +        "shell_or_layered_structure",
        +        "other"
        +      ],
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  "jurisdiction_review_scope": {
        +    "items": {
        +      "enum": [
        +        "ofac",
        +        "eu",
        +        "uk_ofsi",
        +        "un",
        +        "fatf",
        +        "eag",
        +        "national_regulator",
        +        "other"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "notes": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "requested_output": {
        +    "enum": [
        +      "structured_json",
        +      "markdown_summary",
        +      "both"
        +    ],
        +    "type": "string"
        +  },
        +  "risk_question": {
        +    "minLength": 1,
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / exposure_request / required
        Added value: +[
        +  "counterparty",
        +  "exposure_facets",
        +  "dated_sources",
        +  "risk_question",
        +  "decision_stage"
        +]
    • Addedcreate_brief
    • Changedgulf_maritime_exposure4 fields changed
      • changedInput schema / properties / exposure_request / description
        Previous value: -"Structured Gulf maritime exposure request matching gulf-maritime-exposure-request.schema.json."New value: +"Structured Gulf maritime exposure request. Call get_schema('gulf_maritime_exposure_request') for the full nested contract."
      • addedInput schema / properties / exposure_request / examples
        Added value: +[
        +  {
        +    "cargo": "crude oil",
        +    "counterparties": [
        +      {
        +        "jurisdiction": "Marshall Islands",
        +        "name": "Example Holding Ltd",
        +        "role": "registered_owner"
        +      },
        +      {
        +        "name": "Unknown",
        +        "role": "insurer_or_pi_club"
        +      }
        +    ],
        +    "dated_sources": [
        +      {
        +        "date": "2026-05-28",
        +        "id": "g1",
        +        "source_type": "ais_track_record",
        +        "title": "AIS track extract"
        +      }
        +    ],
        +    "decision_stage": "pre_fixture",
        +    "exposure_facets": [
        +      "iran_oil_exposure",
        +      "dark_fleet_indicators",
        +      "sts_transfer",
        +      "insurance_or_pi_gap"
        +    ],
        +    "jurisdictions_in_scope": [
        +      "OFAC",
        +      "EU",
        +      "UK_OFSI"
        +    ],
        +    "requested_output": "structured_json",
        +    "risk_question": "Is this Hormuz transit ready to fix, or should it be escalated before fixture?",
        +    "vessel": {
        +      "flag": "Panama",
        +      "name": "Example Tanker",
        +      "vessel_type": "crude oil tanker"
        +    },
        +    "voyage": {
        +      "chokepoint": "strait_of_hormuz",
        +      "destination": "ship-to-ship area, Gulf of Oman",
        +      "origin": "undisclosed Gulf terminal"
        +    }
        +  }
        +]
      • addedInput schema / properties / exposure_request / properties
        Added value: +{
        +  "cargo": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "counterparties": {
        +    "items": {
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "dated_sources": {
        +    "items": {
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "decision_stage": {
        +    "enum": [
        +      "pre_fixture",
        +      "pre_voyage",
        +      "pre_port_call",
        +      "post_alert",
        +      "committee_review",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "exposure_facets": {
        +    "items": {
        +      "enum": [
        +        "iran_oil_exposure",
        +        "russia_oil_price_cap",
        +        "dark_fleet_indicators",
        +        "sts_transfer",
        +        "flag_hopping",
        +        "insurance_or_pi_gap",
        +        "ais_manipulation",
        +        "ownership_or_control",
        +        "dual_use_cargo",
        +        "chokepoint_disruption"
        +      ],
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  "jurisdictions_in_scope": {
        +    "items": {
        +      "enum": [
        +        "OFAC",
        +        "EU",
        +        "UK_OFSI",
        +        "UN",
        +        "OTHER"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "notes": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "requested_output": {
        +    "enum": [
        +      "structured_json",
        +      "markdown_summary",
        +      "both"
        +    ],
        +    "type": "string"
        +  },
        +  "risk_question": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "vessel": {
        +    "properties": {
        +      "flag": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "imo": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "name": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "vessel_type": {
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "voyage": {
        +    "properties": {
        +      "chokepoint": {
        +        "enum": [
        +          "strait_of_hormuz",
        +          "persian_gulf",
        +          "gulf_of_oman",
        +          "bab_el_mandeb",
        +          "red_sea",
        +          "suez_canal",
        +          "other"
        +        ],
        +        "type": "string"
        +      },
        +      "destination": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "origin": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "route_note": {
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "chokepoint"
        +    ],
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / exposure_request / required
        Added value: +[
        +  "voyage",
        +  "exposure_facets",
        +  "decision_stage",
        +  "dated_sources",
        +  "risk_question"
        +]
    • Addedkazakhstan_market_entry_readiness
    • Changedmiddle_corridor_deal_risk4 fields changed
      • changedInput schema / properties / deal_risk_request / description
        Previous value: -"Structured Middle Corridor deal-risk request matching middle-corridor-deal-risk-request.schema.json."New value: +"Structured Middle Corridor deal-risk request. Call get_schema('middle_corridor_deal_risk_request') for the full nested contract."
      • addedInput schema / properties / deal_risk_request / examples
        Added value: +[
        +  {
        +    "cargo": "industrial equipment",
        +    "counterparties": [
        +      {
        +        "jurisdiction": "Kazakhstan",
        +        "name": "Kazakhstan forwarder",
        +        "role": "forwarder"
        +      }
        +    ],
        +    "dated_sources": [
        +      {
        +        "date": "2026-05-20",
        +        "id": "e1",
        +        "source_type": "port_operator_notice",
        +        "title": "Port operator notice",
        +        "url": "https://example.com/port-notice"
        +      }
        +    ],
        +    "decision_stage": "pre_signature",
        +    "requested_output": "structured_json",
        +    "risk_question": "Should this be escalated before contract signature?",
        +    "route": "Altynkol -> Aktau/Kuryk -> Baku -> Poti",
        +    "shipment_value": {
        +      "amount": 2400000,
        +      "currency": "USD"
        +    }
        +  }
        +]
      • addedInput schema / properties / deal_risk_request / properties
        Added value: +{
        +  "cargo": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "counterparties": {
        +    "items": {
        +      "type": "object"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  "dated_sources": {
        +    "items": {
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "decision_stage": {
        +    "enum": [
        +      "pre_signature",
        +      "pre_shipment",
        +      "in_transit",
        +      "post_incident",
        +      "committee_review",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "notes": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "requested_output": {
        +    "enum": [
        +      "structured_json",
        +      "markdown_summary",
        +      "both"
        +    ],
        +    "type": "string"
        +  },
        +  "risk_question": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "route": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "shipment_value": {
        +    "properties": {
        +      "amount": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "currency": {
        +        "enum": [
        +          "USD",
        +          "EUR",
        +          "GBP",
        +          "KZT",
        +          "CNY",
        +          "TRY",
        +          "AED",
        +          "other"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "amount",
        +      "currency"
        +    ],
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / deal_risk_request / required
        Added value: +[
        +  "route",
        +  "cargo",
        +  "counterparties",
        +  "dated_sources",
        +  "risk_question",
        +  "decision_stage"
        +]
    • Addedpre_action_check
    • Changedverify_claims3 fields changed
      • changedInput schema / properties / request_json / description
        Previous value: -"Claim verification request matching claim-verification-request.schema.json."New value: +"Claim verification request. Call get_schema('claim_verification_request') for the full nested contract."
      • addedInput schema / properties / request_json / properties
        Added value: +{
        +  "as_of": {
        +    "format": "date",
        +    "type": "string"
        +  },
        +  "claims": {
        +    "items": {
        +      "type": "object"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  "evidence": {
        +    "items": {
        +      "type": "object"
        +    },
        +    "type": "array"
        +  }
        +}
      • addedInput schema / properties / request_json / required
        Added value: +[
        +  "as_of",
        +  "claims",
        +  "evidence"
        +]
  3. 2 tool updatesv1.3.0
    • Addedgrounded_check
    • Addedverify_claims
  4. 3 tool updatesv1.1.1
    • Addedcheck_memo_quality
    • Changedsource_coverage1 field changed
      • changedInput schema / properties / category / enum
        Previous value: -[
        -  "agentic-interaction-trust",
        -  "conflict-security",
        -  "cyber-threats",
        -  "elections",
        -  "energy",
        -  "esg",
        -  "financial-market",
        -  "middle-corridor-deal-risk",
        -  "regional-risk",
        -  "regulation",
        -  "sanctions",
        -  "supply-chain-resilience",
        -  "technology-ai",
        -  "trade"
        -]New value: +[
        +  "agentic-interaction-trust",
        +  "ai-infrastructure-bankability",
        +  "conflict-security",
        +  "cyber-threats",
        +  "elections",
        +  "energy",
        +  "esg",
        +  "financial-market",
        +  "middle-corridor-deal-risk",
        +  "regional-risk",
        +  "regulation",
        +  "sanctions",
        +  "supply-chain-resilience",
        +  "technology-ai",
        +  "trade"
        +]
    • Changedsource_plan1 field changed
      • changedInput schema / properties / category / enum
        Previous value: -[
        -  "agentic-interaction-trust",
        -  "conflict-security",
        -  "cyber-threats",
        -  "elections",
        -  "energy",
        -  "esg",
        -  "financial-market",
        -  "middle-corridor-deal-risk",
        -  "regional-risk",
        -  "regulation",
        -  "sanctions",
        -  "supply-chain-resilience",
        -  "technology-ai",
        -  "trade"
        -]New value: +[
        +  "agentic-interaction-trust",
        +  "ai-infrastructure-bankability",
        +  "conflict-security",
        +  "cyber-threats",
        +  "elections",
        +  "energy",
        +  "esg",
        +  "financial-market",
        +  "middle-corridor-deal-risk",
        +  "regional-risk",
        +  "regulation",
        +  "sanctions",
        +  "supply-chain-resilience",
        +  "technology-ai",
        +  "trade"
        +]
  5. 8 tool updatesv1.1.0
    • Addedagentic_interaction_trust
    • Addedcis_secondary_sanctions_exposure
    • Addedget_schema
    • Addedgulf_maritime_exposure
    • Addedmiddle_corridor_deal_risk
    • Changedsource_coverage1 field changed
      • addedInput schema / properties / category / enum
        Added value: +[
        +  "agentic-interaction-trust",
        +  "conflict-security",
        +  "cyber-threats",
        +  "elections",
        +  "energy",
        +  "esg",
        +  "financial-market",
        +  "middle-corridor-deal-risk",
        +  "regional-risk",
        +  "regulation",
        +  "sanctions",
        +  "supply-chain-resilience",
        +  "technology-ai",
        +  "trade"
        +]
    • Changedsource_plan2 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Source requirement category slug, for example sanctions, elections, or energy-markets."New value: +"Source requirement category slug, for example sanctions, elections, or energy. Call list_source_categories for the full set."
      • addedInput schema / properties / category / enum
        Added value: +[
        +  "agentic-interaction-trust",
        +  "conflict-security",
        +  "cyber-threats",
        +  "elections",
        +  "energy",
        +  "esg",
        +  "financial-market",
        +  "middle-corridor-deal-risk",
        +  "regional-risk",
        +  "regulation",
        +  "sanctions",
        +  "supply-chain-resilience",
        +  "technology-ai",
        +  "trade"
        +]
    • Changedverify_quotes1 field changed
      • changedInput schema / properties / pack_json / description
        Previous value: -"Evidence pack containing evidence IDs and quote fragments to check."New value: +"Evidence pack (evidence IDs + quote fragments) or evidence-audit doc (claims with supporting_quotes) to check."
  6. 16 tool updatesv0.9.4
    • Addedanalyze
    • Addedaudit_claims
    • Addeddeep_dive
    • Addedget_lens
    • Addedget_protocol
    • Addedget_signal
    • Addedlist_lenses
    • Addedlist_signals
    • Addedlist_source_categories
    • Addedscore_output
    • Addedsource_coverage
    • Addedsource_plan
    • Addedvalidate_brief
    • Addedvalidate_evidence
    • Addedvalidate_memo
    • Addedverify_quotes
  7. 16 tool updatesv0.9.0
    • Removedanalyze
    • Removedaudit_claims
    • Removeddeep_dive
    • Removedget_lens
    • Removedget_protocol
    • Removedget_signal
    • Removedlist_lenses
    • Removedlist_signals
    • Removedlist_source_categories
    • Removedscore_output
    • Removedsource_coverage
    • Removedsource_plan
    • Removedvalidate_brief
    • Removedvalidate_evidence
    • Removedvalidate_memo
    • Removedverify_quotes
  8. 16 tool updatesv0.8.2
    • First observedanalyze
    • First observedaudit_claims
    • First observeddeep_dive
    • First observedget_lens
    • First observedget_protocol
    • First observedget_signal
    • First observedlist_lenses
    • First observedlist_signals
    • First observedlist_source_categories
    • First observedscore_output
    • First observedsource_coverage
    • First observedsource_plan
    • First observedvalidate_brief
    • First observedvalidate_evidence
    • First observedvalidate_memo
    • First observedverify_quotes

TDQS

A3.6/5.0

Scored across 31 tools

Disambiguation2/5

Several tools occupy overlapping territory: grounded_check, check_evidence_packet, and verify_quotes all perform local lexical/quote checks, while audit_claims and agent_output_verification both consume evidence-audit JSON and report orphaned or unsupported claims. The descriptions try to differentiate, but an agent would struggle to choose among validate_evidence, check_evidence_packet, audit_claims, and verify_claims. Clear retrieval tools like get_protocol and list_lenses stand apart, but the validation/verification cluster blurs boundaries.

Naming Consistency3/5

Most tools use lowercase snake_case verb_noun names like validate_memo, list_signals, and create_brief, but the vertical risk tools break the pattern with noun-phrase names like middle_corridor_deal_risk, gulf_maritime_exposure, and kazakhstan_market_entry_readiness. Verb choice is also inconsistent across similar actions (validate/check/audit/verify). The names are still readable and uniformly lowercase, but there is no consistent convention.

Tool Count2/5

At 31 tools, the surface is heavy, and it exceeds the 16-25 range that already feels bloated for most MCP servers. The count is inflated by near-redundant validators and checkers, plus a reserved deep_dive placeholder that performs no analysis. Many of these tools could be consolidated without losing real capability.

Completeness4/5

The toolkit covers the full evidence-discipline lifecycle: building inputs (create_brief, append_evidence), validating schemas (validate_brief/evidence/memo), checking grounding and quality (grounded_check, verify_quotes, check_memo_quality), generating analyses (analyze and verticals), and gating actions (pre_action_check). Minor gaps include the non-functional deep_dive placeholder and the lack of a broader post-analysis refinement tool, but the core workflow is well covered.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    MCP server that provides AI assistants access to stock market data including financial statements, stock prices, and market news through a Model Context Protocol interface.
    11
    2,290
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP implementation that integrates the Brave Search API, providing comprehensive search capabilities including web, local business, image, video, news searches, and AI-powered summarization.
    8
    8
    13,040 npm
    1,451
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Real-time and historical oil, gas, and commodity prices. 40+ energy commodities including Brent Crude, WTI, Natural Gas, LBMA Gold/Silver, EU Carbon, and refined products. Get current prices, compare commodities, view market overviews, and access historical data — all through natural language. Used by energy traders, fintech companies, and researchers worldwide.
    32
    340 npm
    4
    MIT