Skip to main content
Glama
Hardik-Singh

Invariance MCP

Official
by Hardik-Singh

@invariance/mcp

An MCP (Model Context Protocol) server that connects AI coding agents to the Invariance observability platform. It gives tools like Claude Desktop, Cursor, and Claude Code direct access to your runs, nodes, monitors, signals, findings, reviews, and more.

MCP is an open protocol that lets AI assistants use external tools and data sources. This server implements it for Invariance, so your AI assistant can query observability data, investigate issues, and analyze agent behavior without leaving the conversation.

Install

npm install -g @invariance/mcp

Or run directly with npx (recommended for MCP client configs):

npx @invariance/mcp

Related MCP server: Claude Code Starter Kit MCP

Setup

Environment variables

Variable

Required

Default

Description

INVARIANCE_API_KEY

Yes

Your Invariance API key

INVARIANCE_API_URL

No

https://api.useinvariance.com

API base URL (deprecated alias: INVARIANCE_BASE_URL)

INVARIANCE_MCP_TRANSPORT

No

stdio

Transport mode: stdio or http (sse is accepted as a deprecated alias for http)

INVARIANCE_MCP_PORT

No

3000

Port for SSE/HTTP transport

INVARIANCE_TIMEOUT

No

30000

Request timeout in milliseconds

Get your API key at platform.useinvariance.com/settings/api-keys. For headless agents, issue a one-time bootstrap token from the dashboard and redeem it with inv login --bootstrap <token> before starting the MCP server.

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "invariance": {
      "command": "npx",
      "args": ["-y", "@invariance/mcp"],
      "env": {
        "INVARIANCE_API_KEY": "your-api-key"
      }
    }
  }
}

Claude Code

Add to your Claude Code config (.claude/settings.json or ~/.claude/settings.json):

{
  "mcpServers": {
    "invariance": {
      "command": "npx",
      "args": ["-y", "@invariance/mcp"],
      "env": {
        "INVARIANCE_API_KEY": "your-api-key"
      }
    }
  }
}

Cursor

Add to your Cursor MCP settings (.cursor/mcp.json):

{
  "mcpServers": {
    "invariance": {
      "command": "npx",
      "args": ["-y", "@invariance/mcp"],
      "env": {
        "INVARIANCE_API_KEY": "your-api-key"
      }
    }
  }
}

Available tools

The server exposes 150 tools (plus 6 legacy aliases) covering Invariance API workflows. Names follow invariance_<resource>_<action>.

See ../COVERAGE_MATRIX.md for the cross-surface (TS / Python / CLI / MCP) coverage matrix, and AGENTS.md for an agent-facing tool guide.

Every tool carries MCP annotations (readOnlyHint, destructiveHint, openWorldHint) so agent clients (Claude Desktop, etc.) can distinguish inspection tools from state-changing ones without parsing prose descriptions.

For instrumentation setup, make this the default sequence in agent instructions:

  1. Call invariance_doctor to verify the API key and platform reachability.

  2. Create or reuse a workflow instance with invariance_case_create.

  3. Start a run linked to that case with invariance_run_start.

  4. Call invariance_node_write for each LLM call, tool call, retrieval, decision, handoff, external action, and error.

  5. Call invariance_workflow_event_create for semantic business facts operators should filter on.

  6. Finish or fail the run with invariance_run_finish or invariance_run_fail.

  7. Inspect invariance_workflow_observability_get, create useful dashboard panels with invariance_saved_view_create, and ask Cortex with cortex_ask.

Good first saved views are task usage by action_type, failed tool calls, cost by model, stale open executions, review queue by severity, and workflow outcomes. Cortex can also suggest dashboard panels; ask it what a workflow operator should see, inspect the SQL-like structured query shape, then persist the useful query as a saved view.

Cases (invariance_case_*) create, get, list, update, close, evidence, events_list, event_create — workflow instances that group runs as evidence (create with workflow_key / tenant_id / end_user_id; attach evidence and events; close with an outcome).

Workflows (invariance_workflow_*) list, get, create, update, delete, event_list — the workflow definitions that cases instantiate.

Runs (invariance_run_*) start, get, list, finish, fail, verify, metrics, operational_graph, llm_calls, node_types, node_type_metrics, fork, inspect

Nodes (invariance_node_*) write, list

Monitors (invariance_monitor_*) create, list, get, update, pause, resume, evaluate, executions, findings

Signals (invariance_signal_*) emit, list, get, acknowledge, resolve

Findings (invariance_finding_*) list, get, update

Reviews (invariance_review_*) list, get, claim, unclaim, resolve

Agents (invariance_agent_*) me, set_key, create, list, get

Operators (invariance_operator_*) me, create, list, get — the unified actor model. Every Claude Code session, autonomous agent, and human teammate is an operator. Use operator_type='agent' for autonomous workers, operator_type='human' for teammates whose screen recordings, microphone capture, meetings, and Granola notes feed the company brain.

Sessions (invariance_session_*) create, list, get, append_note, attach_run, record_summary_to_kb — capture sessions that group runs, notes, and KB summaries under a single operator's work.

Captures (invariance_capture_*) create, list, get, update, link, links, unlink — standalone evidence (sessions, conversations, traces). link attaches a capture to any evidence-graph target: pass run_id for the legacy run link, or target_type (run | case | workflow_event | node, defaults to run) + target_id to create a richer link with an optional link_type. links lists all links; unlink takes link_id to detach a specific link (or clears run_id when omitted).

Memory (invariance_memory_*) read, write — record what the agent looked up or wrote about a subject (customer, account, policy, …).

Evals (invariance_eval_*) dataset_create, dataset_seed_suite, dataset_list, dataset_get, dataset_append_example, dataset_examples_list, scorer_create, scorer_list, scorers_list_builtin, suite_create, suite_list, suite_get, case_create, case_create_from_run, case_list, suite_run, run_get, run_results, experiment_run, experiment_compare — author datasets/scorers/suites, kick off eval runs against agents or recipes, score them with built-in scorers (exact_match, contains, numeric_tolerance, json_match, levenshtein), and diff a candidate run against a baseline. Prefer dataset_seed_suite when an agent has JSON examples and needs a runnable suite in one tool call.

Insights invariance_narrative_get (LLM-synthesized run summary), invariance_ask (turn-based Q&A over your KB + runs), invariance_kb_pages_list, invariance_kb_page_get, invariance_kb_page_create, invariance_kb_page_update, invariance_kb_page_delete, invariance_kb_session_create, invariance_kb_session_delete, invariance_kb_session_list_messages, invariance_kb_session_append_message.

Operational debugging — agent-friendly views over runs. invariance_run_operational_graph (entities, edges, findings, and a completeness score for a run), invariance_run_llm_calls (paginated LLM calls for a run), invariance_run_node_types / invariance_run_node_type_metrics (typed-node aggregates), invariance_run_fork (branch a run from a node for replay/what-if), invariance_run_inspect (composite triage view: run + metrics + narrative + recent nodes + open findings, mirrors inv run inspect).

Cross-run metrics invariance_metrics_overview (total runs / nodes / errors / cost over a window), invariance_metrics_agents (per-agent usage rollup).

Workflow observability (invariance_workflow_observability_*) — read list (rollups across all workflows), get (one workflow's rollup), executions (per-execution health: status, stale flag, reasons, evidence mix). All read-only.

Divergences (invariance_divergence_*) list (read; filter by run/kind/severity/status), get (read), update (write — transition status: open | accepted | dismissed | converted_to_monitor).

Saved views (invariance_saved_view_*) list (read), get (read), create (write), update (write), run (write — pass EITHER saved_view_id OR source+spec), delete (destructive).

Receipts (invariance_receipt_*) create (write), batch (write), list (read), get (read) — proofs that external actions happened. create and batch require an agent API key (operator tokens get 403).

Guardrails (invariance_guardrail_*) list (read; filter by status/recipe_id), get (read), create (write), update (write), promote (write — lifecycle: suggested → accepted → shadow → active_monitor → rejected).

Recipes (invariance_recipe_*) list (read), get (read; by ID or slug), update (write — enabled, default_mode). Built-in operational-check registry; promote one into a guardrail with invariance_guardrail_create.

Cortex (cortex_*) cortex_ask, cortex_launch, cortex_list_jobs, cortex_retry_job, cortex_job_runs, cortex_run_job, cortex_run_eval, cortex_run_counterfactual, cortex_get_job, cortex_get_result — ask governed, cited operational questions; create Cortex jobs; poll status/results; inspect attempt history.

Health invariance_doctor — server + API + auth health check. Mirrors inv doctor --json. Use this first when an agent connects to verify its setup before issuing other calls.

For complex object arguments (monitor body, signal data, node input/output, run metadata) tools accept JSON-encoded strings, which the server parses before dispatching to the API.

Legacy tool aliases

The original 6 tool names from earlier versions are kept as aliases so existing client configs keep working: invariance_create_run, invariance_get_run, invariance_list_runs, invariance_write_node, invariance_list_nodes, invariance_verify_run.

HTTP transport

To run the server over Streamable HTTP instead of stdio:

INVARIANCE_MCP_TRANSPORT=http INVARIANCE_MCP_PORT=3000 npx @invariance/mcp

The server exposes a Streamable HTTP endpoint at http://127.0.0.1:3000/mcp and a health check at http://127.0.0.1:3000/health.

Authentication (HTTP)

Unlike stdio (which reads INVARIANCE_API_KEY from the environment, single-tenant), the HTTP transport authenticates per session from the client request. Each MCP client must send its own API key in the Authorization: Bearer … header on the initialize request. That key is bound to the resulting session and used for every tool call made through that session.

This means a single hosted MCP server can serve multiple distinct customers; each connecting client provides its own bearer and only sees data scoped to that key. INVARIANCE_API_KEY is not required in the environment for HTTP mode.

MCP clients that support HTTP transport can connect using the /mcp endpoint URL with their own API key as the bearer.

Troubleshooting

"INVARIANCE_API_KEY environment variable is required"

Make sure you've set the INVARIANCE_API_KEY environment variable in your MCP client configuration. See the setup guides above.

Server not appearing in your MCP client

  1. Verify the config file path is correct for your client

  2. Restart the client after editing the config

  3. Check that npx @invariance/mcp runs without errors in your terminal

Authentication errors

Verify your API key is valid at platform.useinvariance.com/settings/api-keys.

Connection timeouts

If using a custom INVARIANCE_API_URL, verify the URL is reachable.

Contributing

See CONTRIBUTING.md.

License

MIT

Available Tools

159 tools
cortex_askA

Ask the READ-ONLY Cortex analyst (complex_query) an operational question and get a cited answer. Use this for questions like "Were refund SLAs met last week?", "Why did this run diverge?", "Which agents touched case_123?". The analyst is governed and EVIDENCE-CITED: every id in evidence_refs / affected_entities was observed through a read tool, and the runtime FAILS CLOSED against fabricated or cross-project ids (no answer is invented and no other tenant's data can leak). It only reads — it never mutates state. Returns the validated ComplexQueryResult {short_answer, reasoning_plan, evidence_refs, affected_entities, confidence, restricted_evidence_count, recommended_action, follow_up_questions}. mode="sync" (default) blocks for the answer; mode="async" enqueues then polls until the job is terminal. Note: the analyst only executes when the platform CORTEX_TOOL_RUNTIME_ENABLED flag is on.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo"sync" (default) blocks for the answer; "async" enqueues then polls until terminal.
questionYesThe operational question to answer, in plain English.
project_idYesProject to scope the analyst to. All evidence is ACL-filtered to this project.
target_refNoId of the target entity (e.g. "run_1", "case_123"). Defaults to project_id when target_type is "project".
target_typeNoWhat to anchor the question on. Defaults to "project" (a project-wide question).

TDQS

A3.5/5.0
Behavior1/5

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

The description claims the tool is 'READ-ONLY' and 'It only reads — it never mutates state.' However, the annotation readOnlyHint is false, which directly contradicts this claim. This is a serious inconsistency that could mislead an agent into assuming safety when the annotation indicates otherwise. The description also fails to explain the openWorldHint implications.

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 relatively long but well-structured, front-loading the purpose and then detailing behavior, return type, mode, and a note. Every sentence adds value, though it could be slightly more concise. The structure is logical and easy to scan.

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

Completeness4/5

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

The description covers the return structure (ComplexQueryResult fields), mode semantics, safety guarantees, and a runtime prerequisite. It is fairly complete for a complex analytical tool, though it could mention error behavior when the runtime flag is off. The absence of an output schema makes the return description essential, and it is adequately covered.

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

Parameters3/5

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

The schema description coverage is 100%, so all parameters are documented in the schema. The description adds context about mode sync/async and examples of target_ref values, but these are also present in the schema. The description does not add significant meaning beyond the schema, 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 the tool's purpose: asking a read-only Cortex analyst an operational question and getting a cited answer. It provides concrete example questions and distinguishes itself from siblings by emphasizing 'READ-ONLY' and 'complex_query'. The verb-resource pairing is explicit and unambiguous.

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

Usage Guidelines4/5

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

The description gives clear usage context with example questions and explicitly mentions a prerequisite (CORTEX_TOOL_RUNTIME_ENABLED flag). It does not explicitly state when not to use it or name alternative tools, but the scope is well implied and the examples make it evident this is for analytical queries.

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

cortex_get_jobA
Read-only

Get a Cortex job's metadata and status (no artifacts). Returns the same safe-field projection as cortex_run_job: ids, status, target, actor, criteria, timestamps, error. Use cortex_get_result to fetch the structured result body.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesCortex job ID, e.g. "ctxjob_123".

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds concrete detail about the returned fields (ids, status, target, actor, criteria, timestamps, error) and emphasizes 'no artifacts', which goes beyond the annotation alone.

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

Conciseness5/5

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

Two sentences, zero waste. The core purpose is front-loaded, and the alternative is given in the second sentence. Perfectly structured.

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

Completeness4/5

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

For a one-parameter read tool with annotations covering safety, the description explains the return projection and routes to the result-fetch sibling. It's complete enough for an agent to invoke correctly; could mention error handling but that's not critical here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 job_id, so the schema fully explains the parameter. The description adds no extra semantics beyond that, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (Get) and resource (Cortex job's metadata and status), and explicitly clarifies it does not return artifacts. It also distinguishes itself from cortex_get_result, making its purpose unambiguous among siblings.

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

Usage Guidelines4/5

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

Explicitly points to cortex_get_result as the alternative for fetching the structured result body, which is the main likely confusion. It doesn't discuss when to use this over cortex_list_jobs or other read tools, but the primary alternative is covered.

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

cortex_get_resultA
Read-only

Get a Cortex job's structured result. Returns {job_id, status, result?}. The result is validated against the known per-kind schemas (workflow_eval / counterfactual_eval / outcome_attribution / complex_query / divergence_error_tracking). Raw artifacts (prompt input, raw model output) are NOT returned by this tool — they remain private on the platform.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesCortex job ID, e.g. "ctxjob_123".

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, but the description adds meaningful behavioral detail beyond them: the exact return shape, validation against per-kind schemas, and the privacy restriction on raw artifacts. This helps the agent understand what to expect and what is deliberately unavailable.

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 with no filler. The main purpose is front-loaded, the return shape is given immediately, and the raw-artifact caveat earns its place by managing expectations. Every sentence carries useful information.

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

Completeness4/5

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

For a single-parameter tool with no output schema, the description covers the essential contextual needs: return shape, accepted result kinds, and exclusion of raw artifacts. It could additionally explain status semantics (e.g., pending/failed states), but this is a minor gap given the explicit return shape and enumerations.

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

Parameters3/5

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

The input schema already documents job_id with an example ('ctxjob_123'), and schema description coverage is 100%. The description does not add significant parameter-level semantics beyond mentioning job_id in the return shape. This meets the baseline but does not exceed it.

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: 'Get a Cortex job's structured result.' It further distinguishes itself by stating what it returns and, importantly, what it does not return (raw artifacts), separating it from any raw-data or other Cortex job 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 clearly communicates when to use this tool: when a structured result for a Cortex job is needed. It also gives an explicit limitation—raw artifacts are not returned—signaling when not to use it. However, it stops short of naming a specific alternative tool for retrieving raw artifacts, so it is not a full 5.

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

cortex_job_runsA
Read-only

List the attempt history (audit-trail runs) for a Cortex job — one row per execution attempt, with status, model, metrics, timings, and any error. Read-only. Raw prompt/model artifacts are NOT included. Returns {runs: CortexJobRun[]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesCortex job ID, e.g. "ctxjob_123".

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds value by stating raw prompt/model artifacts are NOT included and that it returns {runs: CortexJobRun[]}, which helps set expectations about output. However, it does not disclose any rate limits, pagination, or sort order, and the annotations already cover the safety profile.

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

Conciseness4/5

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

The description is three sentences, each adding relevant details: the resource and scope, the read-only and exclusion note, and the return shape. It is efficiently written without fluff, though the third sentence about return shape could be considered slightly redundant given no output schema exists, but it is useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 is a read-only list with one parameter and no output schema, the description covers the key aspects: what it returns, what is excluded, and its read-only nature. There is no mention of pagination or ordering, but for a simple audit-trail list tool, this is adequate. The description is complete enough for an agent to call it correctly.

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

Parameters3/5

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

Schema coverage is 100% (job_id is fully described with format and example). The description does not add parameter-specific meaning beyond the schema, but it clarifies that the tool returns runs for that job, which is already implied by the schema. With full schema coverage, a baseline of 3 is appropriate.

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

Purpose4/5

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

The description states it lists attempt history (audit-trail runs) for a Cortex job, one row per execution attempt with status, model, metrics, timings, and errors. It clearly identifies the resource (Cortex job) and the action (list runs), but does not explicitly distinguish from sibling tools like cortex_get_job or cortex_list_jobs, relying on the term 'attempt history' to imply differentiation.

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

Usage Guidelines3/5

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

The description implies when to use it: to see attempt history for a specific job, and states what is not included (raw prompt/model artifacts). It does not explicitly state when NOT to use it or mention alternatives like cortex_get_job (which might return overall job status). The context of audit-trail runs is clear but exclusions are not.

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

cortex_launchA

Launch a Cortex job through the GOVERNED launcher (POST /v1/cortex/jobs/launch) — the preferred path for the read-only complex_query analyst and divergence_error_tracking. The actor is resolved server-side from the API key and all evidence is ACL-filtered before prompt construction (fails closed against cross-project leak). mode="sync" runs now and embeds result/error; mode="async" enqueues — poll with cortex_get_result or cortex_job_runs. Returns {job_id, status, mode, deduplicated, result?, error?}. Idempotent when idempotency_key is supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes"sync" runs now and embeds the result; "async" enqueues and returns the queued job.
job_kindYescomplex_query = read-only cited analyst for operational questions. divergence_error_tracking = aggregate divergence/error findings for a target.
questionNoFree-form question for the analyst. Recommended for complex_query.
project_idYesProject the job runs against. Used for target access checks and evidence filtering.
target_refYesStable reference to the target (e.g. "run_1", "case_123", or the project_id for target_type="project").
target_typeYesWhat the job runs against.
idempotency_keyNoDedupe key. Re-launching with the same key returns the existing job with deduplicated=true.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations say readOnlyHint=false and destructiveHint=false, but the description adds rich context: server-side actor resolution, ACL filtering before prompt construction, fails-closed behavior against cross-project leak, mode-dependent execution (embed vs enqueue), and idempotency semantics. These go well beyond the annotation flags.

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 dense paragraph with no filler. Every clause earns its place: the action, the endpoint, the preferred use cases, the mode behavior, the return shape, and the idempotency note. Information is front-loaded and the key differentiators appear early.

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 7-parameter tool with no output schema, the description is remarkably complete. It explains the return object, how to poll async jobs, the ACL/security posture, and idempotency. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the description's parameter mentions (mode sync/async, idempotency_key dedupe, question recommendation) largely mirror the schema text. It adds no new semantics beyond what the schema already conveys, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific action (launch a Cortex job) with an endpoint, identifies the governed launcher as the preferred path for specific job kinds (complex_query, divergence_error_tracking), and differentiates from siblings by name. An agent can immediately understand what it does and how it differs from cortex_run_job or cortex_get_job.

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

Usage Guidelines5/5

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

Explicitly names the preferred use cases and explains sync vs async modes, pointing to cortex_get_result or cortex_job_runs for polling. It also notes idempotency behavior and the ACL-fails-closed design, giving clear when-to-use guidance without needing to inspect siblings.

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

cortex_list_jobsA
Read-only

List Cortex jobs across accessible projects, newest first. Filter by status and/or kind. Read-only. Returns {data: CortexJob[], next_cursor}. Pass next_cursor back as cursor to page.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by job_kind, e.g. "complex_query", "workflow_eval".
limitNo
cursorNoOpaque pagination token from a previous next_cursor; pass through unchanged.
statusNoFilter by lifecycle status.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true; the description adds useful behavioral context: return shape ({data: CortexJob[], next_cursor}), pagination mechanics, and the cross-project scope. No contradiction with annotations.

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

Conciseness5/5

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

Three tight sentences front-load the core purpose, then give the essential return shape and pagination instruction. No filler or 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?

The description covers scope, ordering, filtering, mutability safety, return structure, and pagination continuation. An agent has everything needed to call and correctly page through this tool despite the lack of an output schema.

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

Parameters4/5

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

Schema coverage is 75% and includes descriptions for kind, cursor, and status. The description reinforces the meaning of status/kind as filters and explains how cursor relates to next_cursor, adding practical usage context beyond the schema. Limit remains implicitly clear.

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

Purpose5/5

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

States a specific verb ('List'), resource ('Cortex jobs'), and scope ('across accessible projects'), plus ordering ('newest first'). This clearly distinguishes it from siblings like cortex_get_job (single job) and cortex_run_job (job creation/execution).

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 spells out when to use the tool: listing jobs with optional status/kind filtering and cursor-based pagination. It does not explicitly mention alternatives like cortex_get_job for single-job retrieval, but the purpose and scope are clear enough to guide selection.

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

cortex_retry_jobA

Re-queue a failed or dead Cortex job for one more attempt (POST /v1/cortex/jobs/:id/retry). Returns {job_id, status}.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesCortex job ID to retry.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a mutating but non-destructive operation. The description adds that the action re-queues the job for an additional attempt and returns a status, but does not disclose side effects like triggering execution, auth requirements, or error behavior. This is adequate but not rich.

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

Conciseness5/5

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

A single sentence that packs the purpose, endpoint, and return value without wasted words. The key qualification ('failed or dead') is front-loaded and the response shape is included, making it highly scannable for an agent.

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

Completeness5/5

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

For a one-parameter tool with no output schema and minimal annotations, the description covers the operation, target resource, endpoint, and response format. Nothing an agent needs to decide whether to call this tool and what to expect is missing.

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

Parameters3/5

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

Schema coverage is 100%, with job_id described as 'Cortex job ID to retry,' so the schema already carries the parameter meaning. The description reinforces this via the endpoint path (:id) but adds no new semantic details beyond the schema, matching the baseline.

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

Purpose5/5

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

States a specific verb ('Re-queue'), a clear resource ('failed or dead Cortex job'), and the mechanism ('one more attempt'). The endpoint and return shape are included, making the tool's function unambiguous and easily distinguishable from siblings like cortex_get_job or cortex_list_jobs.

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

Usage Guidelines4/5

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

The description clearly scopes usage to failed or dead jobs and frames the tool as a retry operation, which gives an agent the context needed to select it over run/get/list siblings. It does not explicitly state when not to use it or name alternatives, so it stops short of a full 5.

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

cortex_run_counterfactualA

Convenience wrapper around cortex_run_job for job_kind="counterfactual_eval": estimates what MIGHT have happened under a hypothetical change. Result is a HYPOTHESIS, not fact — it carries assumptions, evidence_refs, confidence, and uncertainty. question is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
optionsNoJSON object of execution options. Keys: use_llm (boolean), create_surface_item (boolean), timeout_ms (number), dedupe_key (string). Example: {"use_llm":true,"create_surface_item":false}
criteriaNoJSON object describing what the eval is optimizing for. Free-form per job_kind, but typical keys: optimize_for (string[]), constraints (string[]), pass_threshold (number 0..1). Example: {"optimize_for":["resolution_time"],"constraints":["do_not_expose_private_evidence"]}
questionYesThe what-if question. Required. Example: "What if Alice owned this escalation from the start?"
input_refsNoJSON object of evidence references the runner may use. Optional keys: run_ids (string[]), case_ids (string[]), node_ids (string[]), chunk_ids (string[]), surface_item_ids (string[]). The platform ACL-filters these before prompt construction; refs the caller cannot access are dropped or the job is denied. Example: {"run_ids":["run_1"],"case_ids":["case_123"]}
project_idYes
target_refYes
target_typeYes
input_payloadNoJSON object for inline target data. Required when target_type="external" (the target isn't a row in our DB). Example: {"workflow_name":"refund approval","steps":[]}

TDQS

A4/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the annotations by warning that the result is a 'HYPOTHESIS, not fact' and naming the output fields: assumptions, evidence_refs, confidence, and uncertainty. This is valuable because annotations only say readOnlyHint=false, openWorldHint=true, destructiveHint=false. It does not disclose side effects like whether a run record is created, but the wrapper framing plus annotations make the operation's non-read-only nature reasonably 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?

The description is three tight sentences with no filler. Purpose is front-loaded in the first clause, the important hypothesis caveat follows immediately, and the final sentence flags the critical required parameter. Every sentence earns its place.

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

Completeness3/5

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

The description provides a strong high-level mental model, including result semantics and the underlying job kind. However, for an 8-parameter tool with no output schema and three undocumented required fields, it leaves gaps: it does not explain what target_type/target_ref should be, whether the call is asynchronous or creates a persistent run, or how the result is delivered beyond the named fields. This is adequate but not fully self-sufficient.

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

Parameters2/5

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

The description only says `question` is required, which the schema already encodes via `required` and `minLength`. It adds no semantic explanation for the other required parameters—`target_type`, `target_ref`, and `project_id`—which lack schema descriptions. With 63% schema description coverage, the description should compensate for at least the required undocumented fields, but it does not.

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

Purpose5/5

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

The description states a specific verb and resource: it 'estimates what MIGHT have happened under a hypothetical change' as a counterfactual_eval job. Naming itself a 'convenience wrapper around cortex_run_job' makes its relationship to the generic job tool explicit and distinguishes it from siblings like cortex_run_eval. This is not a tautology and gives an agent a clear, non-confusable purpose.

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

Usage Guidelines4/5

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

It explicitly identifies when to use the tool: when job_kind='counterfactual_eval', and frames it as a convenience wrapper over cortex_run_job. This is useful selection guidance. However, it does not mention alternative tools such as cortex_run_eval or state explicit exclusion criteria, so it stops short of full 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.

cortex_run_evalB

Convenience wrapper around cortex_run_job for job_kind="workflow_eval": checks whether a run/case/workflow met its criteria (e.g. SLA, policy compliance, action-item ownership). Returns the same job shape as cortex_run_job.

ParametersJSON Schema
NameRequiredDescriptionDefault
optionsNoJSON object of execution options. Keys: use_llm (boolean), create_surface_item (boolean), timeout_ms (number), dedupe_key (string). Example: {"use_llm":true,"create_surface_item":false}
criteriaNoJSON object describing what the eval is optimizing for. Free-form per job_kind, but typical keys: optimize_for (string[]), constraints (string[]), pass_threshold (number 0..1). Example: {"optimize_for":["resolution_time"],"constraints":["do_not_expose_private_evidence"]}
questionNo
input_refsNoJSON object of evidence references the runner may use. Optional keys: run_ids (string[]), case_ids (string[]), node_ids (string[]), chunk_ids (string[]), surface_item_ids (string[]). The platform ACL-filters these before prompt construction; refs the caller cannot access are dropped or the job is denied. Example: {"run_ids":["run_1"],"case_ids":["case_123"]}
project_idYes
target_refYes
target_typeYes
input_payloadNoJSON object for inline target data. Required when target_type="external" (the target isn't a row in our DB). Example: {"workflow_name":"refund approval","steps":[]}

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already signal readOnlyHint=false (mutation possible) and openWorldHint=true, so no contradiction with the description. The description adds the useful fact that it returns the same job shape as cortex_run_job. However, it does not disclose actual side effects — running a workflow_eval may trigger LLM calls or create surface items (evidenced by options.create_surface_item) — which matters for a non-read-only operation.

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

Conciseness4/5

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

Two dense sentences, front-loaded with the core purpose and the parent-tool relationship. No filler. It stops just short of 5 because it references 'same job shape' rather than describing it, keeping some semantic debt in the reader.

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

Completeness2/5

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

For an 8-parameter tool with no output schema and 50% schema coverage, the description leaves too much implicit: what the returned job shape actually contains, what side effects occur, and how the criteria/target parameters fit together. Since it defers entirely to cortex_run_job's behavior without describing it, an agent cannot fully reason about invocation or results.

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

Parameters2/5

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

Schema description coverage is 50% (options, criteria, input_refs, input_payload are documented; project_id, target_ref, target_type, question are not). The description adds zero parameter-level meaning, so it does not compensate for the undocumented half. For a wrapper tool it would help to explain how target_type, target_ref, and criteria interrelate, but none of that is present.

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

Purpose4/5

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

States a specific verb and resource: it wraps cortex_run_job for job_kind='workflow_eval' to check whether a run/case/workflow met its criteria (SLA, policy compliance, action-item ownership). It names the parent sibling explicitly, which differentiates it from cortex_run_job. However, it does not distinguish against other cortex_* siblings like cortex_launch or cortex_ask, so differentiation is partial.

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

Usage Guidelines3/5

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

Implied usage is reasonably clear: use it to check whether a target met eval criteria, and it identifies cortex_run_job as the underlying tool. But it never states when to call cortex_run_job directly versus this wrapper, and offers no explicit exclusions or alternatives for the eval scenario.

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

cortex_run_jobA

Enqueue a generic Cortex job (evals, counterfactuals, experiments, attributions). The actor is resolved server-side from the API key (a key bound to an agent_id runs as that agent; otherwise as the api_key actor). The platform ACL-filters input_refs and target access before prompt construction. Returns {job_id, status} plus, when a synchronous MVP runner completes the job inline, the validated result.

ParametersJSON Schema
NameRequiredDescriptionDefault
optionsNoJSON object of execution options. Keys: use_llm (boolean), create_surface_item (boolean), timeout_ms (number), dedupe_key (string). Example: {"use_llm":true,"create_surface_item":false}
criteriaNoJSON object describing what the eval is optimizing for. Free-form per job_kind, but typical keys: optimize_for (string[]), constraints (string[]), pass_threshold (number 0..1). Example: {"optimize_for":["resolution_time"],"constraints":["do_not_expose_private_evidence"]}
job_kindYesWhat kind of Cortex job to run. workflow_eval = check workflow behavior against criteria. counterfactual_eval = estimate what would have happened under a changed assumption (HYPOTHESIS, not fact). workflow_experiment = compare variants. outcome_attribution = explain why something succeeded/failed. recommendation_impact_eval / prompt_variant_eval / policy_eval = specialized variants.
questionNoFree-form question the job should answer. Required for counterfactual_eval (e.g. "What if Alice had owned this escalation earlier?"). Optional for workflow_eval where criteria suffice.
input_refsNoJSON object of evidence references the runner may use. Optional keys: run_ids (string[]), case_ids (string[]), node_ids (string[]), chunk_ids (string[]), surface_item_ids (string[]). The platform ACL-filters these before prompt construction; refs the caller cannot access are dropped or the job is denied. Example: {"run_ids":["run_1"],"case_ids":["case_123"]}
project_idYesProject ID. The platform uses this for target access checks and evidence filtering.
target_refYesStable reference to the target. For internal target_types this is the platform ID (e.g. "case_123"); for "external" it's the caller's ID for the object described in input_payload.
target_typeYesType of object being evaluated. Use "external" with input_payload when the target lives outside Invariance.
input_payloadNoJSON object for inline target data. Required when target_type="external" (the target isn't a row in our DB). Example: {"workflow_name":"refund approval","steps":[]}

TDQS

A3.7/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing that the actor is resolved server-side from the API key, that the platform ACL-filters input_refs and target access before prompt construction, and that the return value is {job_id, status} plus an optional inline result when a synchronous runner completes. This is meaningful behavioral context for auth, access control, and async execution that the annotations do not provide.

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, all dense and purposeful: the tool's core action is front-loaded, followed by actor resolution, ACL filtering, and return behavior. Every sentence earns its place, and there is no redundant repetition of schema content.

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

Completeness4/5

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

For a tool with 9 parameters, no output schema, and async behavior, the description covers the essential behavioral context: actor resolution, ACL filtering, and the return shape. It does not explicitly point to follow-up tools like cortex_get_job or cortex_get_result for asynchronous jobs, but the schema's rich per-parameter descriptions fill most practical gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 without any additional parameter explanation. The description adds a useful cross-cutting detail about input_refs and target access being ACL-filtered, but it does not meaningfully clarify individual parameters beyond what the schema already documents. This is adequate but not exceptional.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Enqueue a generic Cortex job.' It enumerates the job categories (evals, counterfactuals, experiments, attributions), so the agent can tell this is the umbrella runner rather than a specialized sibling. It does not explicitly name the specialized siblings like cortex_run_eval or cortex_run_counterfactual, so it stops just short of full sibling differentiation.

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

Usage Guidelines2/5

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

The description says this is the 'generic' Cortex job runner but gives no explicit when-to-use versus alternatives, no exclusions, and no pointer to specialized helpers such as cortex_run_eval or cortex_run_counterfactual. The word 'generic' implies breadth, but the agent is left to infer when a specialized sibling would be a better fit.

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

invariance_agent_createA

Create a new agent inside one of the caller's projects. Requires a user-session JWT bearer (not an agent API key) — see invariance-cli inv auth signup / inv auth signin to obtain one.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAgent name (visible in the dashboard).
project_idYesProject ID the agent will live under. The caller must be a member.
public_keyNoOptional Ed25519 public key (64-char lowercase hex). Can be set later via invariance_agent_set_key.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate this is a mutation (readOnlyHint=false). The description adds a concrete behavioral requirement—the auth type needed (user-session JWT vs agent API key)—which is not captured in annotations. It does not contradict annotations, and the auth requirement is a meaningful extra behavioral detail for the agent to act on.

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

Conciseness5/5

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

Two sentences with no fluff. The core action is front-loaded, and the auth prerequisite is clearly stated as a secondary point. Every word earns its place; there is zero redundancy.

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

Completeness4/5

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

With no output schema, the description need not explain return values. All required parameters are documented in the schema, and the description covers the critical auth requirement and project scoping. It lacks mention of side effects like the agent appearing in a dashboard, but that's implied by 'visible in the dashboard' in the schema. Overall, the necessary call-time information is present.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter is already described. The description does not elaborate on parameter meanings beyond what the schema provides, though it does reiterate the project scope. The schema handles param semantics, so a baseline of 3 is appropriate; the description adds little beyond what the schema already states.

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 ('Create'), a specific resource ('a new agent'), and a scoping condition ('inside one of the caller's projects'). It clearly differentiates from sibling agent tools like invariance_agent_list, invariance_agent_get, and invariance_agent_set_key, which handle other operations. The purpose is unambiguous.

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

Usage Guidelines4/5

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

The description gives a clear prerequisite: requires a user-session JWT (not an agent API key), and points to the CLI to obtain one. It also implies the use case (creating an agent within a project) but does not explicitly compare to alternatives. It's helpful but lacks an explicit 'use this when' statement or exclusion of other agent tools.

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

invariance_agent_getA
Read-only

Fetch a single agent by ID. Requires a user-session JWT bearer.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAgent ID.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's safety profile is covered. The description adds a useful behavioral detail: 'Requires a user-session JWT bearer', which informs authentication prerequisites beyond what annotations provide. No contradictions with annotations.

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

Conciseness5/5

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

The description is a single, tightly worded sentence that front-loads the action and resource, then adds a crucial auth note. No redundancy; every word contributes 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?

This is a simple single-parameter, read-only tool with no output schema. The description covers the operation and auth requirement. While it does not explicitly state the return value shape, for a straightforward 'get by ID' operation, the given context plus annotations is sufficient for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already states 'Agent ID' for the id parameter. The description's phrase 'by ID' aligns with the schema but does not add any additional meaning (e.g., type, format, constraints) beyond what is already documented. Baseline of 3 is appropriate for high schema coverage.

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

Purpose5/5

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

The description uses a specific verb ('Fetch') and a specific resource ('a single agent by ID'), which clearly distinguishes this from sibling tools like invariance_agent_list (which lists agents) and invariance_agent_me (which fetches the current user's agent). The scope is unambiguous.

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

Usage Guidelines3/5

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

The description implies the tool is for fetching a single agent by ID, but it does not explicitly state when to choose this over alternatives (e.g., 'Use agent_list to get all agents, use agent_me for the current user'). No exclusions or alternative routing is provided, so the guidance is implied rather than explicit.

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

invariance_agent_listA
Read-only

List agents inside one of the caller's projects. Requires a user-session JWT bearer.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID. The caller must be a member.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds a critical behavioral detail—'Requires a user-session JWT bearer'—which is not captured in annotations and is essential for successful invocation. This goes beyond the structured fields and adds real value.

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

Conciseness5/5

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

The description is a single sentence, concise and front-loaded with the action ('List agents'). It includes the scope and the auth requirement without any filler. Every word contributes to the meaning.

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

Completeness4/5

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

For a simple listing tool with one parameter, the description is fairly complete. It specifies the scope, auth, and the fact it lists agents. It does not explicitly mention the return format (a list of agents) but that is implied by the verb. Given no output schema and the simplicity, the description is adequate, though it could mention any default behavior or lack of filtering.

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

Parameters3/5

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

The input schema covers project_id with a description ('Project ID. The caller must be a member.'), so schema coverage is 100%. The description reinforces the project scope but does not add new syntax, format, or constraints beyond what the schema already provides. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('List agents') and the scope ('inside one of the caller's projects'), which is a specific verb+resource pairing. It distinguishes itself from sibling agent tools (invariance_agent_me, invariance_agent_get, invariance_agent_create) by indicating this is a listing operation, not a single-item or mutation operation.

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

Usage Guidelines3/5

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

The description implies the tool is for enumerating agents within a project but does not explicitly mention when to use it over alternatives like invariance_agent_get or invariance_agent_me. There is no guidance on exclusions (e.g., 'for a single agent, use invariance_agent_get'). The context is clear for listing, but no explicit routing is provided.

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

invariance_agent_meA
Read-only

Show the agent identity and API key associated with the current credentials. Useful for confirming which agent context the MCP server is operating as.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The readOnlyHint annotation already declares the non-mutating nature, and the description adds what the tool returns: the agent identity and API key. This disclosure is meaningful and consistent with the annotations, though it could add a note about the sensitive nature of the API key.

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

Conciseness5/5

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

Two compact, front-loaded sentences: the first gives the action and result, the second gives the practical reason to call the tool. No filler or redundant detail.

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

Completeness4/5

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

For a zero-parameter introspection tool with no output schema, the description covers both the result of invocation and the intended benefit. It stops short of spelling out the exact output shape, but nothing required 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 input schema is an empty object, meaning there are no parameters and 100% schema coverage. With zero parameters, the baseline of 4 applies, and there is simply nothing further for the description to explain.

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 action ('Show') and resource ('agent identity and API key') bound to the current credentials. This clearly distinguishes it from the many agent-related siblings such as invariance_agent_get and invariance_agent_list, which address other agents.

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 second sentence provides an explicit use case: confirming the agent context under which the MCP server operates. It does not reference alternative tools or exclusions, but the purpose of this parameterless introspection tool is unambiguous.

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

invariance_agent_set_keyA

Register or rotate the calling agent's Ed25519 public key. Once set, every node written by this agent must be signed with the matching private key (the server uses this key to verify signatures during invariance_run_verify).

ParametersJSON Schema
NameRequiredDescriptionDefault
public_keyYesEd25519 public key encoded as lowercase hex — exactly 64 hex characters (32 bytes). Example: "a1b2c3...e9f0" (64 chars total).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, and the description adds the meaningful behavioral fact that every node written after setting the key must be signed with the matching private key. It also links the key to server-side verification during invariance_run_verify, providing context beyond the annotations without contradiction.

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

Conciseness5/5

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

The description is two sentences with the primary purpose front-loaded and the key consequence following. Every sentence earns its place without unnecessary detail.

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

Completeness5/5

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

For a simple one-parameter tool, the description covers purpose, effect, and the verification context. Combined with fully documented schema and annotations, nothing needed to correctly invoke the tool is missing.

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

Parameters3/5

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

The schema has 100% coverage with a full description of the public_key parameter, including format and length. The tool description adds no additional parameter-specific details, only the contextual purpose of the key, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Register or rotate') and a clear resource ('calling agent's Ed25519 public key'), which distinguishes it from sibling agent tools like invariance_agent_me and invariance_agent_create. It also adds the operational consequence of node-signing requirements, further clarifying its unique role.

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

Usage Guidelines4/5

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

The description provides clear context that the key must be set before writing signed nodes, and explicitly references the verification step in invariance_run_verify, implying when this tool is needed. It does not explicitly state when not to use or compare alternatives, so it falls short of a full 5.

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

invariance_askB
Read-only

Ask a question against the agent's runs / knowledge base (turn-based session)

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
messageYes
max_turnsNo
session_idNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already provide readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful behavioral context by specifying a turn-based session over runs/knowledge base, but it does not disclose how session state behaves, what max_turns does, or what kind of response the caller receives.

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 one front-loaded sentence that conveys purpose, target resource, and session behavior without redundancy. Every word contributes and nothing needs to be trimmed.

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

Completeness2/5

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

For a tool with four parameters, no output schema, and no parameter documentation in the schema, the description is too sparse to be complete. It gives the gist but leaves callers guessing about optional parameter effects and response behavior.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must provide parameter meaning; it partially does by implying 'message' is the asked question and 'turn-based session' relates to session state. It does not explain model or max_turns, leaving two meaningful optional parameters effectively undocumented.

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

Purpose4/5

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

The description clearly states that the tool asks a question against the agent's runs/knowledge base and is turn-based, which is far more specific than a tautology. However, it does not explicitly distinguish itself from similar-sounding siblings like cortex_ask, leaving some differentiation to inference.

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

Usage Guidelines2/5

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

The phrase 'turn-based session' hints at multi-turn conversational usage, but there is no guidance about when to use this tool versus alternatives like cortex_ask, when not to use it, or what prerequisites might exist. Agents looking for routing guidance will not find it here.

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

invariance_capture_createA

Create a Capture — a standalone evidence record (session, conversation, trace). Captures don't need an execution upfront; link a capture to a run later with invariance_capture_link. Returns the capture session.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFree-form labels for filtering and evidence-graph rollups, e.g. ["meeting","q3"]. Normalized (trimmed/lowercased/deduped) server-side.
modelNoModel name used in the session, e.g. "claude-opus-4-7".
titleNoHuman-readable title shown in dashboards.
run_idNoLink this capture to an existing run at creation time. Can also be linked later with invariance_capture_link.
sourceYesOrigin of the capture, e.g. "claude_code", "api", "browser", "zapier".
metadataNoFree-form metadata as a JSON object string. Example: {"user_id":"u_42","environment":"prod"}
capture_typeNoAlias for session_type — use either; session_type takes precedence.
session_typeNoType classification for the session, e.g. "chat", "tool_use", "workflow".
external_session_idNoYour system's session identifier for deduplication and cross-referencing.

TDQS

A4.2/5.0
Behavior4/5

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

It discloses that creating a Capture does not require an execution upfront, that linking can be deferred, and that the tool returns the capture session. This is consistent with annotations readOnlyHint=false and destructiveHint=false, and no contradiction is present.

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

Conciseness5/5

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

Three sentences, each with a clear job: define the resource, clarify the deferred-linking behavior, and state the return value. There is no filler or redundant repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 create tool with nine documented parameters and no output schema, the description provides adequate orientation: it defines what a Capture is, explains the relationship to run linking, and states the return type. It could more explicitly differentiate Capture from related session/case creation tools, but the essential invocation context is present.

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

Parameters3/5

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

Schema description coverage is 100%, so the structured schema already documents all parameters thoroughly. The description adds context about deferred linking via invariance_capture_link but does not materially expand the meaning of individual parameters beyond what the schema already provides.

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

Purpose5/5

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

The description opens with a specific verb-resource pair ('Create a Capture') and defines the resource as a 'standalone evidence record (session, conversation, trace)'. The deferred-linking behavior ('link a capture to a run later with invariance_capture_link') clearly distinguishes this tool from run-creation and capture-linking siblings.

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

Usage Guidelines4/5

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

The description communicates the key usage context: captures are for standalone evidence that can be linked to a run later, naming invariance_capture_link as the follow-up tool. It does not explicitly enumerate when-not-to-use cases or contrast with sibling tools like session_create, but the intended workflow is clear.

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

invariance_capture_getA
Read-only

Get a capture by id. Captures are standalone evidence; they don't need an execution upfront; link a capture to a run later with invariance_capture_link.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCapture id, e.g. "cap_abc123".

TDQS

A4/5.0
Behavior3/5

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

Annotations already carry readOnlyHint=true, so the safe-read behavior is covered. The description adds useful domain context about captures being standalone and linkable later, which goes beyond the annotations. However, it does not describe the return shape or behavior when the id is not found; with no output schema, that gap remains.

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 filler. The core operation is front-loaded, and the second sentence earns its place by explaining why captures differ from runs and naming the linking tool.

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

Completeness4/5

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

For a single-parameter read-only getter, the description is nearly complete: it defines the object being fetched, explains its standalone nature, and points to the follow-up action. The only minor gap is that no output format is described, but 'Get a capture' sufficiently implies the returned entity for this simple tool.

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

Parameters3/5

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

Schema description coverage is 100%: the single 'id' parameter is fully documented with a format example ('cap_abc123'). The description merely repeats the 'by id' usage without adding new parameter semantics, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource: 'Get a capture by id.' It also clarifies what a capture is ('standalone evidence') and distinguishes it from execution-bound entities like runs, helping an agent pick this over capture_list or run_get even among many siblings.

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

Usage Guidelines4/5

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

The description gives clear usage context: captures are standalone evidence that do not need an execution upfront, so this tool is for retrieving such a capture by id. It also names the related workflow step, invariance_capture_link, for later linking to a run. It stops short of explicitly contrasting this with capture_list or other retrieval tools, so it misses full exclusionary guidance.

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

invariance_capture_listA
Read-only

List captures (paginated). Captures are standalone evidence; they don't need an execution upfront. Filter by project_id, operator_id, session_type, source, run_id, or tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoComma-separated tags; matches captures containing ALL of them, e.g. "meeting,q3".
limitNo
cursorNoOpaque pagination token from previous response next_cursor; pass through unchanged.
run_idNo
sourceNo
project_idNo
operator_idNo
session_typeNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds the 'paginated' behavior, which is also implied by the cursor and limit parameters in the schema. It does not contradict annotations and adds minimal extra behavioral context beyond what structured fields provide. Given the annotation coverage, a 3 is appropriate.

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

Conciseness5/5

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

The description is extremely concise, consisting of two sentences with no filler. The primary action and key distinguishing feature are front-loaded, and the list of filters is presented efficiently. Every word earns its place.

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

Completeness4/5

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

For a list tool with readOnlyHint and no output schema, the description covers the essential elements: what it lists, that it is paginated, and the available filters. It does not detail the response format or default ordering, but these are not critical for a list operation. The description is sufficient for an agent to invoke the tool correctly, though slightly more detail on pagination usage could push it to a 5.

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

Parameters2/5

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

Schema description coverage is only 25% (only tags and cursor have descriptions). The description lists the filter fields but provides no semantic detail beyond their names. It does not explain how project_id, operator_id, etc., should be formatted or interpreted, nor does it compensate for the low coverage. The tool description fails to add value over the schema for most parameters, so a score of 2 is justified.

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 verb 'List' and the resource 'captures', and adds a distinguishing detail that captures are standalone evidence not requiring an execution upfront. This sets it apart from sibling tools like invariance_capture_get (single fetch), invariance_capture_create (creation), and invariance_run_list (lists runs). The purpose is unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: to list captures, and clarifies the domain-specific nature of captures (standalone evidence). It implies that for captures tied to executions, a different tool would be used, but it doesn't explicitly name alternatives or provide exclusions. This is clear context without explicit routing, which matches a score of 4.

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

invariance_capture_updateA

Update a capture: change status, reassign run_id, or merge metadata. Captures are standalone evidence; they don't need an execution upfront; link a capture to a run later with invariance_capture_link.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCapture id, e.g. "cap_abc123".
tagsNoReplaces the tag set. Normalized server-side. Pass [] to clear.
run_idNoRun to link this capture to; pass null to unlink.
statusNoNew status for the capture, e.g. "open", "closed".
metadataNoJSON object string; shallow-merged with existing metadata.

TDQS

A4/5.0
Behavior3/5

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

Annotations already mark this as a write operation (readOnlyHint=false, destructiveHint=false). The description adds context that captures are standalone evidence and don't require an execution upfront, which is useful. However, it doesn't disclose side effects beyond what's stated, such as whether metadata merging is destructive or if tags are replaced (though that's in the schema). No contradiction with annotations.

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

Conciseness5/5

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

Two tightly written sentences. The first sentence front-loads the core operations, and the second clarifies the capture's standalone nature and points to the link tool. No wasted words; 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?

Given there is no output schema and the input schema fully documents parameters, the description is adequate for an agent to correctly invoke the tool. It explains the standalone nature of captures and how linking works, which is important context. It doesn't cover error cases or prerequisites, but those are not essential for a straightforward mutation tool with a single required parameter.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented. The description's mention of 'merge metadata' aligns with the schema's 'shallow-merged', and 'reassign run_id' matches the schema, but it adds little beyond what the schema provides. It doesn't mention tags at all, but since schema covers them, the baseline of 3 applies.

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

Purpose5/5

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

The description uses the specific verb 'Update' with the resource 'capture' and enumerates the exact operations (change status, reassign run_id, merge metadata). It clearly distinguishes from invariance_capture_link by noting linking is done separately, so an agent can tell this tool apart from its sibling.

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

Usage Guidelines4/5

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

It explicitly states when to use the link tool instead ('link a capture to a run later with invariance_capture_link'), providing a clear alternative. While it doesn't list every when-not scenario, the main disambiguation is covered, and the intended use (modifying an existing capture) is implicit but obvious.

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

invariance_case_closeA

Close a case with an outcome — the common path. Equivalent to invariance_case_update with status="closed" + outcome + outcome_value_usd.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
outcomeYese.g. "approved", "denied", "escalated", "auto_resolved".
closed_atNoISO-8601 close time. Defaults to now.
value_usdNoRealized $ value (positive) or loss (negative).

TDQS

A4/5.0
Behavior3/5

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

Annotations already convey that this is neither read-only nor destructive. The description adds that it closes a case by setting status to 'closed' and applying outcome fields, which is useful but does not cover reversibility, side effects, or permissions. It provides moderate additional context without contradicting the annotations.

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

Conciseness5/5

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

A single, tightly written sentence that front-loads the action and uses the equivalence statement to convey meaningful detail without redundancy. Every part 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?

This is a simple tool with annotations covering its safety profile and a schema covering most parameters. The description plus schema are sufficient for calling the tool in typical cases, though it does not explain return behavior or edge conditions. Given the tool's simplicitychers, this is nearly complete.

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

Parameters3/5

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

The schema already describes outcome, closed_at, and value_usd, covering 75% of parameters; id is self-explanatory. The description mostly restates outcome and value_usd via the equivalence to invariance_case_update and does not add new parameter-level semantics. Baseline 3 is appropriate given the high schema coverage.

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

Purpose5/5

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

The description clearly identifies the action (close), the resource (case), and the intended purpose (recording an outcome). It also distinguishes itself from invariance_case_update by explicitly framing itself as a specialized equivalent, so an agent can tell them apart.

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 calls this 'the common path' and explicitly names invariance_case_update as its equivalent, providing clear context for when this tool is appropriate. It does not spell out edge cases where update should be used instead, but the common-path framing gives practical guidance.

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

invariance_case_createA

Create a workflow-instance Case. A case owns many runs across time, agents, and humans (one loan, one audit, one claim). Returns the case; use its id when starting runs with invariance_run_start to link them.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFree-form labels for filtering and rollups, e.g. ["urgent","vip"]. Normalized (trimmed/lowercased/deduped) server-side.
ownerNoAssigned team or human reviewer.
opened_atNoISO-8601 timestamp when the case opened in the source system. Defaults to now.
tenant_idNoYour customer (the platform user / firm). Distinct from the Invariance org running the agent.
end_user_idNoHuman the workflow is acting on behalf of (loan applicant, reviewer).
custom_attrsNoJSON object string of domain attributes (e.g. {"loan_id":"L_1","amount":250000}).
workflow_keyYesStable workflow identifier, e.g. "mortgage.refi" or "audit.sox.control".

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already communicate readOnlyHint=false and destructiveHint=false, so it is known this is a mutating but non-destructive operation. The description adds useful behavior beyond the annotations by stating that a new case is created, that it has many related runs across time/agents/humans, and that the function returns the case so its id can be reused with invariance_run_start. It does not go into idempotency or whether duplicate cases are possible, but 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 sentences accomplish a lot: defining the resource, giving the conceptual lifecycle, and stating the return value and next-step workflow with invariance_run_start. No filler is present, and the key actionable information is front-loaded.

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

Completeness4/5

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

Given the 7-parameter schema with full descriptions and annotations covering mutation safety, the description is complete enough. It covers the creation outcome, the return value, and how the returned id feeds into the next natural step. A small inclusion like when to use a different case-creator would make it more complete, but the current description is sufficient for correct invocation.

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

Parameters3/5

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

The input schema already has 100% description coverage for all 7 parameters, so the baseline is 3. The description does not need to repeat parameter details, and the small hints it gives (e.g., a case is aligned with a workflow instance) reinforce the meaning of workflow_key without adding explicit parameter-level guidance beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource ('Create a workflow-instance Case') and clarifies what a case is conceptually ('owns many runs across time, agents, and humans'). It distinguishes this from other case-type tools in the sibling list by emphasizing workflow instances, and it mentions using the returned id with invariance_run_start, making the purpose 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 provides clear context for when to create a case: a case is a logical grouping for runs, and the returned id should be used to link subsequent runs. It does not explicitly name alternatives or exclusions (e.g., 'use invariance_eval_case_create for eval cases'), but the 'workflow-instance' framing and run-starting linkage give a strong implicit usage boundary.

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

invariance_case_event_createA

Attach a semantic workflow event to a case, e.g. "support.customer.escalated", "approval.granted", or "docs.received". Prefer this for meaningful workflow facts; keep raw execution trace data in runs/nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCase id, e.g. "case_abc123".
tagsNoFree-form labels for filtering and rollups. Normalized server-side.
typeYesDotted semantic event type.
payloadNoJSON object string for event-specific fields.
actor_idNo
actor_typeNo
occurred_atNoISO-8601 source timestamp. Defaults to now.
evidence_refsNoJSON array of non-node evidence refs: tickets, docs, Slack, GitHub, meetings, URLs.
evidence_node_idsNoNode ids that justify this event.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (write operation), destructiveHint=false (non-destructive), and openWorldHint=true (potential side effects). The description adds that this attaches a semantic event, but does not disclose any potential side effects (e.g., triggering monitors, emitting signals, or affecting case state) despite the openWorldHint. It doesn't contradict annotations but fails to elaborate on behavioral traits beyond the basic write action. It does clarify the distinction from raw trace data, which is useful.

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, focused sentence that front-loads the core action, provides illustrative examples, and includes usage guidance in the second half. No wasted words; it earns its place.

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

Completeness3/5

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

With 9 parameters, no output schema, and an openWorldHint, the description could be more complete. It explains the core purpose and usage but does not mention what the tool returns, any prerequisites (e.g., the case must exist), or how the event integrates with other case/event tools. It gives enough to get started but leaves gaps for an agent to fully understand the tool's place and effects.

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

Parameters3/5

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

Schema description coverage is 78%, so most parameters are documented in the schema. The description does not add meaning for any parameters beyond what the schema provides; it only gives examples for 'type'. It does not compensate for the undocumented parameters (actor_id, actor_type) which lack schema descriptions. Since coverage is high, the baseline is 3, and the description adds marginal value here.

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 action: 'Attach a semantic workflow event to a case', with concrete examples of event types. It explicitly distinguishes this from raw execution trace data ('keep raw execution trace data in runs/nodes'), which separates it from related tools like invariance_node_write or invariance_run_*. This is a specific verb+resource with a clear scope.

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 guidance: 'Prefer this for meaningful workflow facts; keep raw execution trace data in runs/nodes.' This tells the agent when to use this tool and what to avoid. However, it doesn't explicitly mention alternatives like invariance_workflow_event_create or invariance_signal_emit, so the exclusion list is incomplete. Still, it gives a clear context for use.

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

invariance_case_events_listA
Read-only

List semantic workflow events attached to one case. These are the queryable facts over the run/node evidence layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCase id, e.g. "case_abc123".
limitNo
cursorNoopaque pagination token; pass through unchanged

TDQS

A3.8/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true and openWorldHint=true, which already signal a safe, non-committal read operation. The description adds context about the semantic nature of events and their evidence-layer role, but does not disclose pagination limits, default ordering, or behavior when a case has no events. It neither contradicts annotations nor enriches them substantially.

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 efficient sentences: the first front-loads the core purpose, the second adds valuable interpretive context. No filler or redundant phrasing. The description earns its length and is easy to scan.

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

Completeness4/5

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

For a read-only list tool with a simple schema and no output schema, the description gives enough context to understand what events are ('semantic workflow events') and their role ('queryable facts over the run/node evidence layer'). It does not mention pagination or result format, but those are partially covered by the cursor parameter description. Overall, it is functionally complete for a non-destructive operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 describes 'id' and 'cursor' but not 'limit'. The description does not compensate by explaining the meaning of limit or how the parameters interact. With 67% schema coverage, the description adds no parameter-level value beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('List') with a clear resource ('semantic workflow events') and an explicit scope ('attached to one case'). The added phrase 'queryable facts over the run/node evidence layer' gives a nuanced definition that distinguishes it from case-level getters and workflow-level event tools.

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

Usage Guidelines3/5

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

The description implies usage contexts (e.g., when you need events for a specific case) by stating 'attached to one case', but it does not explicitly contrast it with likely alternatives such as invariance_case_evidence or invariance_workflow_event_list. No exclusions or conditions are provided, so an agent must infer when this tool is the right choice.

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

invariance_case_evidenceA
Read-only

Show normalized evidence for a case: the case, linked runs, nodes, workflow events, actors, and outcome. Use this when you need the full workflow execution record instead of only the case row.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCase id, e.g. "case_abc123".

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds the scope of returned data but does not elaborate on 'normalized' or any processing/performance implications. No contradiction, but limited added behavioral context.

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

Conciseness5/5

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

Two sentences with zero fluff. The purpose is front-loaded, and the usage guidance is a clear second sentence. Every word earns its place.

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

Completeness4/5

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

For a read-only tool with a single parameter and no output schema, the description covers what it returns and when to use it. It could clarify 'normalized' further, but for its scope it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 only parameter 'id' is fully described in the schema with an example. The description adds no extra parameter semantics; baseline 3 applies since schema coverage is 100%.

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 ('Show') and a well-defined resource ('normalized evidence for a case') with an explicit list of components (case, runs, nodes, workflow events, actors, outcome). It differentiates from the sibling invariance_case_get by explicitly saying 'instead of only the case row.'

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

Usage Guidelines5/5

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

It gives a clear condition for use: 'when you need the full workflow execution record' and contrasts with 'only the case row,' which implies an alternative. This is explicit enough to guide the agent without naming the sibling.

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

invariance_case_getA
Read-only

Get a case by id, including its linked runs (newest first, capped at 100). Use to inspect status, outcome, owner, custom_attrs, and the runs the case has accumulated.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCase id, e.g. "case_abc123".

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses that linked runs are included, ordered newest first, and capped at 100. This is useful behavioral context about response content and limits. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence front-loads the verb, resource, and key behavioral detail (runs, newest first, cap). The second sentence tells the agent what to inspect, earning its place.

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

Completeness4/5

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

With no output schema, the description compensates by listing key inspectable fields (status, outcome, owner, custom_attrs) and the runs behavior. It specifies the run cap and ordering, which are essential return semantics. Minor omissions like not-found handling or run pagination are acceptable for a simple getter.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 has one parameter 'id' with a complete description including an example ('case_abc123'), so schema coverage is 100%. The description does not add additional parameter-specific guidance beyond restating 'by id', which is already evident.

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 'Get' and resource 'a case by id', and distinguishes itself from siblings like invariance_case_list and invariance_run_get by noting it also returns the case's linked runs. The 'newest first, capped at 100' detail further scopes the operation.

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

Usage Guidelines4/5

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

The phrase 'Use to inspect status, outcome, owner, custom_attrs, and the runs' gives clear context for when to use this tool. It doesn't explicitly name alternatives or exclusions, so it stops short of the highest tier, but the intended use case is well conveyed.

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

invariance_case_listA
Read-only

List cases visible to the calling agent (paginated). Filter by tenant_id, end_user_id, workflow_key, status ("open" | "closed"), outcome, or tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoComma-separated tags; matches cases containing ALL of them, e.g. "urgent,vip".
limitNo
cursorNoopaque pagination token; pass through unchanged
statusNo
outcomeNo
tenant_idNo
end_user_idNo
workflow_keyNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already provide readOnlyHint; the description adds useful context: 'paginated' and visibility scope restricted to the calling agent. It does not contradict the annotations and makes no misleading claims about 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?

Two tight sentences: the first front-loads the main action and pagination, the second lists available filters. No redundant wording 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?

For a read-only, paginated list tool, the description plus schema adequately covers filter semantics and cursor handling. The lack of an output schema leaves return shape unstated, but this is a minor gap given the simple list operation and existing annotations.

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

Parameters3/5

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

Schema coverage is only 25%, so the description compensates by enumerating six filter parameters and the status enum. However, it does not explain limit/cursor beyond what the schema already says and gives no additional format detail for outcome or tags.

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

Purpose5/5

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

States a specific verb ('List'), a clear resource ('cases'), and a scope ('visible to the calling agent'), plus pagination. This clearly differentiates it from siblings like invariance_case_get (single case) and invariance_case_create (write operation).

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

Usage Guidelines2/5

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

The description says what the tool does but gives no guidance on when to choose it over related tools such as invariance_case_get or invariance_finding_list. No alternatives or exclusions are mentioned, so an agent must infer usage context from the name alone.

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

invariance_case_updateA

Update a case: change owner, merge custom_attrs (shallow), or transition status. Use invariance_case_close for the common "set outcome + close" path.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
tagsNoReplaces the tag set. Normalized server-side. Pass [] to clear.
ownerNo
statusNo
outcomeNoRequired when transitioning to "closed" if you want $/outcome rollups.
closed_atNo
custom_attrsNoJSON object string; shallow-merged with existing attrs.
outcome_value_usdNoRealized $ value (positive) or loss (negative).

TDQS

A3.9/5.0
Behavior3/5

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

Annotations indicate a write operation (readOnlyHint false) and openWorldHint true. The description adds a shallow-merge detail for custom_attrs and mentions status transitions, but doesn't disclose side effects like required presence of outcome for status close or behavior of other fields. It doesn't contradict annotations, but adds limited behavioral context beyond the schema.

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

Conciseness5/5

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

The description is two concise sentences with no fluff. It front-loads the primary actions and ends with an alternative routing, making it easy for an agent to digest quickly.

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

Completeness2/5

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

This is a mutation tool with 8 parameters, 50% schema coverage, openWorldHint true, and no output schema. The description does not mention required conditions (e.g., outcome needed for status='closed'), return format, or other side effects. Given the complexity and the open-world nature, more context is needed for safe invocation.

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

Parameters2/5

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

With schema description coverage at 50%, half of the parameters (id, owner, status, closed_at) lack schema descriptions. The description only names owner, custom_attrs, and status, and the custom_attrs shallow-merge info is already present in the schema. It fails to compensate for the undocumented parameters or add extra semantics for them.

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

Purpose5/5

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

The description clearly states the verb 'update' with the resource 'case' and enumerates the main types of updates: owner, custom_attrs, and status. It also distinguishes this tool from the sibling invariance_case_close, 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?

It explicitly directs the agent to use invariance_case_close for the common 'set outcome + close' path, providing a clear alternative for a specific scenario. The listing of update types also gives implicit guidance on when this tool is appropriate.

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

invariance_create_runD

Alias of invariance_run_start

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo

TDQS

D1.1/5.0
Behavior1/5

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

With no annotations on the tool, the description carries the full burden of behavioral disclosure. It provides none – no mention of side effects, required permissions, rate limits, or return behavior. It is a bare alias with zero behavioral context.

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

Conciseness2/5

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

The description is only a single sentence, which is concise, but it is underspecified rather than appropriately minimal. It lacks any structure or essential detail, making it a placeholder rather than a useful definition.

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

Completeness1/5

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

Given the tool's complexity (at least one parameter, no output schema, no annotations), the description is entirely insufficient. An agent would need to look up invariance_run_start to understand behavior, which is not provided. This is a critical gap for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% (there is no description for the 'name' parameter) and the description adds nothing about parameters. The agent cannot infer what 'name' refers to – run name, agent name, or something else. The description offers no compensation for the schema gap.

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

Purpose1/5

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

The description is a tautology – 'Alias of invariance_run_start' restates the tool's identity without explaining what it does. It does not mention starting or creating a run, nor does it distinguish itself from the canonical invariance_run_start or any sibling. An agent gains no functional understanding.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus invariance_run_start or other run-related tools. No exclusions, no context, no indication of prerequisites. The alias reference is an implicit pointer, but not an explicit usage guideline.

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

invariance_divergence_getB
Read-only

Get a divergence by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already establish that this is a read-only operation (readOnlyHint=true) and open-world (openWorldHint=true). The description says 'get,' which is consistent with those annotations and adds no contradictory or surprising behavior. However, it also provides no additional behavioral context beyond what the annotations already convey.

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, front-loaded sentence with zero wasted words. It is appropriately concise for a simple single-resource getter and contains no filler or redundant phrasing.

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

Completeness3/5

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

For a tool with one simple parameter and read-only annotations, the description is minimally viable: the agent knows to supply an ID. However, 'divergence' is domain-specific jargon, and there is no mention of where IDs come from or what the response contains, so an agent unfamiliar with the domain would still lack meaningful context.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden of explaining the 'id' parameter. 'By ID' conveys that the id is a divergence identifier, but that is only slightly more than the parameter name itself. It does not explain the ID format, how to obtain valid IDs, or the meaning of the returned divergence.

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 ('Get'), a specific resource ('divergence'), and the retrieval scope ('by ID'). This clearly differentiates it from sibling tools like invariance_divergence_list and invariance_divergence_update, so an agent can identify what this tool does without needing to open its schema.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives. It does not mention invariance_divergence_list for enumerating divergences or invariance_divergence_update for modifying one, nor does it describe any exclusions or preconditions. The agent must infer usage from the tool name alone.

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

invariance_divergence_listB
Read-only

List divergences (expected-vs-observed gaps) visible to the caller. Filter by run, kind, severity, status.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged
run_idNo
statusNo
severityNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and volatility profile is covered. The description adds a useful scoping note ('visible to the caller'), but does not disclose pagination behavior, result ordering, or any other behavioral specifics. Given annotations, the bar is lower, but the description adds only marginal value beyond them.

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

Conciseness5/5

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

The description is extremely concise and front-loaded: it states the action and resource, defines the term, and lists the filters in a single sentence. No words are wasted, and the most critical information appears first.

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

Completeness3/5

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

For a list tool with six optional parameters and no output schema, the description is minimal but sufficient to understand the basic operation. It lacks guidance on pagination (cursor/limit), which is indirectly described in the schema, and does not mention any default behavior. Given the complexity and lack of output schema, it could do more, but it is not dangerously incomplete.

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

Parameters3/5

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

Schema coverage is only 17% (only cursor has a description). The description compensates by naming the filter dimensions (run, kind, severity, status), which clarifies those parameters' roles. However, it does not explain limit or cursor behavior, nor provide meaning for enum values. It partially covers the gap but not fully, so a 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('List') and the resource ('divergences'), and defines divergences as 'expected-vs-observed gaps' to disambiguate the concept. It also lists the filtering dimensions (run, kind, severity, status). However, it does not explicitly distinguish itself from sibling tools like invariance_finding_list or invariance_monitor_list, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus other list-type tools (e.g., invariance_finding_list, invariance_monitor_list). It does not mention exclusions, prerequisites, or contexts where an alternative would be more appropriate. An agent has to infer usage from the resource name alone.

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

invariance_divergence_updateB

Transition a divergence status: open | accepted | dismissed | converted_to_monitor.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
statusYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate a write operation (readOnlyHint=false) and non-destructive behavior (destructiveHint=false), so the description only needs to add nuance. The word 'transition' correctly implies a state-machine operation, but the description doesn't disclose whether transitions are validated, idempotent, or have 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?

The description is a single, front-loaded sentence with no filler. Every word contributes to the core action and the accepted status values, making it appropriately concise.

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

Completeness3/5

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

For a simple two-parameter tool with an enum, the description is nearly sufficient, but it omits key operational details such as allowed transition paths and the meaning of the id parameter. Without an output schema, there is also no mention of what the tool returns, leaving some context incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It lists the possible status values but provides no meaning for the 'id' parameter, no explanation of the statuses, and no guidance on which transitions are permitted. This is minimal compensation for a fully undocumented schema.

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

Purpose4/5

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

The description clearly identifies the action as a status transition on a divergence, and lists the target statuses. It distinguishes itself from sibling read tools like invariance_divergence_get/list through the explicit 'transition' verb, though it doesn't define what a divergence is or which transitions are valid.

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

Usage Guidelines3/5

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

Usage context is implied rather than explicit: the verb 'transition' and the sibling list/get tools suggest it is for changing a divergence's status versus reading it. There is no direct statement of when to use this tool versus alternatives or any exclusions.

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

invariance_dna_accept_edge_candidateA

Accept a proposed DNA edge candidate, making it eligible for promotion into a durable semantic link.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEdge candidate ID.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide the core behavioral facts (readOnlyHint=false, destructiveHint=false, openWorldHint=true). The description adds that the candidate becomes 'eligible for promotion,' which is a meaningful state change. However, it does not clarify reversibility, whether accepted candidates can be later rejected, or what happens to related edge data.

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 sentence with no filler. It front-loads the verb and resource, then states the outcome immediately. Every word contributes meaning.

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

Completeness4/5

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

For a single-required-parameter tool with no output schema and full annotation context, the description covers the core action and result. It lacks explicit workflow context about when accepting differs from promoting, but the one-parameter complexity and the clear outcome make it mostly complete for basic usage.

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

Parameters3/5

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

Schema description coverage is 100%, so the 'id' parameter is already fully documented as an edge candidate ID. The tool description adds no extra semantic detail about the parameter, so schema carries the entire parameter meaning, which is adequate for a one-parameter tool.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Accept a proposed DNA edge candidate' and clearly states the outcome: 'making it eligible for promotion into a durable semantic link.' This distinguishes it from the sibling promote tool by describing a pre-promotion state rather than the final promotion itself.

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

Usage Guidelines2/5

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

No when-to-use guidance is given. The description does not mention when to use accept versus reject_edge_candidate or promote_edge_candidate, nor does it explain the working relationship to those siblings. An agent cannot tell whether acceptance is a required predecessor to promotion or an alternative step.

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

invariance_dna_list_edge_candidatesA
Read-only

List Company DNA edge candidates — discovered relationships between objects awaiting review. Filter by status (proposed/accepted/rejected/expired/promoted), object_id, or relation_kind. Output: {data: DnaEdgeCandidate[], next_cursor}.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoOpaque pagination token from a previous next_cursor.
statusNo
object_idNoFilter to candidates touching this object.
project_idNo
relation_kindNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful behavioral details beyond annotations: output shape ({data: DnaEdgeCandidate[], next_cursor}), the 'awaiting review' semantic, and the available status filter values. No contradiction with annotations.

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

Conciseness5/5

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

Two efficient sentences with no filler. The verb and resource are front-loaded, the key filters are summarized, and the output shape is compressed into a single line. Every sentence earns its place.

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

Completeness4/5

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

For a read-only list tool with no required parameters, the description is nearly complete: it conveys purpose, optional filters, and return shape, and pagination is signaled via next_cursor. The main gaps are the undocumented project_id filter and lack of detail on relation_kind values, but these are optional filtering concerns rather than blockers to invoking the tool.

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

Parameters3/5

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

Schema description coverage is low (33%), so the description must compensate. It does clarify that status, object_id, and relation_kind are filters and enumerates the status values, which adds value. However, project_id is left undocumented in both the schema and description, and relation_kind's meaning is not expanded, so the compensation is partial.

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 ('List'), a specific resource ('Company DNA edge candidates'), and the defining context ('discovered relationships between objects awaiting review'). It also lists the available filters, making it easy to distinguish from siblings like invariance_dna_list_edges and invariance_dna_list_objects.

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 'awaiting review' framing clearly situates this tool in the candidate-review workflow, alongside siblings like invariance_dna_accept_edge_candidate and invariance_dna_reject_edge_candidate. It does not explicitly say when to prefer invariance_dna_list_edges over this tool, but the context is clear enough for an agent to choose appropriately.

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

invariance_dna_list_edgesA
Read-only

List durable Company DNA edges — relationships between objects, e.g. the operational graph derived from a run (refund -[REQUIRED]-> policy). Filter by run_id, kind, or entity_id. Output: {data: DnaEdge[], next_cursor}.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by edge kind, e.g. REQUIRED, MISSING, TOUCHED.
limitNo
cursorNoOpaque pagination token from a previous next_cursor.
run_idNoFilter to edges derived from this run.
entity_idNoFilter to edges touching this entity/object.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety. The description adds useful behavioral context beyond annotations: the exact output shape ({data: DnaEdge[], next_cursor}) and pagination token semantics, which are not inferable from the schema or annotations. It does not contradict annotations and provides non-obvious details about the return format.

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, front-loads the core purpose, includes a clarifying example, and ends with a compact output format. Every clause earns its place; there is no redundant or padding text. This is precisely engineered for an agent scanning multiple tool definitions.

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

Completeness4/5

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

For a read-only list tool with no output schema, the description covers the essential behavior: what it lists, example, filters, and response shape. It does not state default ordering, behavior when no filters are provided, or the relationship to the similar invariance_run_operational_graph tool. Those are minor gaps given the schema and annotations, but a note about empty-filter behavior would make it fully complete.

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

Parameters3/5

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

Schema description coverage is 80% because four of five parameters (kind, cursor, run_id, entity_id) have descriptions; limit lacks one. The description repeats that run_id, kind, and entity_id are filters, but adds no new semantic detail beyond the schema. Since the schema already documents these parameters well, 3 is the appropriate 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 ('List durable Company DNA edges') and gives a concrete example ('refund -[REQUIRED]-> policy'). It distinguishes itself from sibling tools like invariance_dna_list_edge_candidates by using 'durable' and from object-listing tools by focusing on relationships/edges. This leaves no ambiguity about what the tool returns.

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

Usage Guidelines3/5

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

The description implies use for listing confirmed/durable edges and mentions filter dimensions (run_id, kind, entity_id). However, it does not explicitly state when to use this versus alternatives like invariance_run_operational_graph or invariance_dna_list_edge_candidates, nor does it mention any exclusions. Usage context is present but implicit, not actionable for an agent deciding among many sibling tools.

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

invariance_dna_list_object_mentionsA
Read-only

List Company DNA object mentions — extracted references (in events or chunks) that may resolve to a DNA object. Filter by event_id, chunk_id, object_id, or mention_type. Output: {data: DnaObjectMention[], next_cursor}.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoOpaque pagination token from a previous next_cursor.
chunk_idNoFilter to mentions from this context chunk.
event_idNoFilter to mentions from this DNA event.
object_idNoFilter to mentions resolved to this object.
project_idNo
mention_typeNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark this as read-only and open-world, so the description does not need to restate safety. It adds useful behavior beyond the schema by explaining that mentions are extracted from events/chunks, may only resolve to objects, and that the response is a paginated {data, next_cursor} structure.

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

Conciseness5/5

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

The description is compact and front-loaded: one sentence defines the tool, the next covers filtering and output. There is no filler, and the pagination contract is included without extra ceremony.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 list operation with no output schema, the description adequately supplies the return shape, pagination mechanism, and main filter dimensions. It does not document project_id or mention_type values, but since all parameters are optional and read-only behavior is covered by annotations, these are moderate rather than critical omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 57%, with event_id, chunk_id, object_id, and cursor already described. The description mostly restates those filter names and adds only a light semantic nuance about object resolution. It does not explain limit behavior, project_id scoping, or acceptable mention_type values, leaving meaningful gaps.

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: 'List Company DNA object mentions.' It defines those mentions as extracted references that may resolve to a DNA object, which clearly separates this tool from sibling tools like invariance_dna_list_objects.

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

Usage Guidelines3/5

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

The description gives useful invocation context by listing the available filter dimensions and the paginated output shape. However, it never explicitly states when to prefer this tool over invariance_dna_list_objects or the DNA edge-candidate tools, so the routing guidance is implied rather than stated.

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

invariance_dna_list_objectsB
Read-only

List Company DNA objects — the canonical operational entities in a project's DNA graph (e.g. tickets, services, policies). Filter by kind or a free-text query q. Output: {data: DnaObject[], next_cursor}.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text search over title, external_id, kind, source.
kindNoFilter by object kind, e.g. service, support_ticket, policy.
limitNo
cursorNoOpaque pagination token from a previous next_cursor.
project_idNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already carry readOnlyHint=true and openWorldHint=true, so the bar for the description is lower. The output format '{data: DnaObject[], next_cursor}' adds useful behavioral context about the return shape and pagination. It does not add detail on auth, rate limits, or edge cases, but it's not required here given the annotations.

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

Conciseness5/5

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

The description is three sentences: purpose, filtering, output. Everything a caller needs is present, and no word is wasted. It front-loads the action ('List') and the core meaning ('Company DNA objects'). Ideal conciseness.

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

Completeness3/5

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

For a read-only list tool, the output shape and basic filter modes are covered. However, without an output schema, the description should probably address the meaning of the DnaObject type, which it only hints at with the examples, and the project_id field's role is left completely unexplained. The tool is otherwise minimally complex, so a 3 feels fair.

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

Parameters2/5

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

Schema description coverage is 60% — the descriptions for q, kind, and cursor already exist, while limit is only schema-bounded and project_id has no field description. The tool description only restates 'Filter by kind or a free-text query q'; it does not explain kinky semantics, project_id's role, or how limit/cursor interplay with the output. It adds little value beyond the schema for the mostly already-described parameters.

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

Purpose4/5

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

The description names a specific verb and resource — 'List' + 'Company DNA objects' — and clarifies what those are: 'the canonical operational entities in a project's DNA graph (e.g. tickets, services, policies)'. This clearly states the function and implicitly separates it from sibling tools like invariance_dna_list_edges or invariance_dna_list_object_mentions, though it never names them. It's clear but not explicitly differentiated from siblings.

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

Usage Guidelines2/5

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

The description gives no guidance about when to choose this tool over alternatives like invariance_dna_list_object_mentions, invariance_dna_list_edges, or invariance_node_list. There is no mention of when not to use it or what the other tools are for. The only implicit signal is the focus on 'canonical' objects, which is not enough to route the agent correctly.

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

invariance_dna_promote_edge_candidateA

Promote an accepted DNA edge candidate into a durable semantic link. The candidate must be accepted, carry a semantic_similarity signal, and have at least two evidence chunks (otherwise the API returns 422). Idempotent: re-promoting returns the existing link with already_promoted=true. Set dry_run=true to preview the would-be link without writing.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEdge candidate ID.
dry_runNoPreview only — run the gates and return the would-be link without persisting.

TDQS

A4.4/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the minimal annotations: idempotency with already_promoted=true, a 422 failure mode, and dry_run semantics that preview without writing. This clearly communicates that the operation writes durable state while being safe to retry.

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 convey the core action, prerequisites, failure condition, idempotency, and dry_run option with no filler. The main verb and object are front-loaded, and each sentence earns its place.

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

Completeness4/5

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

For a two-parameter mutation tool with no output schema, the description covers prerequisites, failure modes, idempotent behavior, and dry_run. It tells the agent what to expect on re-promotion and preview, though the normal success response format is not fully described.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both id and dry_run. The description reinforces dry_run behavior ('preview the would-be link without writing') but does not add significant new parameter-level meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states a specific action ('Promote an accepted DNA edge candidate into a durable semantic link') with a specific resource. It distinguishes itself from related DNA candidate tools by focusing on the promote step rather than accept/reject/list.

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 explicit preconditions for when the tool can be used: candidate must be accepted, carry a semantic_similarity signal, and have at least two evidence chunks. It implies a workflow order (accept before promote) and mentions dry_run for preview, though it does not explicitly name alternative tools for rejection or listing.

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

invariance_dna_reject_edge_candidateA

Reject a DNA edge candidate so it is never promoted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEdge candidate ID.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, so the description's claim that rejection means 'never promoted' adds meaningful behavioral context. However, it doesn't disclose whether rejection is reversible, whether it affects related candidates, or what the response looks like. The description adds some value beyond annotations but not rich detail.

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

Conciseness5/5

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

One sentence, zero waste, and the key outcome ('never promoted') is front-loaded. Every word earns its place.

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

Completeness3/5

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

For a single-parameter tool with no output schema, the description is adequate: it states the action and the consequence. However, it doesn't clarify whether rejection is permanent or reversible, which could matter for an agent deciding between reject and other candidate-management tools. Given the tool's simplicity, this is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter 'id' is described as 'Edge candidate ID.' The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb ('Reject') and resource ('DNA edge candidate') with a clear outcome ('so it is never promoted'). It distinguishes from siblings like accept_edge_candidate and promote_edge_candidate, though it doesn't explicitly name them.

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

Usage Guidelines3/5

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

The description implies when to use it: when an edge candidate should be rejected and never promoted. However, it doesn't explicitly state when not to use it or mention alternatives like accept_edge_candidate or promote_edge_candidate, leaving some inference to the agent.

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

invariance_doctorA
Read-only

Run a health check on this MCP server: verifies API key auth, API reachability, and reports server name/version. Mirrors inv doctor --json from the CLI. Returns {checks: [{name, status, message}], summary: {pass, fail, warn}}.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, and the description adds specific behavioral context: it checks API key auth, API reachability, and reports name/version, and it mirrors the CLI's JSON output. This gives the agent a clear model of what the call inspects without overpromising 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?

Two tight sentences front-load the core purpose, then specify the CLI mirror and return shape. Every clause adds information, with no repetition or filler.

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

Completeness5/5

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

For a simple, zero-parameter, read-only diagnostic tool, the description is complete: it states the checks performed, notes the CLI equivalence, and documents the return shape. No output schema exists, so including the return structure is especially valuable and sufficient.

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

Parameters4/5

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

With zero parameters and an empty input schema, there is no parameter information to document. The baseline for a no-parameter tool is 4, and the description sufficiently explains what the invocation does.

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

Purpose5/5

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

The description uses a specific verb and resource ('Run a health check on this MCP server') and enumerates exactly what it verifies: API key auth, API reachability, and server name/version. This clearly distinguishes it from the large set of sibling tools, none of which offer a server-wide diagnostic.

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

Usage Guidelines3/5

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

The intended use case is implied by the description: call this when you need to verify server auth, connectivity, or identity. However, it does not explicitly state when to use it versus alternatives, provide exclusions, or name a fallback tool. The guidance is adequate but left to inference.

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

invariance_eval_case_createC

Add a case (input + expected) to an eval suite.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesCreateEvalCaseRequest as a JSON object string. Required: input_bundle (object). Optional: expected (any), metadata (object). Example: {"input_bundle":{"prompt":"hello"},"expected":"hi"}
suite_idYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already disclose readOnlyHint=false and destructiveHint=false, so the description aligns with those but does not add any further behavioral context beyond stating the add operation. Given the openWorldHint=true, the description would benefit from noting idempotency, preconditions, or potential side effects, but 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.

Conciseness4/5

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

The description is a concise single sentence with no redundant words. It front-loads the verb and core resource, making it easy to process. It earns a 4 because while it is efficient, it could include a bit more context (such as clarifying the required suite_id) without much cost, but as-is it is well-structured.

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

Completeness3/5

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

For a simple creation tool with few parameters and no output schema, the description is moderately complete. It covers the main action but omits important context like whether the eval suite must exist, how to obtain a suite_id, or how this tool compares to case-creation-from-run. These gaps prevent full 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?

The description partially explains the body parameter as 'a case (input + expected)', which adds meaning to the JSON object schema. It does not add specific meaning to suite_id, though 'to an eval suite' implies the suite_id parameter is the target. With schema coverage at 50%, this adds some semantic value but does not fully compensate for the undocumented suite_id.

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

Purpose4/5

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

The description clearly states the verb and resource: 'Add a case (input + expected) to an eval suite.' It is specific about the action and target resource, distinguishing this from generic case tools to some degree. However, it does not explicitly differentiate from related siblings like invariance_eval_case_create_from_run or invariance_case_create, so it misses the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention cases where the user should use invariance_eval_case_create_from_run, invariance_case_create, or other case-related tools. The purpose is implicit but there are no use-mode exclusions or alternative routing.

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

invariance_eval_case_create_from_runA

Snapshot an existing production run as a new eval case in a suite (captures the run's input + output as expected).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesCreateEvalCaseFromRunRequest as a JSON object string. Required: source_run_id (string). Optional: name (string), source_finding_id / source_signal_id (string — provenance; their evidence is copied into the case metadata), expected (object), assertions (array), mutations (array), metadata (object). Example: {"source_run_id":"run_abc123","source_signal_id":"sig_1"}
suite_idYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already communicate that this is a non-read-only, non-destructive operation, and the description adds that it copies the run's input/output as expected. It does not explain side effects such as how provenance is stored or whether the source run is left untouched, but the annotation coverage lowers the burden.

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 one well-structured, front-loaded sentence with no fluff. It states the action, source, destination, and captured content efficiently without repeating schema details.

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

Completeness3/5

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

For a two-parameter creation tool with no output schema, this is minimally adequate, but it does not describe the return value or what the agent should expect after invocation. An agent would need to infer response behavior from convention rather than from this definition.

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

Parameters3/5

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

The schema documents `body` thoroughly, including required source_run_id, optional fields, and an example, but `suite_id` has no description. With 50% schema coverage, the tool description should compensate for that gap; it only partially does via the phrase 'in a suite'.

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 ('Snapshot ... as a new eval case') and identifies both the source resource (existing production run) and the target (eval case in a suite). It also states what is captured, 'input + output as expected', which clearly distinguishes it from generic case-creation tools like invariance_eval_case_create.

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 phrase 'Snapshot an existing production run' gives clear context for when this tool is appropriate, and 'in a suite' clarifies the destination. It does not explicitly name alternatives or exclusion conditions, but the usage scenario is direct enough that an agent can choose it over generic eval case creation.

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

invariance_eval_case_listB
Read-only

List cases for an eval suite (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged
suite_idYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already signal a safe read-only operation (readOnlyHint=true). The description adds only 'paginated', which is partly redundant with the cursor/limit parameters, but it does not misrepresent behavior and no contradiction exists.

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 front-loaded sentence with zero filler. Every word contributes to identifying the resource and operation.

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

Completeness4/5

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

For a simple paginated list operation, the description plus schema is nearly sufficient: suite_id is required, pagination is signaled, and cursor semantics are documented in the schema. A richer definition could clarify ordering or default limit, but these are minor for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is only 33% (cursor only), so the description carries some weight. It clarifies that suite_id selects an eval suite and that limit/cursor relate to pagination, but it gives no detail on defaults or response shape beyond the schema.

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

Purpose4/5

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

The description states a specific action and resource: 'List cases for an eval suite'. The phrase 'for an eval suite' adds scope that distinguishes it from generic case listing tools, though it does not name a sibling such as invariance_case_list.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool instead of alternatives like invariance_case_list or invariance_eval_case_get. The only usage cue is implied by the resource scope; there is no when-not-to-use or explicit alternative.

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

invariance_eval_dataset_append_exampleA

Append a single example row (input + expected output) to an existing dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDataset ID.
bodyYesCreateEvalDatasetExampleRequest as a JSON object string. Required: input (object — the example input bundle). Optional: expected (any), metadata (object), tags (string[]). Example: {"input":{"prompt":"I want my money back"},"expected":{"intent":"refund"}}

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already convey that this is a non-read-only but non-destructive operation. The description adds minimal behavioral context beyond the act of appending; it does not explain validation behavior, idempotency, ordering, or failure modes. It does not contradict the annotations, but adds little beyond them.

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

Conciseness5/5

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

A single sentence that front-loads the action, resource, and scope with no filler. Every word earns its place and the sentence is immediately digestible.

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

Completeness4/5

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

For a two-parameter append operation, the combination of the concise description and the detailed schema provides enough information to invoke the tool correctly. The lack of output schema is acceptable since return values are not essential for an append operation, though error conditions are not described.

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

Parameters3/5

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

Schema description coverage is 100%, and the body parameter is well-documented with required/optional fields and a concrete example. The description's mention of 'input + expected output' mirrors schema content, so it adds no significant meaning beyond what the schema already provides.

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

Purpose5/5

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

The description uses a specific verb ('Append') with a clear resource ('a single example row ... to an existing dataset') and specifies the row's composition ('input + expected output'). This clearly distinguishes it from dataset creation, listing, and seed-suite tools among the siblings.

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

Usage Guidelines3/5

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

The phrase 'existing dataset' and 'single example row' imply this is for incremental additions rather than dataset creation or bulk seeding, but no explicit when-to-use guidance or alternatives are named. The usage context is inferable but not directly stated.

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

invariance_eval_dataset_createB

Create a reusable eval dataset (a named collection of input/expected example rows used to drive experiments).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesCreateEvalDatasetRequest as a JSON object string. Required: name. Optional: description (string), metadata (object). Example: {"name":"refund-intents-v1","description":"customer refund queries with expected intent labels"}

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already communicate readOnlyHint=false, destructiveHint=false, and openWorldHint=true, and the description does not contradict them. The description adds that the dataset is reusable and holds example rows, but it does not disclose duplicate-name behavior, return value, persistence semantics, or permissions requirements. Given annotations cover safety basics, this is slightly above neutral but still leaves behavioral gaps.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action and definition. There is no redundancy or filler; every part adds clarity about what the dataset is and why it is used.

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

Completeness4/5

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

For a one-parameter tool with full schema coverage and no output schema, the description adequately explains the core concept and use case. It leaves minor details unstated (e.g., what object is returned, whether names must be unique), but an agent has enough to correctly invoke it.

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

Parameters3/5

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

The only parameter, body, is already documented with a schema description, required/optional fields, and an example, giving it 100% schema coverage. The tool-level description adds that the dataset drives experiments—useful context—but the parameter's exact JSON format is already fully handled by the schema.

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

Purpose4/5

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

The description names the specific action and resource ('Create a reusable eval dataset') and defines the resource as a 'named collection of input/expected example rows used to drive experiments'. This clearly identifies what tool does and distinguishes it from siblings like list/get/append example tools, though it does not explicitly name siblings.

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

Usage Guidelines2/5

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

The description provides no guidance on when to choose this tool over alternatives. It does not mention that this is the first step before appending examples, nor how it relates to eval_suite_create or eval_case_create. There are no prerequisites, exclusions, or alternative routing conditions stated beyond the implied 'use this to create a dataset'.

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

invariance_eval_dataset_examples_listB
Read-only

List example rows for a dataset (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not need to restate safety. It adds the pagination behavior, which is useful but already reflected in the tool name and cursor parameter. It does not explain what a response contains or whether results are bounded.

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

Conciseness5/5

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

The entire description is one compact, front-loaded sentence with no filler. It conveys the core action, the resource, and the pagination trait efficiently.

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

Completeness3/5

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

For a simple paginated list operation, the description is mostly adequate, but it omits the meaning of the required 'id' parameter and any indication of the response shape. With no output schema, some additional detail about the returned rows would improve completeness, though the core call is understandable.

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

Parameters2/5

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

Schema description coverage is only 33%, so the description must compensate for undocumented parameters. It does not explain that 'id' refers to the target dataset or clarify how 'limit' controls page size, leaving the agent to infer these meanings from the tool name alone.

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 ('List'), a clear resource ('example rows for a dataset'), and notes pagination. This distinguishes it from sibling tools like invariance_eval_dataset_list and invariance_eval_dataset_get, which operate on datasets themselves rather than their example rows.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives, such as invariance_eval_dataset_get or invariance_eval_dataset_append_example. The description does not mention any preconditions, output size limits, or cases where another tool would be more appropriate.

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

invariance_eval_dataset_getA
Read-only

Get a single eval dataset by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDataset ID, e.g. "eds_abc123".

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and openness profile. The description adds no further behavioral details such as error handling, return format, or side effects. Since the bar is lowered by annotations, a 3 is appropriate—it provides no additional context beyond what the annotations already convey.

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 one short sentence, front-loaded with the core action and object, with zero redundant words. It precisely captures the tool's purpose without elaboration, embodying conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 get-by-ID tool with one parameter, the description and schema cover the invocation. The absence of an output schema is mitigated by the clear implication that the tool returns the requested eval dataset, as indicated by the name and description. No additional conditions or prerequisites are missing. A 4 is justified—it's complete for its simplicity, though a mention of the return payload would make it a 5.

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

Parameters3/5

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

Schema description coverage is 100%, and the 'id' parameter is fully described in the schema with an example. The description's phrase 'by ID' adds no extra meaning beyond the schema. With high coverage, the baseline of 3 applies, and the description doesn't compensate for anything missing.

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 'Get a single eval dataset by ID' uses a specific verb (Get), identifies the resource (eval dataset), and specifies the key (by ID). This clearly differentiates it from sibling tools like invariance_eval_dataset_list (which likely retrieves multiple) and invariance_eval_dataset_append_example. An agent can immediately understand the tool's singular purpose.

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

Usage Guidelines4/5

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

The description clearly implies usage when the agent has a specific dataset ID, and the parameter schema requires it. It doesn't explicitly name alternatives or state when not to use it, but the 'by ID' phrasing provides strong contextual signal. No exclusions are mentioned, but given the simplicity of a get-by-id operation, the context is clear enough for an agent to select it appropriately.

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

invariance_eval_dataset_listA
Read-only

List eval datasets visible to the calling agent (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so no contradiction is present. The description adds useful behavioral context beyond those annotations: results are scoped to the calling agent's visibility and returned in paginated form, which helps the agent understand what to expect.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that communicates the core action, scope, and pagination behavior with no filler. Every word earns its place.

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

Completeness5/5

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

For a low-complexity read-only list operation with no output schema, the description covers purpose, visibility scope, and pagination. The schema handles the remaining parameter details, so nothing critical is missing for correct invocation.

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

Parameters3/5

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

Schema description coverage is 50%, with cursor fully documented but limit lacking a description. The description's mention of pagination helps the agent infer limit as a page size and cursor as a continuation token, but it does not fully compensate for the missing limit semantics.

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

Purpose5/5

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

The description states a specific verb and resource: 'List eval datasets visible to the calling agent (paginated).' It clearly distinguishes this from related sibling tools like invariance_eval_dataset_get, invariance_eval_suite_list, and invariance_eval_dataset_examples_list.

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 makes the tool's scope clear with 'visible to the calling agent' and 'paginated,' which contextualizes when to use it. It does not explicitly name alternatives or exclusion criteria, but the list-oriented phrasing and pagination signal are sufficient guidance for this simple read tool.

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

invariance_eval_dataset_seed_suiteA

One-call eval setup for agents: create a dataset, append rows, create a linked suite, create one case per row, and optionally start the eval run. This is the preferred MCP path for turning JSON examples into runnable evals.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesJSON object. Required: name (dataset name), rows (non-empty array of {name?, input, expected?, assertions?, mutations?, metadata?}). Optional: suite_name, description, target_type (default "custom"), metadata, run (boolean). Example: {"name":"refund-regression","run":true,"rows":[{"name":"happy","input":{"prompt":"approve refund"},"expected":{"assertions":[{"path":"outcome","op":"equals","value":"approved"}]}}]}

TDQS

A4.2/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (mutation), destructiveHint=false, and openWorldHint=true. The description adds that it can create a dataset, append rows, create a suite, create cases, and optionally start an eval run (side effects). It doesn't mention any destructive actions or irreversible changes, which aligns with the annotations. It could add more detail about whether the run is started synchronously or async, but the basics are covered.

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 very short (two sentences) and front-loaded with the key action ('One-call eval setup'). Every sentence adds value: the first states the scope and steps, the second positions it as the preferred MCP path. No wasted words.

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

Completeness4/5

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

For a tool with a single parameter that has 100% schema coverage and a rich example embedded in the schema, the description is sufficient for an agent to understand the tool's purpose and main flow. It could mention what happens if run=true (side effects), but the schema's example covers the format. The output is not defined, but the tool produces side effects rather than returns, which is acceptable. Overall, it's nearly complete.

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

Parameters3/5

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

The schema description coverage is 100% and the schema already describes the body parameter in detail, including required and optional fields with an example. The description adds minimal extra meaning beyond what the schema provides, just emphasizing the one-call orchestration. Thus, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific verb ('One-call eval setup') and resource ('dataset, suite, cases, run'), and distinguishes it as the preferred MCP path for turning JSON examples into runnable evals, which differentiates it from the many sibling tools like invariance_eval_dataset_create and invariance_eval_suite_create.

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

Usage Guidelines5/5

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

It explicitly frames itself as the 'preferred MCP path' for converting JSON examples into runnable evals, giving clear context. It also implies when to use it over manual multi-step tools (create dataset, append rows, etc.), though it doesn't name alternatives explicitly. Still, the guidance is strong and actionable for an agent.

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

invariance_eval_experiment_compareA
Read-only

Compare two scored eval runs case-by-case (CompareResponse: per-case ScoreDelta entries + aggregate deltas per scorer). Use to surface regressions vs. a baseline.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEval run ID (the new / candidate run).
baselineYesBaseline eval run ID to diff against.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description doesn't need to restate safety. It adds value by disclosing the output format (CompareResponse with per-case ScoreDelta entries and aggregate deltas), which goes beyond the annotations. No contradictions found.

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, front-loaded sentence that states the action, output, and purpose with zero waste. It is concise and immediately informative.

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

Completeness4/5

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

Given the read-only nature (annotations) and fully documented parameters (schema), the description provides sufficient context for an agent to call it correctly. It mentions the output structure, though it doesn't cover edge cases like missing runs or error handling, which are not critical for a read-only comparison tool.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are well-documented: 'id' is the new/candidate run, 'baseline' is the baseline to diff against. The description adds no further parameter detail beyond what the schema already provides, so it stays at the baseline score.

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 verb 'compare', the resource 'two scored eval runs', and specifies the output structure (CompareResponse with per-case ScoreDelta and aggregate deltas). It distinguishes this from sibling tools like invariance_run_metrics or invariance_eval_run_results by focusing on case-by-case comparison against a baseline.

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 an explicit use case: 'Use to surface regressions vs. a baseline.' This tells the agent when to invoke it. It doesn't explicitly contrast with alternatives, but the context of comparing runs vs. getting metrics is clear enough given the sibling names.

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

invariance_eval_experiment_runA

Execute an experiment against an existing eval run: applies a list of scorer specs to every case result and (optionally) records a baseline run for later compare. Populates eval_results.scores. Built-in scorer names: exact_match, contains, numeric_tolerance (config.tolerance: number), json_match, levenshtein.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEval run ID to score, e.g. "erun_abc123".
bodyYesExperimentRunRequest as a JSON object string. Required: scorer_specs (ScorerSpec[] — each {"name": ScorerName, "config"?: object}). Optional: baseline_run_id (string — pointer to a prior eval run for diffing). Example: {"scorer_specs":[{"name":"exact_match"},{"name":"numeric_tolerance","config":{"tolerance":0.1}}],"baseline_run_id":"erun_prev"}

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already signal readOnlyHint=false and openWorldHint=true, so the description adds context beyond that: it states it 'Populates eval_results.scores' and 'records a baseline run'—concrete behavioral effects. It does not contradict the annotations and provides useful information about side effects and the baseline storage.

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 succinct and front-loaded: a single main sentence stating the purpose, immediately followed by the key details—the effect on eval_results.scores and a list of built-in scorers. No filler, every word contributes to understanding what the tool does and how to invoke it.

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

Completeness4/5

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

For a tool with no output schema, the description covers the essential inputs (id, body with required scorer_specs and optional baseline_run_id), the format of the body, and the built-in scorers with config hints. It could mention potential prerequisites (e.g., does the run need to be finished?) but the openWorldHint annotation somewhat accounts for unexpected side effects. Overall, it is sufficiently complete for an agent to make a correct call.

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

Parameters4/5

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

Schema coverage is 100%, with both parameters documented. The description adds significant extra meaning: it lists the built-in scorer names, explains the config.tolerance format for numeric_tolerance, and gives a concrete example of the body structure including baseline_run_id. This goes beyond the minimal schema description and helps the agent construct a valid request.

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: 'Execute an experiment against an existing eval run' and clarifies exactly what it does—applies scorer specs to every case result and optionally records a baseline run. It names the built-in scorers and the effect on eval_results.scores, which clearly distinguishes it from siblings like invariance_eval_suite_run or invariance_eval_experiment_compare.

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

Usage Guidelines4/5

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

The description gives clear context: you use this when you have an existing eval run and want to score its results with a list of scorer specs, optionally recording a baseline. It does not explicitly mention alternatives or when not to use it, but the purpose is unambiguous enough for an agent to pick it appropriately among the many sibling tools.

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

invariance_eval_run_getB
Read-only

Get an eval run by ID (status, aggregate counts, timestamps, scorer specs).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEval run ID, e.g. "erun_abc123".

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=trueable true and openWorldHint=true, so the safety profile is covered. The description adds useful context by listing the returned data categories, but does not mention behavior like error cases, response shape beyond the field names, or any limits. The added value is real but modest.

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

Conciseness5/5

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

One short sentence with the core action front-loaded and a parenthetical summarizing the return contents. There is no fluff or repetition; every part contributes useful information.

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

Completeness4/5

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

For a single-parameter read-only getter, the description covers the key facts: what it returns and the input. There is no output schema, so listing the return contents is necessary and done. It could have added marginal details like pagination or error behavior, but the simplicity of the tool makes the description 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% and the single id parameter is already clearly documented with an example. The tool description does not add any additional meaning for the parameter beyond restating that it identifies the eval run. Baseline of 3 is appropriate when the schema handles parameter semantics.

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

Purpose4/5

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

The description uses a specific verb ('Get') and resource ('eval run') and names the key data fields returned (status, aggregate counts, timestamps, scorer specs). It clearly identifies the tool's function, but does not explicitly distinguish it from similar sibling getters like invariance_run_get or invariance_eval_run_results.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives such as invariance_run_get, invariance_run_inspect, or invariance_eval_run_results. The context signals show a dense cluster of run-related tools, so the description leaves the agent without any routing information.

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

invariance_eval_run_resultsA
Read-only

List per-case results for an eval run (paginated). Each result has output, expected, scores (per-scorer 0..1), and pass/fail.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already mark readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context about the result structure (scores per-scorer in 0..1, pass/fail) and pagination, but does not go beyond that. It does not contradict the annotations.

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

Conciseness5/5

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

Two sentences, front-loaded with the core purpose, then the result structure. Every word earns its place; no filler or redundancy.

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

Completeness4/5

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

For a simple read-only paginated listing tool with no output schema, the description covers the returned fields and pagination. It doesn't mention error handling or edge cases, but annotations (readOnly, openWorld) and the schema's cursor documentation fill most gaps. It is sufficiently complete for an agent to call it correctly.

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

Parameters3/5

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

Schema coverage is low (33%); only 'cursor' has a schema description. The description adds the pagination context and the meaning of 'id' (eval run) implicitly, and the 'limit' is left to the schema's max 200. It partially compensates for the gap but doesn't explicitly define each parameter's role beyond what the name implies.

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 ('List') and resource ('per-case results for an eval run'), and explicitly enumerates the fields returned (output, expected, scores 0..1, pass/fail). This distinguishes it from sibling tools like invariance_eval_run_get (which likely returns run-level metadata) and invariance_eval_case_list (which lists cases of a dataset).

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

Usage Guidelines3/5

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

The description makes clear this tool lists detailed per-case results for a given eval run, and mentions pagination. However, it does not explicitly mention when to prefer this over alternatives (e.g., run summary via invariance_eval_run_get) or when not to use it. The context is clear but without exclusion guidance.

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

invariance_eval_scorer_createA

Register a scorer (named scoring rule that maps an output+expected pair to a 0..1 score). Built-in scorer kinds: exact_match, contains, numeric_tolerance, json_match, levenshtein.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesCreateEvalScorerRequest as a JSON object string. Required: name, kind. Optional: config (object — kind-specific, e.g. {"tolerance":0.1} for numeric_tolerance). Example: {"name":"refund-exact","kind":"exact_match"}

TDQS

A4.2/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, meaning this is a creation operation with no destructive side effects, and the description aligns by stating 'Register'. It adds some context about the scoring rule's behavior (0..1 score) but does not disclose potential errors (e.g., duplicate names), validation requirements, or response format. Given the minimal annotations, the description could provide more behavioral detail.

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 sentence that front-loads the verb and resource, includes a parenthetical definition, and lists the built-in kinds without redundancy. It is concise and every part contributes to understanding the tool's purpose and usage.

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

Completeness4/5

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

Given the tool has only one parameter but that parameter is a complex JSON string, the description covers the essential aspects: the purpose, required fields, optional config, and built-in kinds. However, it does not specify what the response contains (e.g., the created scorer object or ID) since there is no output schema, nor does it address uniqueness constraints or error scenarios, which would improve completeness for a creation 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 describes the 'body' parameter as a JSON string with required fields name and kind, and optional config, achieving 100% coverage. The tool description adds value by enumerating the built-in kinds (exact_match, contains, etc.) and providing an example config, which enriches the schema's otherwise generic description and helps the agent construct valid requests.

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 registers a scorer and defines what a scorer is (a named scoring rule mapping output+expected to a 0..1 score). It also lists built-in scorer kinds, distinguishing it from sibling list tools like invariance_eval_scorer_list and invariance_eval_scorers_list_builtin, which only retrieve existing scorers.

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 context by explaining the tool's purpose and the available built-in scorer kinds, implying when it should be used (to create a new scorer). However, it does not explicitly mention alternatives or conditions for when not to use it, such as checking existing scorers first or using list tools, which would strengthen guidance.

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

invariance_eval_scorer_listA
Read-only

List scorers visible to the calling agent (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering side-effect safety and mutability. The description adds useful context beyond these: it specifies that the list is scoped to 'visible to the calling agent' and that results are 'paginated'. These details inform the agent about scoping and response structure, which the annotations do not. No contradictions with annotations.

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

Conciseness5/5

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

The description is a single, concise sentence with no filler. It front-loads the core action ('List scorers') and adds the key modifiers ('visible to the calling agent' and 'paginated') efficiently. Every word contributes meaning, and it is appropriately brief for a simple list operation.

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

Completeness3/5

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

The tool is simple (no output schema, no nested objects, only 2 optional params), and the description covers the essential action. However, it does not clarify the difference from the sibling 'invariance_eval_scorers_list_builtin', nor does it specify default pagination behavior or whether it includes built-in scorers. Given the existence of a very similar sibling, this ambiguity makes the description somewhat incomplete for correct tool selection.

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

Parameters3/5

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

Schema description coverage is 50%: only 'cursor' has a description, while 'limit' does not. The description mentions 'paginated', which indirectly relates to both parameters, but does not explain the semantics of 'limit' (e.g., page size) beyond the schema's numeric constraints. The cursor parameter is already well-defined in the schema, so the description adds little value for that. Given moderate coverage, the description provides minimal compensation.

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

Purpose4/5

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

The description states a clear action ('List') and resource ('scorers') with a scope ('visible to the calling agent') and a key behavior (paginated). It distinguishes from the sibling 'invariance_eval_scorers_list_builtin' by implying it lists non-builtin or agent-specific scorers, though not explicitly. This is clear enough for an agent to understand the core purpose, but could be more explicit about what 'scorers' include.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'invariance_eval_scorers_list_builtin' or other listing tools. The description only states what it does, not when to prefer it. There is no mention of conditions, timing, or relationship to sibling tools, leaving the agent to infer usage.

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

invariance_eval_scorers_list_builtinA
Read-only

List the built-in scorer kinds available on the platform (name + config schema). Use this to discover what you can pass in scorer_specs to invariance_eval_experiment_run.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and the description matches that by saying 'List'. The description adds useful behavioral context by specifying it returns name plus config schema, and it implies no mutation or side effects. With no output schema present, this return-shape information is valuable beyond the annotations.

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

Conciseness5/5

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

Two short sentences exactly as long as needed. The first states the action and output; the second adds the specific downstream purpose. There is no repetition of schema metadata, no filler, and the important info 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?

For a zero-parameter, read-only discovery tool with an openWorldHint, the description is complete enough for an agent to invoke it correctly: it says what it lists, what each list item contains, and how the result connects to another tool. No output schema exists, so the description's mention of the return shape is sufficient.

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 no parameters and the input schema is empty, so there is no parameter documentation burden. Describing parameters would be noise; the zero-parameter baseline of 4 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 identifies the verb ('List'), the resource ('built-in scorer kinds'), and the expected output ('name + config schema'). It also distinguishes itself as the built-in variant from siblings like invariance_eval_scorer_list and explicitly ties itself to invariance_eval_experiment_run.

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

Usage Guidelines4/5

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

The description explicitly says to use this tool to discover what can be passed in `scorer_specs` to invariance_eval_experiment_run, giving direct situational guidance. It does not explicitly contrast with sibling tools like invariance_eval_scorer_list, but the built-in designation plus the downstream-targeted instruction makes the use case fairly unambiguous.

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

invariance_eval_suite_createA

Create an eval suite (the legacy grouping for cases + runs). New work should generally prefer datasets; suites remain for back-compat and curated case sets.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesCreateEvalSuiteRequest as a JSON object string. Required: name. Optional: description (string), metadata (object).

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false (write operation) and destructiveHint=false, so the description need not repeat that. It adds context that suites are legacy, but doesn't disclose side effects (e.g., whether creation is idempotent, permissions required, or what the response looks like). Given the annotation coverage, this is adequate but not rich.

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

Conciseness5/5

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

Two sentences, no filler, with the core action and the key usage guidance front-loaded. Every word earns its place, making it highly scannable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 creation tool with a single parameter, the description is largely complete. It states what the tool does, when to use it, and points to the alternative. The only gap is the lack of information about the return value (the created suite object), but given the tool's simplicity and the schema's completeness, this is not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 description covers 100% of the single parameter 'body', explaining it's a JSON string with required 'name' and optional fields. The tool description adds no additional parameter semantics, so it remains at the baseline of 3 when schema coverage is high.

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 verb 'Create' and resource 'eval suite', and further clarifies it as 'the legacy grouping for cases + runs'. It distinguishes from the preferred 'datasets' alternative, so an agent can tell it apart from invariance_eval_dataset_create and other suite-related tools without opening schemas.

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

Usage Guidelines5/5

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

Explicitly instructs when to use it: 'New work should generally prefer datasets; suites remain for back-compat and curated case sets.' This gives clear guidance and points to the alternative (datasets), which is exactly what usage guidelines should do.

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

invariance_eval_suite_getC
Read-only

Get an eval suite by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.9/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the description adds no behavioral traits beyond those. It does not mention response shape, error cases, or any operational nuance that would help an agent invoke the tool correctly.

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

Conciseness5/5

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

The description is a single precise sentence with no filler or redundancy. It is efficiently front-loaded and conveys the core operation in minimal words.

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

Completeness3/5

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

For an extremely simple read-only getter with one required id parameter, the description is minimally viable. However, no output schema exists and the description does not clarify return values or failure behavior, so there are clear but minor completeness gaps.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only says 'by ID' which only restates that the id parameter references an eval suite. No format, source, or additional meaning is provided. The description does not compensate for the missing schema documentation.

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

Purpose4/5

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

The description states a clear action and resource: 'Get an eval suite by ID'. The phrase 'by ID' pinpoints the exact lookup semantics and separates it from siblings like list/create. It does not explicitly contrast with eval_suite_list, but the direct-ID lookup is unambiguous enough for a read-only getter.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool instead of list/eval datasets or other getters. An agent can infer basic usage from 'by ID', but exclusions, alternatives, and prerequisite context are absent.

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

invariance_eval_suite_listB
Read-only

List eval suites visible to the calling agent (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description does not need to state safety. It adds the 'paginated' behavior and the visibility scope, which are useful. However, it does not detail what happens with pagination (e.g., returns next_cursor) beyond what the schema already provides, and no other behavioral traits are disclosed. With annotations covering safety, this is adequate but not rich.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. It is front-loaded with the action and resource, and includes the key scoping detail. Perfectly concise for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 paginated list tool with read-only annotations, the description covers the essential context: what it lists and that it is paginated and permission-scoped. The cursor parameter is already explained in the schema, and the output shape is not specified but likely follows common list patterns. No critical missing information for an agent to call it correctly.

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

Parameters2/5

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

Schema description coverage is 50%; the cursor parameter has a schema description, but limit does not. The description does not mention either parameter or add any meaning beyond what the schema provides. Since the description offers no compensation for the undocumented limit parameter, and the coverage is only half, this is a gap.

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

Purpose4/5

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

The description states the verb 'List', the resource 'eval suites', and adds a scoping detail 'visible to the calling agent'. It clearly distinguishes from creation/get tools by being a list operation. However, it does not explicitly differentiate from other list tools like eval_dataset_list or eval_case_list, but the resource name is unambiguous.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool vs alternatives. It does not mention exclusion conditions or when to prefer a different listing tool. The only hint is the scope 'visible to the calling agent', which implies permissioned listing, but there is no explicit 'use this when...' guidance.

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

invariance_eval_suite_runA

Kick off an eval run: executes every case in the suite against a target (agent / recipe / inline override) and stores per-case results.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoRunEvalSuiteRequest as a JSON object string. All fields optional — empty {} uses suite defaults. Fields: target (object — {"kind":"agent","agent_id":"agt_..."} or {"kind":"recipe","recipe_id":"rcp_..."}), metadata (object), case_ids (string[] — restrict to a subset). Example: {"target":{"kind":"agent","agent_id":"agt_abc"}}
suite_idYes

TDQS

A3.5/5.0
Behavior3/5

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

The description adds behavioral context beyond the annotations: it executes every case and stores per-case results. It does not mention asynchronous behavior, what the caller receives after kickoff, or the full side-effect profile. The annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) are not contradicted.

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

Conciseness5/5

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

A single, front-loaded sentence with no wasted words. It states the action, the scope, the target kinds, and the outcome efficiently.

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

Completeness3/5

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

Given the absence of an output schema and the moderately complex body parameter, the description is adequate but incomplete. It does not state what the tool returns, whether the run is asynchronous, or how to retrieve the stored per-case results, although sibling tools like invariance_eval_run_get and invariance_eval_run_results hint at those next steps.

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

Parameters3/5

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

The description adds some semantic value by noting the target can be an agent, recipe, or inline override. However, the schema already documents the body parameter in detail, and the description does not clarify suite_id, metadata, case_ids, or the exact structure of an inline override.

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

Purpose4/5

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

The description uses a specific verb ('Kick off an eval run') and resource ('suite'), and explains what happens: it executes every case against a target and stores per-case results. It is clear, though it does not explicitly differentiate itself from sibling run-related tools such as invariance_run_start or invariance_eval_experiment_run.

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

Usage Guidelines3/5

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

The description implies when to use the tool: when you want to run a full eval suite against a target. However, it provides no explicit guidance about when not to use it, how it compares to alternative run/experiment tools, or what prerequisites exist beyond the suite_id.

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

invariance_finding_getA
Read-only

Get a finding by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not contradict them and the safety profile is covered. However, the description adds little behavioral context beyond the operation itself; it does not explain not-found behavior, response format, or any open-world implications.

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 clear sentence with no wasted words. The core operation and object are front-loaded, and additional behavioral details would likely not be needed for such a simple get-by-ID tool.

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

Completeness4/5

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

For a simple single-parameter read operation, this description is mostly complete: it names the resource)Skip? No, sorry. The context is adequately minimal. It could be slightly enhanced with a note about error behavior or suggestions for how to obtain the ID, but these are not essential for invoking 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?

With 0% schema description coverage, the description carries the entire burden of explaining the parameter. 'by ID' does indicate that the 'id' parameter identifies the finding to retrieve, but it provides no additional context such as ID format, source, or expected value. The schema already supplies the type and required status.

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 ('Get'), a resource ('finding'), and the selection mechanism ('by ID'). This clearly distinguishes the tool from sibling tools like invariance_finding_list and invariance_finding_update, which serve different purposes.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternives. It does not mention that this should be used when a finding ID is already known, nor does it indicate that browsing/searching should go through invariance_finding_list. There are no explicit exclusions or alternative routing.

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

invariance_finding_listB
Read-only

List findings (durable, structured issues raised by monitors or agents) visible to the caller, paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context by defining findings as durable, structured issues and noting caller-visible scoping and pagination, but it does not disclose ordering, default limits, or error behaviors.

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, front-loaded sentence with no wasted words. The parenthetical clarifies the resource type, and the key behaviors (list, visible to caller, paginated) are all included efficiently.

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

Completeness3/5

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

For a simple read-only list tool with two optional parameters, the description covers the essential operation and scoping. However, with no output schema, it does not mention the shape of returned findings or the next_cursor field that agents need to navigate pagination, leaving minor but real gaps.

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

Parameters3/5

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

Schema coverage is 50%, and the cursor parameter is already well described in the schema. The description adds the general concept of pagination but does not clarify limit defaults or how cursor interacts with pagination beyond what the schema already states. This is a baseline-adequate contribution.

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

Purpose4/5

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

The description clearly identifies a list operation on the 'findings' resource and defines what findings are. However, it does not explicitly differentiate itself from sibling tools like invariance_monitor_findings or invariance_finding_get, so an agent needs to infer the correct selection.

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

Usage Guidelines2/5

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

No explicit guidance is provided about when to use this tool versus alternatives such as invariance_monitor_findings or invariance_finding_get. The phrase 'visible to the caller' implies a scoping rule, but no exclusions, alternatives, or selection criteria are stated.

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

invariance_finding_updateA

Transition a finding to a new status: "open" (active), "review_requested" (escalated to a human/agent reviewer), "resolved" (fixed), or "dismissed" (intentionally ignored / false positive).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
statusYesNew status: open | review_requested | resolved | dismissed

TDQS

A4.2/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the mutation nature is already surfaced. The description adds useful semantics about what each status means but does not disclose additional behavioral traits such as validation behavior, side effects, or permission requirements. With annotations carrying the safety profile, this is adequate but not rich.

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

Conciseness5/5

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

A single sentence with zero wasted words. The core action is front-loaded, and the status definitions are integrated inline without repetition or bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 status-transition tool with only two parameters and annotations already covering the mutating nature, the description is nearly sufficient. It could be more complete by clarifying the meaning of the 'id' parameter and what the tool returns, but those are minor gaps given the simplicity of the operation.

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 only 50% (only the status parameter has a schema description), and the description adds meaning beyond the enum by explaining each status value. The 'id' parameter remains undocumented, but it is self-evident from the tool name and context. Overall the description compensates for the low schema coverage on the status 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 specific verb ('Transition') and resource ('a finding') and enumerates the exact statuses. The purpose is unambiguous and easily distinguished from sibling listing/getting tools like invariance_finding_list and invariance_finding_get.

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 defines when each status should be used ('active', 'escalated to a human/agent reviewer', 'fixed', 'intentionally ignored / false positive'), giving an agent direct guidance on choosing a status value. It does not explicitly name alternatives or exclusions, but for this simple update operation the context is reasonably clear.

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

invariance_get_runC

Alias of invariance_run_get

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only states that the tool is an alias of another tool. It provides no details about side effects, return shape, auth requirements, or failure modes; the getter behavior is only inferable from naming.

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

Conciseness3/5

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

The description is short and front-loaded, but it is under-specified rather than genuinely informative. The single sentence earns some weight as an alias pointer but leaves out the essential content an agent needs.

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

Completeness1/5

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

For a tool with no annotations, no output schema, and one required parameter, the description is not independently usable. It omits what the tool returns, what an id refers to, and how this alias differs from the canonical sibling; the agent must resolve another tool's definition to proceed.

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

Parameters2/5

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

The description adds no meaning to the single required 'id' parameter, which remains a bare string in the schema. The tool name makes it inferable that the id refers to a run, but the description itself does not explain it.

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

Purpose3/5

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

The description identifies the tool as an alias of invariance_run_get, which by name implies retrieving a run, but it never states the underlying operation or what a run is. It relies entirely on the agent recognizing the sibling tool's behavior.

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

Usage Guidelines2/5

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

No guidance is given about when to use this alias instead of invariance_run_get or other run-related tools. 'Alias of' implies identical behavior but does not explain when either should be preferred or 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.

invariance_guardrail_createB

Create a guardrail (from a recipe or finding). Required: title. Optional: recipe_id, finding_id, rule, mode, status.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
ruleNo
titleYes
statusNo
agent_idNo
recipe_idNo
finding_idNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a write operation that is not destructive. The description adds that a title is required and that creation can come from a recipe or finding, which is useful context. However, it doesn't disclose what happens on creation (e.g., whether it auto-activates, what the default status is, or whether it validates the rule). With annotations covering the safety profile, a 3 is appropriate.

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

Conciseness4/5

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

The description is a single sentence that front-loads the core purpose and then lists the required and optional fields. It's efficient and scannable. It loses a point because the field list is somewhat redundant with the schema, but it's still compact and useful.

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

Completeness3/5

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

For a create tool with 7 parameters, no output schema, and 0% schema description coverage, the description is adequate but thin. It tells the agent what is required and what options exist, but it doesn't explain the difference between mode and status, whether recipe_id and finding_id are mutually exclusive, or what the response looks like. Given the tool's complexity (7 params, 2 enums), more context would help an agent call it correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for the 7 parameters. It does list the parameter names (title, recipe_id, finding_id, rule, mode, status) and marks title as required, which adds some meaning. However, it doesn't explain the semantics of mode vs status, the relationship between recipe_id and finding_id, or what 'rule' should contain. The enum values in the schema are self-explanatory, but the description doesn't clarify when to use which optional field. This is a partial compensation for the 0% coverage.

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

Purpose4/5

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

The description states a clear verb and resource: 'Create a guardrail (from a recipe or finding).' It also lists the required and optional fields, which helps distinguish it from sibling tools like invariance_guardrail_update and invariance_guardrail_promote. However, it doesn't explicitly contrast with those siblings, so it loses a point for not naming alternatives.

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

Usage Guidelines3/5

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

The description implies usage by saying 'from a recipe or finding' and lists optional fields, which gives some context for when to use it. But it doesn't explicitly state when to use this tool versus invariance_guardrail_update or invariance_guardrail_promote, nor does it mention any prerequisites or exclusions. The guidance is implied rather than explicit.

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

invariance_guardrail_getA
Read-only

Get a guardrail by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read operation. The description adds the 'by ID' scoping but does not describe return behavior (e.g., what happens if not found) or any other behavioral nuances. It adds minimal context beyond annotations, so a 3 is appropriate.

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

Conciseness5/5

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

The description is a single, clear sentence with no fluff. The essential information—that this retrieves a guardrail by ID—is front-loaded, making it easy for an agent to quickly parse. Every word earns its place.

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

Completeness4/5

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

For a simple get-by-ID tool with no output schema, the description adequately covers the core action. It could add more context, such as confirming it returns the guardrail object or noting error behavior, but given the simplicity and the annotations covering safety, it is sufficiently complete for correct invocation.

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

Parameters3/5

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

The schema has one parameter 'id' of type string with 0% description coverage. The description mentions 'by ID', which clarifies that the 'id' parameter is the identifier to look up, adding semantic value that the schema alone does not provide. However, it does not explain the format or any constraints of the ID, so it only partially compensates for the low schema coverage.

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

Purpose4/5

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

The description uses a specific verb 'Get' and a specific resource 'guardrail', with a clear lookup key 'by ID'. It is clear what the tool does, but it does not distinguish itself from sibling tools like invariance_guardrail_list or invariance_guardrail_create. Still, for a simple get-by-ID operation, the purpose is unambiguous.

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

Usage Guidelines3/5

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

The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention that this is for retrieving a single guardrail by ID, while list or create tools exist for other scenarios. The usage is implied but not stated, so an agent must infer when to choose this over invariance_guardrail_list.

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

invariance_guardrail_listA
Read-only

List per-agent guardrails. Filter by status or recipe_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged
statusNo
recipe_idNo

TDQS

A3.6/5.0
Behavior3/5

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

The readOnlyHint and openWorldHint annotations already disclose the safety profile, so the description does not need to restate that. The description adds the per-agent scoping and filter capabilities, but it does not discuss pagination behavior, result ordering, or the meaning of openWorldHint. With annotations present this is adequate but not richly 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 a single, efficient sentence that says what the tool does and what filters are available. There is no filler or repetition; it is front-loaded with the core action and resource.

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

Completeness3/5

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

For a simple list tool, the description captures the core purpose and filters, and the schema provides some parameter structure. However, without an output schema or any note about pagination, limit behavior, or what fields are present in the response, an agent may lack full context for interpreting results. Still, the tool is simple enough that this is a moderate gap.

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

Parameters2/5

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

Schema description coverage is only 25% (only cursor is documented). The description mentions 'status' and 'recipe_id' as filters, adding some conceptual value, but it does not explain 'limit' or clarify pagination, and 'recipe_id' itself is left undescribed in both schema and description. This only partially compensates for the low schema coverage.

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

Purpose5/5

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

The description uses a specific verb and resource: 'List per-agent guardrails.' It clearly distinguishes this from the sibling guardrail_get, guardrail_create, guardrail_update, and guardrail_promote tools by focusing on listing with optional filters. The filter mention ('by status or recipe_id') further narrows the tool's purpose.

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

Usage Guidelines3/5

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

The description implies the tool should be used to enumerate guardrails, optionally filtered, but it does not explicitly state when to choose this over guardrail_get or other guardrail-related tools. There is no mention of exclusions or alternative tools, though the overall list semantics make the use case reasonably inferable.

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

invariance_guardrail_promoteA

Promote a guardrail to a new lifecycle status: suggested → accepted → shadow → active_monitor → rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
toYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate a non-read-only, non-destructive mutation. The description adds the lifecycle chain but nothing about side effects, validation of transitions, or reversibility. It doesn't contradict annotations, but adds only marginal context beyond them.

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

Conciseness5/5

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

A single, tight sentence that states the action, resource, and the exact state machine. No filler, front-loaded with the purpose.

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

Completeness3/5

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

Adequate for a simple two-parameter mutation, but it lacks any mention of the return value, potential errors, or how it relates to the update tool. The description doesn't clarify whether any transition is allowed or only forward ones, which is relevant to usage.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the parameters. It neither explains that 'id' identifies the guardrail nor that 'to' is the target lifecycle status beyond the enum values already present. The description gives no additional meaning or usage detail for the parameters.

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

Purpose5/5

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

States a specific verb 'Promote' and resource 'guardrail', and enumerates the exact lifecycle sequence. Clearly distinct from sibling guardrail tools (list, get, create, update).

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

Usage Guidelines3/5

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

The lifecycle arrow implies a forward promotion path, but the description doesn't explicitly state when to use this tool instead of guardrail_update, nor when it is inappropriate. No alternative tools are named, so guidance is implied rather than explicit.

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

invariance_guardrail_updateC

Patch a guardrail (mode, status, monitor_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
modeNo
statusNo
monitor_idNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, but the description adds little beyond restating that a patch occurs. It does not mention idempotency, permissions, whether omitted fields are preserved, or the effect on related monitors. No contradiction with annotations exists, but the description carries a low informational burden.

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

Conciseness3/5

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

The description is one short sentence with a parenthetical field list, achieving lexical conciseness. However, it under-specifies: the required 'id' is not mentioned, and the parenthetical list is only a partial map to the schema's parameters, reducing the value of that structure.

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

Completeness2/5

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

With four parameters, no output schema, and a large sibling set, the description is insufficient. It does not clarify what each field controls, what response to expect, or how this patch differs from promote and other guardrail operations. The agent would need to infer most usage from the schema and tool names.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the parameters. It lists mode, status, and monitor_id by name but provides no meaning for these fields in the context of a guardrail, and it omits the required 'id' parameter. The enums in the schema limit values but do not define semantics.

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

Purpose4/5

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

The description uses a specific verb 'Patch' and resource 'guardrail', and enumerates the mutable fields (mode, status, monitor_id), which clearly identifies the operation. However, it does not explicitly name sibling tools like invariance_guardrail_create or invariance_guardrail_promote to aid differentiation.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus the many guardrail-related siblings (create, get, list, promote). The description assumes the agent already knows that 'patch' is the right call, but offers no context, prerequisites, or exclusions.

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

invariance_kb_page_createA

Create a knowledge-base page

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMarkdown body of the page
kindNo
pathYesUnique slug/path for the page within the agent KB
titleYes
summaryNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (not read-only) and destructiveHint=false (not destructive), but the description doesn't clarify what happens on creation (e.g., idempotency, overwrite behavior, auth requirements). With no additional behavioral context, the description provides minimal value beyond the annotation's implicit mutation.

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

Conciseness5/5

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

One short, direct sentence with no fluff. All words are purposeful. Appropriate for a straightforward creation tool.

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

Completeness3/5

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

Tool is simple (no output schema, no nested objects, 5 flat params). The description is minimal but sufficient for a basic create operation. However, missing details like idempotency or required fields (kind vs optional) are not covered, so an agent might not know how to use the optional parameters.

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

Parameters3/5

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

Schema description coverage is 40%: 'body' and 'path' have descriptions, but 'title', 'kind', and 'summary' have none. The description 'knowledge-base page' does not explain these parameters. The description adds no extra meaning beyond the schema; baseline 3 is fair, but the low coverage means the schema already partially fails.

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

Purpose4/5

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

States verb 'Create' and resource 'knowledge-base page'. Distinguishes from siblings (invariance_kb_page_update, invariance_kb_page_get, invariance_kb_page_delete) by the create-focused action. However, lacks specifics like content type or unique aspects of creation.

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

Usage Guidelines3/5

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

Implied usage: to create a new page in the KB, as opposed to updating or getting existing pages. No explicit when-not-to-use or alternatives mentioned. Siblings like invariance_kb_page_update are clear alternatives, but the description doesn't state when to choose one over the other.

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

invariance_kb_page_deleteC
Destructive

Delete a knowledge-base page

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint: true, so the agent knows it's destructive. The description adds no extra behavioral context beyond that, such as permanence, cascading effects, or permissions. It is consistent with annotations, so no contradiction, but it adds little value beyond the structured metadata.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately concise, though it sacrifices critical detail. Structure is clean and efficient, earning a high score for conciseness.

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

Completeness2/5

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

For a destructive tool with one parameter and no output schema, the description is insufficient. It doesn't explain what the id refers to, whether deletion is permanent, or what linked resources might be affected. Even with annotations covering the destructive flag, the description leaves too much unspecified for safe invocation.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not mention the 'id' parameter at all. The single required parameter is left completely unexplained, so the agent must guess that 'id' refers to the page identifier. With zero coverage, the description fails to compensate for the schema gap.

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

Purpose4/5

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

The description 'Delete a knowledge-base page' uses a specific verb ('Delete') and a clear resource ('knowledge-base page'), making the purpose unambiguous. It implicitly distinguishes from siblings like get, create, and update through the action. It lacks scope or side-effect detail but is clear enough.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any exclusions, prerequisites, or preferred contexts, and doesn't reference sibling tools like update or get. The usage is implied but not articulated.

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

invariance_kb_page_getB
Read-only

Get a knowledge-base page by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior2/5

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

The annotations already provide readOnlyHint and openWorldHint, but the description adds no behavioral detail beyond what the schema and annotations imply. It does not mention not-found behavior, return shape, or what 'open world' means for this lookup. No contradiction exists, but there is no added transparency.

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 front-loaded sentence with no filler or redundancy. Every word contributes to the meaning.

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

Completeness3/5

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

For a single-parameter read tool, the description is mostly sufficient for invocation. However, because there is no output schema, the description does not characterize what the returned page object contains or how missing/invalid IDs are handled, leaving mild ambiguity.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. The phrase 'by ID' tells the agent that the sole required parameter is the page identifier, but it does not explain the ID's format, how to obtain it, or any constraints. This is partial, not full, compensation.

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

Purpose4/5

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

The description states a specific verb ('Get'), resource ('knowledge-base page'), and lookup key ('by ID'). It is clearly a read-by-identifier tool and is distinguishable from the list/create/update/delete KB sibling tools, though it does not explicitly name those alternatives.

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

Usage Guidelines3/5

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

Usage is implied: call this when you already have a page ID and need that page's content. However, there is no explicit guidance on when to prefer invariance_kb_pages_list instead, nor any stated exclusions or prerequisites.

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

invariance_kb_pages_listC
Read-only

List knowledge-base pages

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
limitNo
cursorNoOpaque cursor from a previous response
searchNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description adds no extra behavioral context. It doesn't mention pagination, default limits, ordering, or that the cursor continues iteration. Since annotations cover the read-only safety profile, the description fails to add any value beyond a bare verb, so this is below the baseline.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the core purpose. There is no fluff or redundancy. It is appropriately sized for a simple list operation, though its brevity borders on under-specification given the parameter complexity.

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

Completeness2/5

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

With no output schema, 4 parameters (one with an enum), and 25% schema coverage, the description is far from complete. It doesn't explain the meaning of 'kind' or 'search', what the return format is, pagination behavior, or how it differs from other list tools. An agent would need to consult other sources to use it correctly.

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

Parameters1/5

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

Schema description coverage is only 25% (only 'cursor' has a description), so the description must compensate by explaining the meaning of 'kind', 'limit', and 'search'. It does none of this. The agent gets no additional insight into parameter semantics beyond the enum values and type constraints, leaving it to guess how to filter or paginate.

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

Purpose4/5

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

The description states a clear verb and resource: 'List knowledge-base pages.' It is distinct from get/update/delete operations on KB pages and from other resource lists like invariance_node_list or invariance_list_runs, though it doesn't explicitly differentiate among the 'kind' variants. The purpose is unambiguous but could be more specific about scope.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like invariance_kb_page_get or other list tools. No mention of filtering, pagination, or how the search/kind parameters affect results. The description provides no exclusions or conditions that would help an agent select it correctly.

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

invariance_kb_page_updateC

Update fields on a knowledge-base page

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
bodyNo
kindNo
titleNo
summaryNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already convey that this is a non-read-only and non-destructive operation. The description adds no behavioral context beyond the word 'fields', such as whether omitted fields are left untouched, how kind is constrained, or what happens when an invalid id is supplied. It does not contradict the annotations.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler, making it efficient and easy to parse. It is concise but could have used the same space to list updatable fields or note the required id without becoming verbose.

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

Completeness2/5

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

For a mutation tool with five parameters, one required field, an enum, and no output schema, this description is incomplete. It omits parameter semantics, update behavior (merge/replace), and any relationship to sibling create/delete tools, leaving a substantial inference burden on the agent.

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

Parameters1/5

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

Schema description coverage is 0%, so the description is wholly responsible for explaining parameters, but it merely says 'fields' without naming or clarifying any of them. It does not mention that id is required, that kind is restricted to wiki/run/note, or that body/title/summary are optional.

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

Purpose4/5

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

The description uses a specific verb ('Update') and resource ('a knowledge-base page'), clearly distinguishing this from sibling tools like kb_page_create, kb_page_get, and kb_page_delete. It does not enumerate which fields can be updated, but the schema supplies those names, so the core purpose is unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to choose this tool over invariance_kb_page_create or invariance_kb_page_delete, nor any mention that an existing page id must already exist. There are no exclusions, prerequisites, or conditions indicating the appropriate context for use.

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

invariance_kb_session_append_messageC

Append a message to a KB ask session

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
roleNoDefaults to user when omitted
contentYesPlain text, OR a JSON-encoded array of content blocks ({type:"text"|"tool_use"|"tool_result", ...})

TDQS

C2.9/5.0
Behavior2/5

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

The description does not add behavioral context beyond the annotations. 'Append' is consistent with readOnlyHint=false, but there is no disclosure about ordering, validation, idempotency, or what happens when the session does not exist. Annotation_contradiction is false, but no extra behavioral insight is provided.

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

Conciseness4/5

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

A single sentence with no wasted words and the verb-resource pair front-loaded. It is concise and easy to parse, though it borders on under-specification rather than genuine completeness.

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

Completeness3/5

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

For a simple append operation with three parameters, the schema handles most parameter semantics, but the description omits any note about return value, error conditions, or how this relates to session lifecycle tools. It is minimally viable but leaves room for confusion around usage and expected behavior.

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

Parameters3/5

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

Schema coverage is 67%, with role and content already described in the schema. The tool description at least clarifies that id refers to a 'KB ask session', which adds a small amount of meaning to the bare string property. However, the description does not explain the content block format or role semantics beyond what the schema provides.

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

Purpose4/5

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

The description names a specific verb ('Append') and resource ('a KB ask session'), making it clear the tool writes a message into a knowledge-base ask session. It is not fully differentiated from siblings like invariance_kb_session_create or invariance_session_append_note, but the resource is specific enough to be understood.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as invariance_kb_session_create, invariance_kb_session_list_messages, or invariance_session_append_note. The only usage signal is implied by the name and description, with no explicit context or exclusions.

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

invariance_kb_session_createB

Create a multi-turn ask session for the agent KB

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
titleNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already mark this as non-read-only, non-destructive, and open-world; the description's 'Create' is consistent with that. It adds the behavioral context that the session is multi-turn and KB-scoped, but does not disclose side effects, return shape, or session-lifetime details.

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

Conciseness5/5

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

A single concise sentence with no filler; the core verb, resource, and scope are front-loaded. It is appropriately sized for a simple create operation.

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

Completeness3/5

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

For a two-optional-param create tool with no output schema, the description gives the essential purpose but leaves parameter semantics and return expectations undocumented. Sibling context plus annotations reduce risk, but an agent still has to guess what a successful response contains.

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

Parameters1/5

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

Schema description coverage is 0% and the description names neither 'model' nor 'title'. The agent gets no help understanding what model identifier or title value to supply, and the optionality of both parameters is not explained.

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

Purpose4/5

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

States a clear verb ('Create') and a specific resource ('multi-turn ask session for the agent KB'). It anchors the tool to the KB session family among many sibling tools, though it does not explicitly differentiate from invariance_session_create.

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

Usage Guidelines3/5

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

The description implies the use case: creating a multi-turn ask session against the agent KB. It gives no explicit when-to-use guidance or exclusions, and with siblings like invariance_session_create and invariance_ask nearby, the agent must infer the boundary.

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

invariance_kb_session_deleteB
Destructive

Delete a KB ask session

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior3/5

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

The description aligns with the annotations (destructiveHint=true, readOnlyHint=false) by explicitly stating 'Delete', so no contradiction. However, it adds no detail beyond the annotations—no mention of irreversibility, cascading effects on messages, or required permissions. Since annotations already convey destructiveness, the description adds minimal value.

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 concise sentence with no redundant words. It front-loads the core purpose and contains no fluff. For its brevity, it is perfectly structured.

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

Completeness3/5

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

For a simple delete operation with one parameter, the description is minimally adequate. The annotations cover the destructive nature, and the resource type is clear from the name. However, it omits any mention of side effects (e.g., permanent removal, associated data) and does not clarify the id's source. Given the tool's simplicity, this is acceptable but not thorough.

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

Parameters2/5

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

The schema has only one required parameter 'id' with no description, and the description does not elaborate on it. Schema description coverage is 0%, so the description must compensate, but it fails to explain what the id refers to or how to obtain it. The parameter is named generically, leaving the agent to infer it is the session ID.

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

Purpose4/5

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

The description clearly states the action ('Delete') and the resource ('KB ask session'), which is specific and distinct from sibling tools like invariance_kb_session_create or invariance_kb_page_delete. However, it doesn't elaborate on what a KB ask session is, leaving slight ambiguity for agents unfamiliar with the domain.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It is implicit that deletion is appropriate when a session is no longer needed, but the description does not mention any prerequisites, consequences, or alternative tools (e.g., clearing messages without deleting). No exclusions or context are provided.

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

invariance_kb_session_list_messagesA
Read-only

List all messages in a KB ask session in order

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true and openWorldHint=true, which already inform the agent that this is a safe read operation. The description adds minimal extra behavioral context: it mentions messages appear 'in order,' but doesn't clarify what 'order' means (e.g., chronological by timestamp) or the exact response structure. With annotations covering the safety profile, a 3 is fair as the description adds some value but not rich behavioral detail.

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 concise sentence that clearly states the action and resource. It is front-loaded and economical; every word earns its place. No fluff or unnecessary detail.

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

Completeness4/5

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

For a simple list operation with one parameter and no output schema, the description is quite complete. It states what it does and the order of messages. It could benefit from mentioning the order basis (e.g., chronological) and any pagination details, but these are not critical for basic usage. Given the simplicity, a 4 is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 has 1 parameter 'id' with no description (0% coverage). The description does not explain 'id' beyond its apparent role as session identifier. Since the tool name includes 'session' and description mentions 'session,' an agent can infer 'id' is the session ID, but the description adds minimal meaning beyond the schema. Baseline is 3 given high parameter simplicity, but low schema coverage means description should compensate; it partially does.

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

Purpose4/5

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

The description states a clear purpose: 'List all messages in a KB ask session in order.' It specifies the resource (KB ask session) and the operation (list messages). It distinguishes from sibling tools like invariance_kb_session_create and invariance_kb_session_append_message by implying a read operation on existing sessions, but it doesn't explicitly name a sibling to differentiate from, so not a 5.

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

Usage Guidelines3/5

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

The description implies when to use this tool: when you need to view messages in a sessionrowth. It doesn't provide explicit guidance on when not to use it or alternatives, but the context of listing messages is clear given the sibling set includes create/append/delete session tools. A 3 is appropriate because there is implied guidance but no explicit exclusions.

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

invariance_list_nodesD

Alias of invariance_node_list

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are present, so the description carries the full burden. It discloses nothing about the operation: no read/write nature, no side effects, no return format. 'Alias' implies identity with another tool but offers no behavioral detail.

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

Conciseness2/5

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

The text is short, but this is under-specification rather than conciseness. A single phrase lacks necessary detail and cannot be considered efficient communication.

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

Completeness1/5

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

For a tool with one parameter, no annotations, and no output schema, the description is completely inadequate. It provides no information about behavior, parameters, or usage, leaving agents without any basis for correct invocation.

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

Parameters1/5

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

Schema coverage is 0%. The single parameter run_id is described only as a string with no additional meaning. The description adds zero information about the parameter's purpose or format.

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

Purpose1/5

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

The description merely states 'Alias of invariance_node_list', which does not explain what the tool does. It defers entirely to an undefined sibling without describing the resource or action. An agent cannot infer it lists nodes from this text.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention any context, exclusions, or alternatives. The description is entirely unhelpful for selection.

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

invariance_list_runsC

Alias of invariance_run_list

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.1/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of explaining behavior, but it discloses none. It only identifies the tool as an alias and does not mention list semantics, read-only behavior, return format, pagination, or error conditions.

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

Conciseness2/5

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

The description is extremely short and has no filler, but it is too sparse to be useful. Under-specification is not conciseness, and the single sentence provides only a reference to another tool rather than meaningful self-contained content.

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

Completeness2/5

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

Although the tool is simple with zero parameters, the description is incomplete in context. It relies entirely on the reader knowing invariance_run_list, but sibling descriptions are not provided, and the actual listing behavior and return characteristics are absent.

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

Parameters4/5

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

The tool has zero parameters and an empty input schema, so there is nothing for the description to explain. Per the baseline for zero-parameter tools, the description does not need to compensate for missing parameter documentation.

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

Purpose2/5

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

The description does not state what the tool does; it merely points to another tool as an alias. An agent must already know what invariance_run_list does in order to understand this tool, and the description is essentially a cross-reference rather than a self-contained purpose.

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

Usage Guidelines2/5

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

No when-to-use guidance is provided. The word 'alias' implies interchangeability with invariance_run_list, but there is no explanation of when to choose this alias over the canonical tool, and no mention of alternatives or exclusions.

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

invariance_memory_readA
Read-only

Record a memory read by an agent against a subject (customer/account/policy/...) and return the current MemoryRecord (if any). Use this whenever an agent consults a remembered belief — it produces an auditable MemoryAccess event tying that belief to a node in the run, which the divergence detectors use to flag stale or unsupported memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesBelief key, e.g. "preferred_contact_channel" or "tier".
run_idNoRun to attach the access event to. Falls back to the server-side request context if omitted.
node_idNoNode within the run that performed the read. Falls back to request context.
used_forYesFree-text purpose for the read (used by divergence reasoning). Example: "select-channel".
subject_idYesID of the subject (e.g. customer ID, policy ID).
subject_typeYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true and openWorldHint=true, but the description adds critical context: it produces an auditable MemoryAccess event, which is a side effect beyond the read. This goes beyond the annotations and clarifies the behavioral contract. No contradiction with annotations since readOnlyHint likely refers to the memory store itself, not the event log.

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 concise sentences, front-loaded with the action and return, followed by usage context. No fluff or redundancy. 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?

For a tool with 6 parameters and no output schema, the description covers the purpose, usage trigger, and side effects. It does not describe the return format (MemoryRecord) in detail, but that is not required without an output schema. The mention of divergence detectors helps an agent understand the broader context. Overall sufficient for correct invocation.

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

Parameters3/5

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

Schema coverage is high (83%) with all parameters described except subject_type which has an enum. The description does not add significant extra meaning beyond the schema; it merely echoes the purpose of used_for (divergence reasoning). Baseline 3 is appropriate as the schema carries the parameter semantics.

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

Purpose5/5

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

The description clearly states the verb 'Record' and the resource 'memory read' against a subject, and explains it returns the current MemoryRecord. It also differentiates its purpose (auditable event for divergence detection) from other memory tools like memory_write, making it distinguishable without ambiguity.

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 states 'Use this whenever an agent consults a remembered belief' and explains the reasoning (auditable event for divergence detectors). It does not explicitly name alternatives or exclusion conditions, but the directive is clear and contextually sufficient given no other read tool exists among siblings.

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

invariance_memory_writeA

Record a memory write by an agent: set or update a belief (claim) about a subject. Returns the new MemoryAccess + MemoryRecord. Defaults: source="agent_write", confidence=1.0. Provide provenance (EvidenceRef[] as JSON) when the claim is derived from authoritative records (CRM/ticket/policy doc) so downstream divergence checks can verify it.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYesValue of the claim, JSON-encoded. Example: "\"email\"" or "{\"tier\":\"gold\"}".
run_idNo
sourceNoOrigin of the claim. Defaults to agent_write.
node_idNo
used_forYes
confidenceNoConfidence in the claim, [0,1]. Defaults to 1.0.
provenanceNoEvidenceRef[] as a JSON-encoded array. Example: [{"kind":"document","id":"doc_1"}]
subject_idYes
valid_untilNoISO8601 expiry. null means open-ended.
subject_typeYes

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses key behavioral traits beyond annotations: it returns 'the new MemoryAccess + MemoryRecord', it has defaults (source='agent_write', confidence=1.0), and it explains the downstream consequence of providing provenance ('so downstream divergence checks can verify it'). Annotations already indicate readOnlyHint=false and destructiveHint=false, and the description adds context about what the tool does and why provenance matters. It doesn't contradict annotations.

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

Conciseness4/5

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

The description is concise and front-loaded: the core purpose is stated in the first sentence, followed by return value, defaults, and provenance guidance. Every sentence adds value. It's slightly dense with technical terms (EvidenceRef[], MemoryAccess, MemoryRecord) but remains efficient for an agent audience.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 write tool with 11 parameters and no output schema, the description covers the essential context: what it does, what it returns, key defaults, and when to use provenance. It doesn't explain the full parameter set (e.g., run_id, node_id, used_for) or provide examples of complete invocations, but the schema covers those. The description is adequate for an agent to select and invoke the tool correctly in most cases.

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

Parameters4/5

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

Schema description coverage is 45%, so the description partially compensates. It explains the meaning of 'provenance' (EvidenceRef[] as JSON, used for divergence checks), clarifies defaults for 'source' and 'confidence', and describes the return value. However, it doesn't explain several parameters like 'run_id', 'node_id', 'used_for', 'valid_until', or 'subject_type' beyond what the schema provides. The description adds value for the most important parameters but leaves some gaps.

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: 'Record a memory write by an agent: set or update a belief (claim) about a subject.' It uses a specific verb ('Record'), names the resource ('memory write'), and describes the action (set or update a belief). It also distinguishes itself from siblings like invariance_memory_read and invariance_node_write by focusing on agent-authored belief claims about a subject.

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 context on when to use the tool: when an agent needs to record a belief/claim about a subject. It also gives guidance on when to provide provenance ('when the claim is derived from authoritative records'), which helps the agent decide how to invoke it. However, it doesn't explicitly state when NOT to use it or name alternative tools for different scenarios (e.g., invariance_node_write for node-level writes).

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

invariance_metrics_agentsA
Read-only

Per-agent usage rollup over a time window: run counts, node counts, cost. Useful for agent-by-agent comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
window_hoursNoLookback window in hours (default 24, max 90 days).

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds that it returns aggregated metrics over a time window, which is useful context. However, it does not disclose details like default window behavior or data format beyond the schema, so it adds modest value but 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 short, dense sentences with no filler. The core purpose is front-loaded, and the usage hint is appended without redundancy. Every word earns its place.

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

Completeness4/5

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

For a simple read-only rollup with one optional parameter and no output schema, the description states the returned metrics (run counts, node counts, cost) and the per-agent scope, which is sufficient for an agent to understand what it will receive. Minor gaps like pagination or aggregation details are not critical given the tool's 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 description coverage is 100% – the only parameter window_hours has a clear description including default and max. The tool description does not add any additional parameter semantics, so the baseline of 3 applies because the schema carries the meaning.

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

Purpose5/5

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

The description clearly states a specific verb ('rollup') and resource ('per-agent usage') with explicit metrics (run counts, node counts, cost). It also conveys the intended comparison use case, distinguishing it from sibling tools like invariance_metrics_overview or invariance_run_metrics which target 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 Guidelines3/5

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

The phrase 'Useful for agent-by-agent comparison' gives a clear when-to-use scenario, but it does not mention alternatives or provide exclusions (e.g., when to use run-level metrics instead). This leaves some ambiguity for an agent choosing among many metric-related siblings.

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

invariance_metrics_overviewA
Read-only

Cross-run rollup over a time window: total runs, nodes, errors, cost, latency, etc. Use this to ground "what is happening across my agents" questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
window_hoursNoLookback window in hours (default 24, max 90 days).

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, covering the safety profile. The description adds that the tool aggregates across runs over a time window, which is useful, but it does not disclose edge behaviors such as result ordering, truncation, or the meaning of 'etc.' in the returned data.

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 filler. The core purpose is front-loaded, followed immediately by a concrete usage cue. 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?

Given this is a simple read-only tool with one optional parameter fully documented in the schema and useful annotations, the description is nearly complete. It does not define a return format or enumerate all metrics, but the provided examples plus the 'etc.' are adequate for an agent to select and invoke the tool.

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

Parameters3/5

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

The only parameter, window_hours, is fully described in the schema with default and range details. The description's mention of 'time window' aligns with the parameter but adds no new semantic information beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description clearly communicates an aggregate metrics view: 'Cross-run rollup over a time window' plus the metric types (runs, nodes, errors, cost, latency). It implies a distinction from per-run or agent-specific metrics, though it does not explicitly name sibling tools like invariance_run_metrics or invariance_metrics_agents.

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 an explicit, practical use case: 'ground "what is happening across my agents" questions.' This tells the agent when to choose the tool, but it does not state when not to use it or name alternatives, so it falls 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.

invariance_monitor_createA

Create a monitor that evaluates an event-shaped predicate against nodes/runs and optionally emits signals, findings, or reviews when matched.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesCreateMonitorRequest as a JSON object string. Required: name, evaluator. Evaluator is one of two shapes — keyword: {"type":"keyword","field":"output.text","keywords":["refund","chargeback"],"case_sensitive":false} or threshold: {"type":"threshold","field":"metrics.cost_usd","operator":">","value":5}. Optional: severity ("info"|"low"|"medium"|"high"|"critical"), scope ("node"|"session"|"run"|"agent"|"batch"), target ({"kind":"current_run"} | {"kind":"specific_run","run_id":"run_..."} | {"kind":"agent_history","filters":[{"field":"agent_id","operator":"eq","value":"agt_..."}]}), signal_type (string), creates_review (bool), enabled (bool), description (string), schedule ({"kind":"manual"} or {"kind":"interval","every_seconds":300}). Example: {"name":"high-cost-runs","evaluator":{"type":"threshold","field":"metrics.cost_usd","operator":">","value":5},"severity":"high","scope":"run","target":{"kind":"current_run"},"creates_review":true}

TDQS

A3.5/5.0
Behavior3/5

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

Annotations provide only readOnlyHint=false and destructiveHint=false; the description adds that the monitor can optionally emit signals, findings, or reviews on match, which is useful side-effect context. However, it does not clarify whether creation alone triggers evaluation, how scheduled or manual evaluation relates to the created monitor, or whether authorization or validation steps are involved. The description neither contradicts annotations nor fully discloses behavioral traits like immediate activation or persistence 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 a single, front-loaded sentence that clearly states the action and the key behavior. Every clause contributes meaning, and there is no filler or repetition of schema details. It is appropriately concise for a tool with a comprehensive input schema.

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

Completeness3/5

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

With no output schema, the description does not mention what the create call returns (e.g., monitor ID or object), nor does it explain that the monitor may run on a schedule or must be manually evaluated. The schema thoroughly documents the request body, but the overall tool context is incomplete for an agent that needs to understand the full lifecycle after creation. Given the moderate complexity, this is a notable but not critical gap.

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

Parameters3/5

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

The schema covers the single body parameter with a very detailed description, including required fields, valid evaluator shapes, optional settings, and an example. The tool description itself adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 is appropriate given 100% schema coverage.

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

Purpose5/5

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

The description uses a specific verb ('Create') and resource ('monitor'), and clearly explains what the monitor does: evaluates an event-shaped predicate against nodes/runs and optionally emits signals, findings, or reviews. This distinguishes it from other monitor-related siblings like monitor_list, monitor_get, or monitor_evaluate, which involve different lifecycle stages.

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

Usage Guidelines2/5

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

The description does not state when to use this tool versus alternatives. While the verb 'Create' implies a new-monitor workflow, there is no explicit guidance around prerequisites, when to choose create over monitor_update or monitor_evaluate, or any exclusionary conditions. An agent must infer usage entirely from the tool name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_monitor_evaluateA

Manually evaluate a monitor right now against an explicit input scope (returns the resulting execution plus any signals/findings/reviews produced).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
inputNoEvaluateMonitorRequest as a JSON object string. All fields optional. Fields: run_id (string — restrict eval to one run), since (ISO-8601 timestamp — only nodes after this), limit (int — max nodes to consider). Example: {"run_id":"run_abc123","limit":50} or {} to evaluate against the monitor's default scope.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only and non-destructive behavior, and the description reinforces the side-effect profile by saying the evaluation returns 'the resulting execution plus any signals/findings/reviews produced.' This tells an agent that the call can create evaluation artifacts, not just read data. It does not mention cost/time or permissions, but the core mutation 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?

A single sentence puts the action and scope first, with the return payload in a parenthetical. There is no filler and no redundant repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully summarizes the return payload (execution plus signals/findings/reviews), and input semantics are mostly delegated to the schema. It is sufficient for a simple two-parameter tool, though the implicit `id` and lack of explicit alternative routing leave small completeness gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The `input` parameter is well-specified in the schema with field meanings, types, and an example, so the description only needs to echo the concept of scope. However, the required `id` parameter has no description in the schema and is only implicitly a monitor identifier from the tool description. This is the main semantic gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('Manually evaluate'), a resource ('a monitor'), a timing/trigger ('right now'), and a scope qualifier ('explicit input scope'). It also states what is returned, making it easy to distinguish from monitor_executions or preview-oriented 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 phrase 'Manually evaluate a monitor right now' provides clear context for on-demand use, and 'against an explicit input scope' signals when a scoped, one-off evaluation is appropriate. It does not explicitly name sibling alternatives or state when not to use them, so it stops short of a full routing guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_monitor_executionsC
Read-only

List past evaluation executions for a monitor (each has status, trigger, matched_node_ids, timing).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the description adds value by specifying returned fields (status, trigger, matched_node_ids, timing). It does not disclose pagination behavior or any other side effects, but given read-only is covered by annotations, this is adequate. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, no wasted words, and front-loaded with the core action (List). It is concise and structured well for quick scanning, though it could benefit from a brief mention of pagination without hurting conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks critical operational details: it does not mention that the result is paginated, how to use cursor, or what limit controls. For a tool with an opaque cursor parameter, this is a significant gap. The returned fields are mentioned, but pagination usage is entirely absent, making it incomplete for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (only cursor has a description), and the tool description does not explain 'id' or 'limit'. It implies 'id' is the monitor id but does not state it explicitly, and 'limit' and cursor semantics are left largely to the schema's cursor description. The description fails to compensate for the low schema coverage, leaving parameters under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (List), a resource (past evaluation executions), and scopes it to a monitor, which distinguishes it from generic list tools. Listing the fields (status, trigger, matched_node_ids, timing) adds specificity. However, it doesn't explicitly differentiate from siblings like invariance_monitor_findings, so it's not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as invariance_monitor_findings or invariance_finding_list. The description only states the action without any criteria for selection, leaving the agent to infer from the name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_monitor_findingsA
Read-only

List findings produced by a monitor across all of its executions.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already cover the read-only safety profile. The description adds useful scoping (across all executions) but does not explain pagination behavior, cursor usage, or other execution/result traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that clearly states the action, resource, and scope with no filler. Every clause adds meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Reasonable for a simple read-only list tool, but since there is no output schema, return format and pagination are left largely unexplained. The description gives enough for a first call but is not fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%. The description does not directly explain that id is the monitor ID or clarify what limit controls, leaving two of three parameters under-documented and under-compensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: "List findings produced by a monitor across all of its executions." It clearly differentiates the tool from siblings like invariance_finding_list and invariance_monitor_executions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: call this when findings generated by a monitor across multiple executions are needed. It does not explicitly name alternatives or state when not to use it, so the guidance is adequate but not strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_monitor_getB
Read-only

Get a monitor by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured data. The description adds no behavioral details beyond 'get' — no 404/error behavior or return shape — but this is a simple read and there is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with no filler; every word contributes to the core meaning. For a simple get-by-ID tool, this length is appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 low complexity and readOnly annotations, the essential invocation information is present: resource and required parameter. However, with no output schema and no mention of return values or error behavior, it is only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is a string 'id,' and the description maps it to the monitor identifier ('by ID'), which is adequate for an obvious one-parameter lookup. However, schema_description_coverage is 0% and the description does not add format, source, or example details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('monitor') and identifies the lookup key ('by ID'). This clearly separates it from monitor_list, monitor_create, and monitor_update, though it does not explicitly discuss its relationship to other monitor sub-resources like invariance_monitor_executions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternative guidance is provided. The only implicit cue is 'by ID,' which suggests using it when an ID is already known, but there is no mention of monitor_list for discovery or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_monitor_listA
Read-only

List monitors visible to the calling agent (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read. The description adds the visibility scope ('visible to calling agent') which is not in annotations, and mentions pagination. However, it does not explain what fields the list returns or whether the list is ordered or limited by default. Since annotations cover safety, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence, concise and front-loaded with the core function (List monitors) and the scope (visible to calling agent). The pagination note is appended compactly. No fluff or redundant details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 paginated list tool with annotations covering read-only safety, the description covers the essential purpose and scope. It could mention whether the list is sorted or if there are default limits, but the output schema is absent so the return format is unknown. Overall, adequate for a straightforward list operation given the available structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: the 'limit' parameter has no description, but the schema provides type and maximum constraints. The 'cursor' parameter has a description explaining its purpose and usage. The description adds nothing about the parameters themselves. With half the parameters documented in schema and the other half self-explanatory, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists monitors visible to the calling agent, and mentions pagination. It is specific enough to distinguish from most siblings, though it does not explicitly differentiate from other list tools like invariance_monitor_get or invariance_run_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for listing monitors visible to the current agent, but does not provide explicit when-to-use guidance or exclusions. There are many related tools (e.g., invariance_monitor_get for single monitor, invariance_monitor_executions for executions), but the description does not mention alternatives or when to prefer this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_monitor_pauseA

Disable a monitor so it stops firing (preserves the spec; use invariance_monitor_resume to re-enable).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a mutating, non-destructive, open-world operation. The description adds valuable context: that the monitor's spec is preserved (reversible) and that it stops firing. It does not disclose edge cases (e.g., already-disabled monitors) but covers the key 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?

One sentence, front-loaded with the action and effect, followed by the pointer to resume. No fluff, every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter, no output schema, and annotations covering safety, the description is largely complete. It covers purpose, effect, and reversibility. It lacks mention of error conditions (e.g., invalid id) or id format, but these are minor for this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has a single required 'id' parameter with no description, and schema coverage is 0%. The description does not explicitly define 'id', but the tool name and context make it evident that it is the monitor's identifier. This is sufficient for a trivial single-parameter tool, but the description could have explicitly stated it.

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 action ('Disable a monitor'), the target resource (monitor), and the effect ('stops firing'). It also notes that the spec is preserved, distinguishing it from destructive operations like delete. The mention of resume as a counterpart further clarifies its role among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names invariance_monitor_resume as the alternative for re-enabling, giving a clear when-to-use condition. However, it doesn't discuss other alternatives like update or delete, leaving some inference to the agent about when pause is preferred over them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_monitor_preview_evaluatorA
Read-only

Dry-run a monitor evaluator against history to see which nodes it would match and why. Writes nothing. Returns {sampled, matched, matches:[{run_id,node_id,matched,reason,observed_value?}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesJSON object string with {evaluator} (required, same shape as create) plus optional target and sample_limit. Example: {"evaluator":{"type":"keyword","field":"output.text","keywords":["refund"]},"target":{"kind":"current_run"}}

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint and openWorldHint, and the description reinforces this with 'Writes nothing.' It also discloses that it returns a sample/matches summary with per-node reasons, which is behavioral detail not in the annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences put the main purpose first, then safety and output contract. Every clause earns its place; there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter dry-run tool with rich schema coverage and read-only annotations, the description is nearly sufficient: it specifies the return contract ({sampled, matched, matches...}) and side-effect profile. It falls just short of naming the sibling tools/conditions that differentiate it from monitor_evaluate or preview_target, but this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of the single parameter, including the required evaluator shape, optional target/sample_limit, and an example. The description's return-shape note does not explain the body parameters, so it adds no semantic detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with the specific verb 'Dry-run' and names the exact resource ('monitor evaluator') and goal ('see which nodes it would match and why'). It also states the output shape, making the tool's function unmistakable and distinct from monitor execution or preview-target tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description communicates a clear use case—validating an evaluator against history before real execution—but never explicitly contrasts it with siblings like invariance_monitor_evaluate or invariance_monitor_preview_target. No when-not conditions or alternatives are named, so an agent must infer when to choose this tool from the word 'Dry-run' and 'Writes nothing'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_monitor_preview_targetA
Read-only

Dry-run a monitor target against history to see which runs/nodes it would inspect. Writes nothing. Returns {run_ids, node_ids, counts:{runs,nodes}, truncated}.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesJSON object string with one of {target} or {monitor_id}, plus optional sample_limit. target shape matches create: {"kind":"current_run"} | {"kind":"specific_run","run_id":"run_..."} | {"kind":"agent_history","filters":[...]}. Example: {"target":{"kind":"agent_history","filters":[{"field":"environment","operator":"eq","value":"prod"}]},"sample_limit":100}

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this with 'Writes nothing.' It adds valuable context about the return payload and the possibility of truncation, which goes beyond what annotations provide. 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 tight sentences that front-load the purpose and follow with side-effect and return information. There is no wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter preview tool with read-only annotations, the description covers what it does, its side-effect-free nature, and the return format. It does not mention error conditions or which history is used, but given the schema's detail this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% description coverage for body, including the JSON shape and examples. The tool description adds no parameter-level detail, so it neither improves nor worsens the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it dry-runs a monitor target against history to see which runs/nodes would be inspected. This distinguishes it from sibling tools like invariance_monitor_evaluate that likely execute the monitor. The phrase 'Writes nothing' further clarifies its read-only nature.

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?

Provides clear context that this is a dry-run tool for previewing target selection before actual execution. However, it does not explicitly name alternative tools or state when not to use it, leaving the routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_monitor_resumeA

Re-enable a paused monitor so it begins firing again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the behavioral effect that the monitor 'begins firing again,' which is useful beyond the annotations. However, it does not disclose behavior on an already-active monitor, error conditions, or whether the resume is idempotent, leaving some ambiguity for a state-changing 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?

The description is a single focused sentence that leads with the action and immediately conveys the outcome. Every word earns its place, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter state-transition tool, the description covers the essential usage and effect. The safety profile is partly covered by annotations, and no output schema exists, so return-value details are not strictly needed. It could add an explicit note about calling on an already-running monitor, but overall it is 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?

The schema only defines 'id' as a string with no description, and the description does not explicitly state that id refers to the monitor to resume. However, with a single parameter and direct phrasing, the intended meaning is inferable, though more explicit parameter documentation would be better.

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 specific action ('Re-enable'), the resource ('a paused monitor'), and the resulting behavior ('begins firing again'). This clearly distinguishes the tool from siblings like invariance_monitor_pause and invariance_monitor_update.

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 condition for use is clear: the monitor must be paused, and the effect is that it resumes firing. It does not explicitly name alternative tools or state when not to use it, but the inverse relationship to 'pause' is strongly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_monitor_updateA

Patch an existing monitor (partial update; only included fields change).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
patchYesUpdateMonitorRequest as a JSON object string. All fields optional — include only what you want to change. Fields: name, description, enabled, evaluator (same shape as create), schedule, creates_review, signal_type, scope, target. Example: {"enabled":false,"severity":"critical"} or {"evaluator":{"type":"threshold","field":"metrics.cost_usd","operator":">","value":10}}

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false (write) and destructiveHint=false (non-destructive). The description adds the key behavior that only included fields change, which is useful context beyond annotations. It doesn't mention return values, idempotency, or authentication, but with annotations covering safety, this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no redundant words. The key concept (partial update) is front-loaded, making it immediately clear what the tool does. Efficient and appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 update tool with two parameters and no output schema, the description covers the essential partial-update semantics. It doesn't mention prerequisites (e.g., monitor must exist) or return behavior, but given the simplicity and annotations, it's fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: the patch parameter has a detailed description with field list and example, while id only has a type. The description adds the overall partial-update concept, but the schema already explains patch well. id is self-evident, so no extra description is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Patch') and resource ('existing monitor') and clarifies it's a partial update where only included fields change. This distinguishes it from create (which makes a new monitor) and from pause/resume (which are state toggles), though it doesn't name siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for updating an existing monitor's specific fields, and the partial-update wording suggests not to use it for full replacement or creation. However, it doesn't explicitly state when not to use it or point to alternatives like create, pause, or resume, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_narrative_getA
Read-only

Fetch (or regenerate) the LLM-synthesized narrative for a run

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
refreshNoForce regeneration of the narrative

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a non-trivial behavioral trait: this tool can 'regenerate' the narrative, not just fetch it, which is reinforced by the schema's 'Force regeneration' parameter. This adds context beyond the readOnlyHint and openWorldHint annotations, warning the agent that refresh may trigger an LLM synthesis. It does not contradict the readOnlyHint outright, though 'regenerate' could be misread as mutating, which is worth noting.

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, front-loaded sentence with no filler. 'Fetch (or regenerate)' efficiently captures both primary and secondary behaviors, and 'LLM-synthesized narrative for a run' precisely scopes the resource. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with a small schema and read-only annotations, the description and schema together are sufficient to invoke the tool correctly: pass run_id and optionally set refresh. The absence of an output schema is mitigated by the clear 'narrative' concept, though the exact return shape is not described. Overall, no critical information for calling this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the refresh parameter clearly, and the required run_id is self-evident from the name and description. The description does not add much parameter-specific meaning beyond the schema, but the schema covers half of the parameters and the other half is obvious. A middle score is appropriate because no additional compensation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb ('Fetch') and the resource ('the LLM-synthesized narrative for a run'), going beyond the tool name. The parenthetical '(or regenerate)' adds an important secondary behavior. It does not explicitly differentiate itself from siblings like invariance_run_get, but the unique 'narrative' and 'LLM-synthesized' terms make the target resource specific enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: whenever the agent needs the synthesized narrative for a run, and potentially wants to regenerate it via the refresh behavior. However, it does not explicitly state when to prefer this over related run tools, and there are no alternatives or exclusions mentioned. The usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_node_listB
Read-only

List nodes for a run in append order (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged
run_idYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already supply the safety profile (`readOnlyHint: true`, `openWorldHint: true`). The description adds value by disclosing 'append order' and 'paginated', which are behavioral details not present in the annotations; however, it does not clarify what a 'node' is, what data is returned per node, or whether failures are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that is front-loaded with the action, resource, and key behavior. It is economical and wastes no words, though the phrasing is so brief that some informational gaps (purpose clarity and parameters) bleed into other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated read tool the description covers the two main behavioral aspects: ordering and pagination. It is missing a light definition of what qualifies as a node and any mention of the return shape, but the annotations carry the safety burden and the parameter name `run_id` is self-explanatory.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, with `run_id` and `limit` having no descriptions in the schema; the description must compensate but does not. The word 'paginated' hints at `limit`/`cursor`, but nothing explains how `run_id` identifies the run or how ordering relates to appended nodes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('List nodes') with a clear resource ('for a run') and scope ('append order', paginated). It is understandable on its own, but it does not differentiate from the look-alike sibling `invariance_list_nodes`, which leaves an agent unsure which of the two near-identical names to select.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to choose this tool over alternatives. The sibling set contains `invariance_run_llm_calls`, `invariance_run_operational_graph`, `invariance_list_nodes`, and `invariance_node_write`, and nothing here clarifies what this tool returns compared to those or when one should be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_node_writeA

Append a single node (one unit of work) to an open Invariance run. Use this to record tool calls, LLM calls, logs, context attachments, or handoffs as they happen.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDeclared custom node type registered via invariance_node_type_register / defineNodeType. Narrows the shape of custom_fields and is selectable by monitors via on.node({type}).
errorNoError payload as a JSON-encoded string. Example: {"type":"TimeoutError","message":"upstream took >30s"}
inputNoNode input payload as a JSON-encoded string (any JSON value: object, array, string, number).
outputNoNode output payload as a JSON-encoded string (any JSON value).
run_idYes
metadataNoFree-form metadata as a JSON object string. Example: {"model":"claude-opus-4-7","temperature":0.2}
action_typeYesFree-form verb describing what happened. Conventional values used by the SDK helpers: "tool_call" (a tool/function invocation; pair with type:"tool_call" and custom_fields.tool_name/status), "llm_call" (a model inference call), "log" (human-legible breadcrumb; input.message holds the text), "context" (structured state attached to the run, e.g. user_id), "handoff" (delegation to another agent; set handoff_from/to/reason). Custom verbs are allowed; monitors can select on this field.
custom_fieldsNoTyped custom fields as a JSON object string. For type="tool_call": {"tool_name":"search","status":"success","tool_input":{...},"tool_output":{...},"latency_ms":120}

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, and the description adds the prerequisite that the run must be open, which is useful behavioral context. However, it does not disclose potential side effects like whether appending to a finished run fails, rate limits, or ordering guarantees. The description provides some additional value but not rich behavioral detail beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero fluff: the first states the core action and target, the second lists concrete use cases. Information is front-loaded and every word 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?

Given the complexity (8 params, no output schema) the description plus schema are adequate. It correctly identifies the open-run prerequisite and typical event categories, but does not mention what the return value might be (though no output schema exists) or highlight the distinguishing subtlety that custom verbs are allowed (though that is captured in the schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 88%, so most parameters already have detailed descriptions (e.g., action_type conventions, custom_fields example). The tool description itself does not add any parameter-specific meaning, staying at the baseline expected given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Append'), the exact resource ('a single node ... to an open Invariance run'), and enumerates the kinds of events it records (tool calls, LLM calls, logs, context attachments, handoffs). This clearly distinguishes it from sibling tools like invariance_run_start or invariance_node_list.

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 when-to-use guidance ('record ... as they happen', 'to an open run'), which contrasts with run-level operations. It does not name alternatives or explicitly exclude cases, but the context is strong enough for an agent to infer appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_operator_createA

Create a new operator in one of the caller's projects. Operators are the actors whose work shows up in the company brain — create operator_type='agent' for an autonomous worker (Claude Code, a scripted agent, a coding bot) and operator_type='human' for a teammate whose screen recordings, microphone capture, meetings, and Granola notes you want to ingest. Requires a user-session JWT bearer.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesOperator display name (visible in the dashboard).
project_idYesProject ID the operator will live under. The caller must be a member.
operator_typeYesWhether this operator is an autonomous agent (e.g. a Claude Code instance, a coding bot, an autonomous worker) or a human (e.g. a teammate whose meetings/notes/screen-recordings should feed the company brain).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description correctly aligns with a write operation. It adds behavioral context by specifying the authentication requirement (user-session JWT bearer) and explaining the semantics of the two operator types, which goes beyond the schema. No contradiction exists.

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, front-loaded with the core purpose, and each sentence adds meaningful detail without redundancy. It is well-structured and easy to parse, with no filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has three required parameters, all documented in the schema, and the description covers its purpose, type selection, and authentication. It does not explicitly mention the return value or error behavior, but for a simple create operation this is often implied. Given the absence of an output schema and the openWorldHint, the description is sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description enriches the meaning of the operator_type parameter with concrete examples (Claude Code, Granola notes) and clarifies the project scope. It also adds the auth requirement, which is not in the schema, thus providing additional semantic value.

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 verb 'create' and the resource 'operator', and scopes it to the caller's projects. It distinguishes operator types (agent vs human) with concrete examples, making it unambiguous and distinct from sibling tools like invariance_operator_list or invariance_operator_get.

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 context for when to use this tool, including the distinction between agent and human operator types and the prerequisite of a user-session JWT bearer. It does not explicitly name alternatives or when not to use it, but the guidance on type selection is strong enough to steer an agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_operator_getA
Read-only

Fetch a single operator by ID. Requires a user-session JWT bearer.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesOperator ID.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds the JWT bearer requirement, which is useful auth context beyond the annotations, but says nothing about behavior on missing IDs or response format. This is modest added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence: the action and object come first, followed by the auth prerequisite. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only, fetch-by-ID tool with complete schema coverage and helpful annotations, the description is nearly sufficient. It states the operation, the required param, and auth. It could mention what the return value represents (the operator object), but that is largely implied by 'Fetch.'

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the only parameter 'id' is documented as 'Operator ID.' The description's phrase 'by ID' reuses that meaning but adds no additional syntax, format, or domain semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch'), a concrete resource ('operator'), and an identifier ('by ID'). This clearly distinguishes it from siblings like invariance_operator_list (multiple operators) and invariance_operator_me (current operator).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: fetch a specific operator when you have an ID. However, it does not explicitly mention alternatives or exclusions, such as 'use operator_list to retrieve all operators' or 'use operator_me for the current operator.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_operator_listA
Read-only

List operators inside one of the caller's projects. Filter by operator_type to find all human teammates or all autonomous agents. Requires a user-session JWT bearer.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID. The caller must be a member.
operator_typeNoWhether this operator is an autonomous agent (e.g. a Claude Code instance, a coding bot, an autonomous worker) or a human (e.g. a teammate whose meetings/notes/screen-recordings should feed the company brain).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds a behavioral requirement: 'Requires a user-session JWT bearer.' This is valuable beyond the annotations and does not contradict them. No mention of return format or pagination, but that is a minor omission given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences, each with a distinct purpose: the core action, the filtering option, and the authentication requirement. It is front-loaded and contains no redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential aspects: scope (caller's project), filtering, and auth. Since there is no output schema, the response format is not specified, but for a simple list tool this is a minor gap. The tool is low complexity, and the description is sufficient for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters have detailed schema descriptions (100% coverage). The tool description reiterates that operator_type filters for human teammates or agents, but this adds little beyond the schema, which already explains the enum values and the project membership requirement. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (list), resource (operators), and scope (inside one of the caller's projects). It also notes the optional filter by operator_type, which clarifies the tool's purpose and distinguishes it from sibling operator tools like operator_get, operator_me, and operator_create.

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 use cases: list operators in a project, optionally filtered to human teammates or autonomous agents. It does not explicitly mention alternatives or exclusions relative to siblings like invariance_operator_get or invariance_agent_list, but the context is sufficient for an agent to infer when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_operator_meA
Read-only

Show the operator identity associated with the current credentials. An "operator" is the unified actor model — every Claude Code session, autonomous agent, AND human teammate is an operator. Use this to confirm which operator context the MCP server is acting as (e.g. before recording session events, attaching runs, or writing notes to the company brain).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context about credential-backed operator identity, but it does not disclose details like the return shape, whether identity can change, or how credentials are resolved. This is acceptable given the strong annotations, but the description could add a bit more behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. The first sentence states the action, the second defines the key concept, and the third gives concrete usage contexts. Every sentence earns its place and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, read-only identity lookup, the description is nearly complete: it defines the domain concept, states what the tool shows, and gives practical scenarios for use. The only minor gap is that it does not explicitly describe the return format, but 'Show the operator identity' sufficiently implies the output 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?

The tool has zero parameters, so the baseline is 4. The description adds semantic context by explaining what an 'operator' is and what the returned identity represents, which is valuable even though there are no parameters to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Show the operator identity associated with the current credentials.' It also defines 'operator' as the unified actor model, which clearly scopes the tool's meaning and separates it from generic identity tools. This is more than a restatement of the name and gives an agent a concrete understanding of what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use the tool: 'Use this to confirm which operator context the MCP server is acting as,' with concrete examples like before recording session events or attaching runs. It does not explicitly identify alternatives or when not to use it, so it stops just 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.

invariance_receipt_batchB

Record many external receipts in one call. Requires an AGENT API key (operator tokens get 403).

ParametersJSON Schema
NameRequiredDescriptionDefault
receiptsYesJSON array of CreateExternalReceiptRequest objects. Each element: CreateExternalReceiptRequest as a JSON object string. Required: source ("stripe|zendesk|salesforce|hubspot|slack|linear|jira|webhook|jsonl|csv|custom"), kind (string). Optional: run_id, node_id, external_id, occurred_at, business_object_type, business_object_id, subject_type, subject_id (strings), correlation_keys ({customer_id,ticket_id,refund_id,...}), payload, metadata (objects). Example: {"source":"stripe","kind":"refund.created","external_id":"re_1","correlation_keys":{"charge_id":"ch_1"},"payload":{"amount":500}}

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the write nature is known. The description adds the authentication requirement (AGENT API key only), which is useful additional context. However, it does not disclose batch-specific behaviors like partial failure semantics, idempotency, or rate limits. With annotations covering the safety profile, a 3 is appropriate—adds some value but not comprehensive behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core purpose and immediately follows with the authentication caveat. Every word serves a purpose, with no redundancy or fluff. It is optimally concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a batch write operation with no output schema, the description leaves out critical operational details such as response format, batch size limits, partial failure behavior, or whether the operation is atomic. The schema covers input formatting but not execution outcomes. The agent may be uncertain about what to expect after calling it. Since the tool is more complex than a simple read, the description is insufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter is thoroughly documented in the schema, including structure, required and optional fields, and an example. The description itself adds no parameter-specific semantics beyond what the schema provides. Per the baseline rule, a high-coverage schema sets the baseline at 3, and the description does not elevate it further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Record many external receipts in one call') with a specific verb and resource, distinguishing it from single-receipt creation by the word 'many'. However, it does not explicitly name the sibling tool (invariance_receipt_create) for batch vs. single comparison, so it lacks the explicit differentiation seen in high-scoring examples.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides an important usage constraint (requires AGENT API key, operator tokens get 403), which is a clear authentication guideline. However, it does not specify when to use this batch tool versus the single-receipt alternative, nor does it mention any exclusions or conditions beyond authentication. Guidance is implied by the 'many' keyword but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_receipt_createA

Record one external receipt (proof an external action happened). Requires an AGENT API key (operator tokens get 403).

ParametersJSON Schema
NameRequiredDescriptionDefault
receiptYesCreateExternalReceiptRequest as a JSON object string. Required: source ("stripe|zendesk|salesforce|hubspot|slack|linear|jira|webhook|jsonl|csv|custom"), kind (string). Optional: run_id, node_id, external_id, occurred_at, business_object_type, business_object_id, subject_type, subject_id (strings), correlation_keys ({customer_id,ticket_id,refund_id,...}), payload, metadata (objects). Example: {"source":"stripe","kind":"refund.created","external_id":"re_1","correlation_keys":{"charge_id":"ch_1"},"payload":{"amount":500}}

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds valuable behavioral context: the operation requires an AGENT API key, operator tokens are rejected with 403, and the receipt records proof of an external action. This meaningfully supplements the write implication already present in readOnlyHint=false. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core purpose is stated first, followed immediately by the critical authentication constraint. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter creation tool, the description plus schema provide enough to call it correctly: purpose, auth requirements, and full parameter details. It lacks guidance about the sibling receipt_batch tool and does not describe the response shape, but those are minor given the schema's completeness and the tool's 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 description coverage is 100%, and the schema itself fully documents the receipt parameter with required fields, optional fields, allowed source values, and an example. The tool description adds no additional parameter semantics. This meets the baseline for fully-covered schema parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Record one external receipt (proof an external action happened)'. However, it does not explicitly distinguish this from sibling tools like invariance_receipt_batch, invariance_receipt_list, or invariance_receipt_get, beyond the word 'one'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys the intended use case: recording a single external receipt as proof of an external action. It also provides a usable constraint by requiring an AGENT API key and explicitly noting operator tokens receive 403. It does not, however, mention alternatives such as receipt_batch for bulk recording or receipt_list/get for retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_receipt_getB
Read-only

Get an external receipt by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only behavior, so the description only adds the qualifier 'external'. It does not disclose any behavioral nuances such as whether the receipt is fetched from an external system, what errors may occur, or how the ID is resolved. The description barely goes beyond the annotation profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler. It is perfectly economical and front-loaded, stating the operation and target in four words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter, read-only getter, the description is minimally viable: the agent can infer how to invoke it. However, the 'external' qualifier is unexplained and there is no output schema, leaving the return shape and the meaning of 'external' unclear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter 'id' is covered only by 'by ID', which restates the parameter name. With schema_description_coverage at 0%, the description should compensate by explaining the ID format, origin, or required form, but it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description precisely states the action ('Get'), the resource ('external receipt'), and the mechanism ('by ID'). It clearly distinguishes itself from sibling tools like invariance_receipt_create and invariance_receipt_list by matching singular retrieval to an ID-based lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: use this tool when you have a specific receipt ID and need the corresponding receipt. However, it provides no explicit guidance about when to prefer this over related listing or creation tools, nor any exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_receipt_listB
Read-only

List external receipts. Filter by run, node, source, kind, external_id, business object.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged
run_idNo
sourceNo
node_idNo
external_idNo
business_object_idNo
business_object_typeNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description doesn't need to restate safety. It does add behavioral context by framing the parameters as filters for a listing operation. It doesn't disclose ordering, completeness, or pagination behavior, but with annotations covering the read-only profile, the additional burden is limited.

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 front-loaded sentence that immediately identifies the tool's purpose, followed by a compact list of filter dimensions. There is no filler or repetition of schema field names; every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 optional parameters, no output schema, and low schema coverage, the description is too thin to fully orient an agent. It does not explain how filters combine, whether results are paginated, what the default limit is, or what fields appear in the response. An agent could call it, but it would be guessing about pagination and output structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 11%, so the description carries meaningful weight for parameters. It maps most filter parameters to conceptual dimensions ('run, node, source, kind, external_id, business object'), which is helpful. However, it omits business_object_type and says nothing about limit or cursor semantics beyond what the schema's cursor description already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'List external receipts.' The filter list adds useful scoping, and 'external' helps distinguish this from receipt creation and retrieval tools. It stops short of a 5 because it doesn't explicitly contrast with siblings like invariance_receipt_get, but the operation is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by saying 'Filter by run, node, source, kind, external_id, business object,' which tells an agent what inputs are acceptable. However, it provides no guidance on when to choose this tool over invariance_receipt_get or invariance_receipt_create, nor does it mention pagination behavior or default limits. The context is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_recipe_getA
Read-only

Get a recipe by ID or slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRecipe ID or slug.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description adds no new behavioral context. It does not mention error handling, response format, or side effects. Since the read-only nature is covered by annotations, the description is not required to repeat it, but it also adds nothing beyond the obvious.

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, concise sentence with no filler. It is front-loaded with the action and resource, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with a single required parameter and no output schema, the description adequately covers the essential information: what it does and how to identify the recipe. It does not need to elaborate on return format for such an operation, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% — the input schema already documents the 'id' parameter as 'Recipe ID or slug.' The description does not add any additional explanation about the parameter, so it provides no value beyond what the schema already offers. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('recipe'), and how to identify it ('by ID or slug'). It distinguishes from sibling tools like invariance_recipe_list (which lists) and invariance_recipe_update (which modifies), so an agent can easily tell what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives the basic action but provides no explicit guidance on when to use this tool versus alternatives like invariance_recipe_list or invariance_recipe_update. The sibling names imply that this is for fetching a single recipe, but no selection criteria or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_recipe_listA
Read-only

List built-in operational-check recipes (registry of controls). Promote one into a guardrail via invariance_guardrail_create.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, covering the safety profile. The description adds the 'built-in' and 'registry of controls' context, but it does not disclose behavioral details such as pagination behavior or output shape, which is acceptable given the annotations carry the main burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler. The core listing purpose is front-loaded, and the promotion path is given in a single clear follow-up sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with no required parameterscing and a cursor schema description, this is mostly complete. It tells the agent what the tool lists and what to do next, though it omits any hint of return value fields, which would be more important given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: cursor is described in the schema, but limit is not, and the tool description mentions neither parameter. Since the description adds no parameter-level meaning and does not compensate for the undocumented limit, this falls short despite the parameter name being somewhat self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('List'), resource ('built-in operational-check recipes'), and clarifies scope with 'registry of controls'. It also distinguishes the tool by pointing to the promotion workflow via invariance_guardrail_create, separating it from recipe-specific tools like get/update.

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 makes the primary use clear and explicitly directs the agent to invariance_guardrail_create for the follow-up action. However, it does not state when not to use this tool or contrast it with invariance_recipe_get or invariance_guardrail_list, so exclusions are missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_recipe_updateB

Patch a recipe (enabled, default_mode).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
enabledNo
default_modeNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=false and destructiveHint=false. The description adds that the mutation is scoped to enabled and default_mode, implying id is an identifier rather than a patchable field. It does not disclose side effects or result behavior, but it does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tight sentence with no filler. The parenthetical list of fields is directly relevant and front-loaded, making efficient use of the space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple enough that this minimal description is minimally viable, especially with annotations and the schema's enum. However, the absence of output schema, usage guidance, and parameter explanation keeps it from being fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description only echoes the property names in parentheses without explaining their meaning. It adds minimal value by signaling which fields are patchable, but it does not compensate for the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Patch'), a clear resource ('a recipe'), and enumerates the affected fields ('enabled, default_mode'). This cleanly differentiates the tool from sibling read operations such as invariance_recipe_get and invariance_recipe_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives, when it should not be used, or what prerequisites apply. The description relies entirely on inference from the tool name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_review_claimA

Claim a pending review for the calling agent — sets status to "claimed" so other agents do not pick it up. Pair with invariance_review_resolve when done, or invariance_review_unclaim to release.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
notesNoOptional note explaining why or under what context the review is being claimed.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations by specifying that the review's status becomes 'claimed' and that this prevents other agents from picking it up, the calling agent is thereby tied to the claim. It stops short of describing failure cases such as when the review is already claimed or whether permission/ownership constraints apply, but the core mutation is fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first sentence tells what the tool does and its side effect, the second handles lifecycle. The purpose and state effect are front-loaded, and the sibling references are compact. A small amount of detail about failure cases could be added without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter claim operation, the main intent and effect are covered. However, since there is no output schema, the description does not mention what the tool returns, nor does it cover edgecases such as already-claimed reviews, non-pending reviews, or concurrency conflicts. It is enough to make the correct call in the common case, but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only describes notes, not the required id, and the description doesn't explicitly map id to the pending review it mentions. The phrase 'claim a pending review' makes the intent of the id inferable, but the description does not directly reinforce its meaning, format, or required identity. The id's semantics are under-specified relative to the 50% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('claim'), names the resource ('pending review'), and states the concrete effect ('sets status to claimed'). It also explicitly names the sibling tools (resolve, unclaim) that handle later lifecycle steps, so the tool is clearly distinguished from them without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use the tool (for pending reviews) and how it fits in the workflow: pair with invariance_review_resolve when done or invariance_review_unclaim to release. It could be stronger by explicitly saying not to use it for already-claimed reviews or for read-only inspection, but the lifecycle guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_review_getA
Read-only

Get a review by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already disclose the central behavioral property (non-mutating). The description adds no further behavioral context, such as error scenarios (not found), ownership/auth requirements, or the shape of the returned review. Despite the lower burden due to annotations, the description offers no incremental behavioral disclosure and relies entirely on the structured hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one clean sentence that states the action and the parameter, has zero filler, and front-loads the verb and resource. It is appropriately terse for an operation that takes a single ID and returns a review object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple GET-by-ID operation, the description tells an agent exactly what to call if it already knows the ID. However, no output schema exists and the description does not explain the return contract (the review's structure) or behavior when the ID is invalid/not found. Given the low complexity, this is not fatal, but the contract remains incomplete for an agent that needs to consume the result reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 only defines an 'id' string with no description (0% coverage). The phrase 'by ID' clarifies that the id is the review identifier, which adds slight semantic value beyond the bare schema, but it does not describe the ID's format, constraints, or uniqueness requirements. For a single self-explanatory parameter, this is minimally sufficient.

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 exact verb (Get), resource (review), and the lookup key (ID). This is a specific and unambiguous purpose, and it clearly distinguishes the tool from sibling tools like invariance_review_list or invariance_review_resolve without requiring opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that the tool should be used when you have a known review ID and need that single object, but it never explicitly says that, nor does it mention alternatives like invariance_review_list for browsing reviews. The guidance is left to inference, with no when/not-to-use instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_review_listA
Read-only

List reviews (work items requesting agent/human adjudication of a finding or run) in the queue, paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotated readOnlyHint already signals that this is a safe read operation, so the description only needs to add contextual behavior. It adds 'in the queue' and 'paginated', but does not disclose ordering, default limit, or whether all review statuses are included. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the verb and resource, defines the domain term, and states the pagination behavior. There is no filler and every clause contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple paginated list tool with read-only annotations, the description is nearly sufficient: it names the resource, scope, and pagination, and the schema covers cursor mechanics. It does not describe the item shape or sort order, but with no output schema these are minor gaps for an agent selecting and invoking the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds the pagination context that connects limit and cursor, but it does not explain limit's default behavior or enumerate expected values. The cursor parameter is already well documented in the schema, so the agent can invoke the tool, though the description does not meaningfully compensate for the incomplete parameter coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific action ('List'), the resource ('reviews'), and the semantic scope ('work items requesting agent/human adjudication of a finding or run'), which clearly separates this from related tools like invariance_review_get or invariance_finding_list. The parenthetical definition removes ambiguity about what counts as a review.

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 makes the intended use clear: retrieve the queue of review work items, with pagination. It does not explicitly name exclusions or alternatives such as invariance_review_get for a single review, but the queue/list framing gives sufficient context for an agent to select it over mutation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_review_resolveA

Close a review by recording a decision: "passed" (looks good, no action), "failed" (issue confirmed, should not ship), or "needs_fix" (issue confirmed, fix-and-retry).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
notesNoOptional rationale for the decision.
decisionYesOutcome: passed | failed | needs_fix

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds value by explaining the meaning of each decision value, which is behavioral context beyond annotations. It does not disclose potential side effects (e.g., whether the review becomes immutable or triggers notifications), leaving some transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the primary action ('Close a review') and immediately defines the decision options. There is no wasted wording, and it achieves high information density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has three parameters and no output schema, and the description covers the core action and decision meanings. However, it does not mention any prerequisites (e.g., the review must be claimed) or what happens after closing, which could be important for correct usage. For a simple write operation, this is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% (decision and notes have descriptions; id does not). The description explains the decision enum meanings, which enriches the schema. However, it does not clarify what 'id' refers to (presumably the review ID), and it does not add detail to 'notes' beyond the schema. With coverage above 50%, the baseline is 3, and the added decision semantics justify this score.

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 clear verb ('Close a review') and a specific resource ('review'), and explicitly enumerates the three decision values with their meanings. This distinguishes it from sibling review tools like invariance_review_claim and invariance_review_unclaim, which handle other lifecycle steps.

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 implies the tool is used to finalize a review with a decision, and the decision semantics clarify the expected action. However, it does not explicitly name alternatives or state when not to use it (e.g., when a review is not yet claimed). The context is clear but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_review_unclaimA

Release a previously-claimed review back to "pending" so another agent can pick it up. Does not record a decision — use invariance_review_resolve for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
notesNoOptional note explaining why the review is being released.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the mutation/safety profile is partially covered. The description adds meaningful behavioral context beyond the annotations: it clarifies the state transition (claimed → pending), the fact that no decision is recorded, and the intended purpose (allowing another agent to pick it up). It does not mention side effects like whether notes are stored or whether any notification is sent, but the core behavioral traits are well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The first sentence states the action and outcome; the second sentence provides the critical exclusion and routes to the sibling. Every word earns its place, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description is nearly complete. It explains the state transition, the purpose, and the alternative. The only minor gap is that it doesn't explicitly state what the response looks like or whether the operation can fail (e.g., if the review is not currently claimed), but given the tool's simplicity and the annotations covering safety, this is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: the 'id' parameter has no description in the schema, while 'notes' has a description. The tool description does not add parameter-level detail beyond what the schema provides. However, the description's context ('previously-claimed review') implies that 'id' refers to the review ID, and 'notes' is optional. Since the schema covers half the parameters and the description adds minimal extra meaning, a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Release'), a specific resource ('a previously-claimed review'), and the resulting state ('back to pending'). It also explicitly distinguishes itself from the sibling invariance_review_resolve by noting it does not record a decision. This is a clear, specific purpose that an agent can act on without ambiguity.

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 when to use this tool: when releasing a previously-claimed review so another agent can pick it up. It also provides an exclusion: 'Does not record a decision — use invariance_review_resolve for that.' This directly routes the agent to the correct alternative, which is exactly what usage guidelines should do.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_failA

Close a run with failure — sets status to "failed" and stores the optional error string in metadata.error. Use this when the agent aborted due to an exception or unrecoverable error. For successful completion, use invariance_run_finish.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
errorNoShort error description, stored at metadata.error (e.g. exception message).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false (mutation) and destructiveHint=false. The description adds the specific side effects: sets run status to 'failed' and stores the error in metadata.error. This clarifies exactly what state changes occur. It doesn't mention reversibility or permissions, but given the simplicity and existing annotations, it covers the essential behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action and effect. It then provides usage context and the alternative tool. Zero fluff, every sentence earns its place. The structure is ideal for quick agent comprehension.

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 mutation tool with only two parameters, no output schema, and annotations covering mutation safety, this description is complete. It states the trigger, the effect, and the alternative. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: error has a description, id does not. The tool description repeats the error storage detail already in the schema (metadata.error) and adds nothing about id beyond it being a run identifier. For a simple id, this is adequate but doesn't go beyond schema. Baseline 3 is appropriate since coverage is moderate and the description offers no extra semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (close) and resource (run) with clear effects: sets status to 'failed' and stores optional error string in metadata.error. Explicitly distinguishes from sibling invariance_run_finish by naming it as the alternative for success. An agent can immediately understand what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit condition: 'Use this when the agent aborted due to an exception or unrecoverable error.' It also contrasts with successful completion via invariance_run_finish, giving a clear when-to-use and when-not-to-use. No ambiguity remains.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_finishA

Close a run successfully — sets status to "completed". Use this when the agent finished its work without errors. For failures, use invariance_run_fail instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only indicate non-read-only, non-destructive intent; the description adds the specific mutation behavior: the run's status is set to 'completed'. It also clarifies the success condition, which is useful state-change context beyond the annotation hints.

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 concise sentences front-load the action and outcome, then immediately provide usage and alternative routing. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter terminal action, the description covers purpose, success condition, and the failure alternative. It omits details like idempotency, invalid-ID behavior, or return value, but these are less critical given the tool's simplicity and clear state-change semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one required 'id' with no description, and schema coverage is 0%. The description never clarifies what 'id' refers to or what format/scope it expects, leaving the agent to infer that it is the run ID from the tool name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Close a run successfully') and states the exact outcome ('sets status to "completed"'). It also distinguishes itself from the failure-path sibling, so an agent can tell what this tool does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use this tool ('when the agent finished its work without errors') and names the alternative for the opposite case ('use invariance_run_fail instead'). This is strong routing guidance that leaves no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_forkA

Fork a run from a specific node — creates a new run that branches off the parent at from_node_id. Useful for "what-if" replays during agent debugging.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesParent run ID.
nameNo
metadataNoFree-form metadata as a JSON object string.
from_node_idYesNode in the parent run to branch from.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states that the tool creates a new run that 'branches off' the parent, which is meaningful behavioral disclosure beyond the annotations. It is consistent with readOnlyHint=false and destructiveHint=false. It could add more detail about whether the parent run is modified or whether the fork is immediately executable, but the core side effect is clearly communicated.

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: two sentences, front-loaded with the operation, followed by a practical use case. Every phrase earns its place, with no fluff or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderate-complexity tool with a clear schema and annotations, the description covers the essential purpose, mechanism, and use case. It is slightly incomplete in that it doesn't describe the return value or explicitly contrast with run-start tools, but nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents id, from_node_id, and metadata, providing 75% coverage. The description reinforces the role of from_node_id through 'branches off the parent at from_node_id' but does not add new semantics for name or metadata. This is adequate but not additive beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fork') and a concrete resource ('a run'), and explains the core mechanism: branching off the parent run at from_node_id. This clearly distinguishes it from sibling tools like invariance_run_start or invariance_create_run, which imply fresh run creation rather than forking an existing run at a node.

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 names an explicit use case: 'what-if replays during agent debugging.' This gives the agent clear context for when the tool is appropriate. However, it does not explicitly name alternatives or state when NOT to use it, such as when a fresh run is needed instead of a fork.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_getA
Read-only

Get details of an Invariance run (status, metadata, aggregate counts, timestamps).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRun ID, e.g. "run_abc123".

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations provide readOnlyHint=true and openWorldHint=true, indicating the operation is read-only and may have unknown side effects. The description adds value by outlining the specific information returned (status, metadata, aggregate counts, timestamps), which goes beyond the annotations. However, it does not disclose potential pagination or error behavior, but with the annotations covering safety, this is acceptable for a simple getter.

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 extremely concise, one sentence, and front-loads the purpose. It lists the key details returned without extraneous words. There is no fluff, making it efficient for an agent to read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 getter tool with one parameter and no output schema, the description is sufficiently complete. It specifies what information is returned and the read-only nature is implied by annotations. The only minor gap is lack of explicit comparison with sibling run tools, but that doesn't prevent correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for the only parameter 'id', which is well-documented. The description does not add further parameter detail, but since the schema is complete, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves details of an Invariance run and lists the specific details included: status, metadata, aggregate counts, timestamps. It is distinct from sibling tools like invariance_run_list (which lists runs) and invariance_run_metrics (which specifically gets metrics), though it doesn't explicitly differentiate itself from these siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating what it retrieves, but does not explicitly state when to use it vs. alternatives such as invariance_run_metrics or invariance_run_llm_calls. With many sibling run-related tools, more explicit guidance would help an agent select the right one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_inspectA
Read-only

Composite triage view for a run — fetches run, metrics, narrative, recent nodes, and open findings in parallel and returns {run, metrics, narrative, recent_nodes, open_findings}. Mirrors inv run inspect. Best first call when an agent is asked to debug a run.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
limitNoMax recent_nodes returned (default 50).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so no contradiction. The description adds useful behavioral context beyond annotations: that fetches are performed in parallel and that the result is a composite object with specific keys. This is more than a bare restatement of the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, all information-dense: the first defines the composite purpose, the second gives a CLI mirror for recognition, and the third provides usage guidance. No wasted words and the primary purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a composite tool with no output schema, the description specifies the exact return keys ({run, metrics, narrative, recent_nodes, open_findings}), covers the parallel fetch behavior, and provides usage context. Parameter details are left to the schema, which covers 'limit' sufficiently and 'id' is self-evident from the tool name, so nothing critical is missing for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50% (only 'limit' has a description). The tool description adds no parameter-level meaning: it does not explain that 'id' refers to the run ID or that 'limit' controls recent_nodes count, though the latter is already covered in the schema. The agent gets minimal additional help beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pairing ('Composite triage view for a run') and enumerates exactly what it fetches: run, metrics, narrative, recent nodes, and open findings. This clearly differentiates it from singleton siblings like invariance_run_get or invariance_run_metrics by positioning it as the composite view.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states 'Best first call when an agent is asked to debug a run,' giving a clear trigger context. It does not explicitly name alternatives or state when not to use it, but the composite nature and debug-first positioning sufficiently guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_listB
Read-only

List runs visible to the calling agent in reverse-chronological order (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that the tool is read-only and operates in an open world, so the description's main added value is the 'visible to the calling agent' and 'reverse-chronological order' details. It does not disclose response shape or the presence of repeated pagination behavior beyond what the schema and 'paginated' imply.

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, front-loaded sentence with no redundant words. Every piece of information — resource, scope, ordering, pagination — is packed into one short statement, making it easy to scan and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 basic read-only list tool with no output schema, the description conveys enough about scope and pagination to be useful. It could be more complete by hinting at the response structure or the need to recurse with 'cursor', but this is a minor standard for such a simple operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds only the vague word 'paginated'; it does not explain how 'limit' controls page size or how 'cursor' is used beyond the schema's own description of the cursor. With 50% schema coverage, the description should compensate for the undocumented 'limit' parameter, but it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List'), the resource ('runs'), a scoping qualifier ('visible to the calling agent'), and an ordering/pagination detail. However, it does not explicitly differentiate itself from the very similar sibling 'invariance_list_runs', so it stays just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool instead of the many run-related siblings or when not to use it. The qualifier 'visible to the calling agent' provides context, but no exclusion or alternative is mentioned, so the agent is left to infer usage independently.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_llm_callsA
Read-only

List LLM calls for a run in append order (paginated). Each entry includes model, tokens, cost, latency, and the underlying node_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged
run_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds valuable behavioral details: 'append order' and 'paginated' indicate the iteration pattern, and the enumerated fields (model, tokens, cost, latency, node_id) set expectations for response content. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with zero waste. The primary action is front-loaded, and the second sentence lists the included data fields. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated list tool with no output schema, the description provides the essential details: ordering, pagination, and the fields each entry contains. It doesn't explicitly state that responses include a next_cursor for subsequent pages, but this is strongly implied by the cursor parameter and 'paginated'. Overall, it is sufficient for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only cursor has a description). The description mentions 'paginated' which hints at the roles of limit and cursor, but it does not explicitly explain run_id or limit. While the parameter names are self-explanatory, the description does not compensate enough for the low coverage, though it adds marginal 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 states a specific verb ('List'), a precise resource ('LLM calls for a run'), and adds ordering ('append order') and pagination. It clearly distinguishes from siblings like invariance_run_get (run details) and invariance_run_metrics (run-level metrics) by specifying exactly what it returns and the included fields.

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 context for when to use this tool: when listing LLM calls for a specific run. It does not explicitly mention alternatives or exclusions, but the specificity of 'LLM calls for a run in append order' effectively communicates its niche among the many run-related tools, without needing to name them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_metricsB
Read-only

Aggregate metrics for a run: total_input_tokens, total_output_tokens, total_cache_read/write, total_cost_usd, llm_call_count, tool_call_count, error_count, total_latency_ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already convey that this is a safe read operation, so the description does not need to restate that. It adds value by listing the specific metrics returned, but it does not disclose any additional behavioral traits such as aggregation timing, error handling, or whether the metrics are computed live or stored.

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 sentence that leads with the core purpose and then lists the exact metrics. Every word earns its place, with no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned metrics, which is the most critical missing information. Combined with the single 'id' parameter and read-only annotations, an agent has nearly everything needed to invoke the tool correctly. Only a brief note identifying 'id' as the run ID would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only defines 'id' as a required string with no description (0% schema coverage), so the description carries the burden of explaining it. The phrase 'for a run' correctly implies that id refers to a run ID, but it does not explicitly state this mapping or provide any format guidance. This is minimally adequate for a single simple parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Aggregate metrics for a run') and enumerates the exact output fields, making the tool's purpose obvious. It is distinguishable from siblings like invariance_run_get or invariance_run_llm_calls by its emphasis on aggregate metrics rather than raw data, though it does not explicitly name any alternative tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus closely related siblings such as invariance_run_get, invariance_run_inspect, or invariance_run_llm_calls. The intended use case is implied by the description but never stated as a recommendation or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_node_type_metricsA
Read-only

Aggregate metrics for a single typed-node kind within a run (counts, latency stats, custom-field roll-ups).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesNode type as registered via defineNodeType / invariance_node_type_register.
run_idYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and openWorldHint=true, lowering the burden. The description adds useful detail about what is aggregated (counts, latency, custom-field roll-ups), but does not disclose behavior such as whether metrics are computed on demand, what happens for unknown types, or output pagination. A 3 is appropriate given annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, dense sentence that front-loads the action and scope, then specifies the metric categories. There is no filler or repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool, the description plus schema is nearly sufficient. It names the output dimensions (counts, latency stats, custom-field roll-ups) despite lacking an output schema. It could have mentioned invariance_run_node_types as a way to discover valid node types, but that is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: 'type' is documented via defineNodeType / invariance_node_type_register, while 'run_id' is just a bare string. The description adds conceptual meaning to 'type' by framing it as a typed-node kind with custom-field roll-ups, but it does not explain run_id semantics or how valid types are discovered. This is adequate but not compensating.

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 ('Aggregate') and names the resource ('metrics for a single typed-node kind within a run'), then enumerates the kinds of metrics produced: counts, latency stats, and custom-field roll-ups. This clearly distinguishes it from broader tools like invariance_run_metrics or invariance_metrics_overview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: you need aggregated metrics for one typed-node kind inside a run. However, it does not explicitly name alternatives or state when not to use this tool, leaving the agent to infer distinctions from sibling names such as invariance_run_metrics and invariance_run_node_types.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_node_typesA
Read-only

List the typed-node kinds present in a run (one row per registered type with a count). Pair with invariance_run_node_type_metrics for per-type aggregates.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds behavioral detail by specifying the return format (one row per type with a count) and scoping to a run, which is useful beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each earning its place: the first states the core function and output, the second recommends a complementary tool. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with a single parameter, the description provides enough context: what it returns, how it relates to a run, and a pointer to a sibling. The annotations cover safety, and the output format is described, so an agent can call it correctly without additional information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description carries the burden for parameter meaning. However, the description only implicitly refers to run_id via 'present in a run', adding no format, constraints, or examples. The parameter name itself is self-explanatory, but the description does not enrich it.

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 action (list), the resource (typed-node kinds in a run), and the output shape (one row per registered type with a count). It also distinguishes itself from the sibling invariance_run_node_type_metrics by noting that tool provides per-type aggregates, avoiding ambiguity.

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 suggests pairing with invariance_run_node_type_metrics for per-type aggregates, which indicates a complementary use case. While it does not enumerate all alternatives or exclusions, this guidance helps an agent decide between two closely related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_operational_graphB
Read-only

Get the operational graph for a run — entities, edges, findings, a completeness score (business_object_linked, policy_context_found, owner_found, approval_context_found, downstream_state_change_found), and a missing_evidence list naming the unsupported dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesRun ID, e.g. "run_abc123".

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, covering side-effect safety. The description adds value by disclosing the return composition (entities, edges, findings, completeness score, missing_evidence) and naming the completeness dimensions, but does not go beyond that into behavioral traits like pagination, performance, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, reasonably concise sentence that front-loads the primary action ('Get the operational graph for a run') and then lists the returned components. It is not overly long, though the parenthetical list of completeness dimensions adds a bit of density without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 there is no output schema, the description must convey the return structure. It lists the main components (entities, edges, findings, completeness score, missing_evidence) and names the completeness dimensions, which is adequate for an agent to understand what it will receive. However, it does not elaborate on the structure of entities/edges/findings, potential pagination, or how to interpret the missing_evidence list, leaving some ambiguity for a tool with this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a description for run_id with an example ('run_abc123'), and schema coverage is 100%. The tool description adds no additional meaning about the parameter beyond what the schema offers, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves the operational graph for a run, enumerating specific components (entities, edges, findings, completeness score, missing_evidence). This is a specific verb and resource, but it does not explicitly differentiate from siblings like invariance_run_get or invariance_run_inspect, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to choose this tool over alternatives. With many sibling run-related tools (e.g., invariance_run_get, invariance_run_metrics, invariance_run_inspect), the description gives no conditions, exclusions, or references to other tools, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_run_startA

Start a new Invariance run (the container for a sequence of nodes). The returned run is in status "open" — you must close it later with invariance_run_finish (success) or invariance_run_fail (error).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoHuman-readable run name shown in dashboards.
case_idNoCase (workflow instance) this run belongs to. Server inherits tenant_id/end_user_id from the case. Create one first with invariance_case_create.
metadataNoFree-form metadata as a JSON object string. Example: {"user_id":"u_42","workspace":"acme","risk_tier":"high"}
tenant_idNoOverride tenant_id (normally inherited from case). Your customer (the platform user / firm).
end_user_idNoOverride end_user_id (normally inherited from case). The human the workflow acts on behalf of.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false - so the agent knows this is a mutating, non-destructive action that creates a resource. The description adds the key behavioral fact that the run is returned in 'open' status and must be closed later. However, it does not detail the exact lifecycle implications beyond closing, such as what happens if the run is never closed. With annotations covering the mutation profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long with zero fluff. It front-loads the primary action ('Start a new Invariance run') and the container concept, then immediately states the crucial lifecycle requirement (must close it later). 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?

For a creation tool with no output schema, the description clearly defines the run's initial status and the critical close contract. It also references prerequisites (case creation) and inheritance of tenant/end_user. The only minor gap is not explaining that the run is a container for nodes (mentioned) - noting that node writing happens separately (e.g., invariance_node_write) could be beneficial, but the description is otherwise complete for an agent to call it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% description coverage for all 5 parameters, with clear descriptions including examples for metadata and the inheritance behavior for tenant_id/end_user_id. The description does not add extra parameter-specific details beyond what the schema already says. Given the high coverage, a baseline of 3 is correct.

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 starts a new Invariance run, which is a container for a sequence of nodes dropped in the open status. This distinguishes it from related tools like invariance_run_finish and invariance_run_fail, and from the sibling invariance_create_run, by emphasizing lifecycle management.

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 states that the returned run is in 'open' status and must be closed later with invariance_run_finish (success) or invariance_run_fail (error). It also mentions that a case must be created first and that tenant_id/end_user_id are normally inherited. 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.

invariance_run_verifyA
Read-only

Verify the cryptographic proof chain for a run — recomputes node hashes and Ed25519 signatures end-to-end. Returns {valid, node_count, head_hash, first_invalid_node_id, reason}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so no mutation is expected. The description adds valuable behavioral specifics: end-to-end hash and signature recomputation, plus the exact return shape including first_invalid_node_id and reason. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The action and main behavior are front-loaded, and the return structure is listed compactly. Every sentence contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, read-only annotations, and absence of an output schema, the description sufficiently equips an agent: it explains what happens, what is returned, and how invalid chains are surfaced. It omits potential error conditions and differentiation from invariance_verify_run, but remains largely complete for the tool's 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?

The input schema only defines 'id' as a string, and schema coverage is 0%. The description adds minimal meaning by indicating the id refers to a 'run', but provides no format, provenance, or required-value details. For a single obvious parameter this is adequate, though it doesn't fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Verify'), names the resource ('cryptographic proof chain for a run'), and details what verification entails (recomputing node hashes and Ed25519 signatures). It is clear and informative, though it does not explicitly distinguish itself from the similarly named sibling invariance_verify_run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when a run's cryptographic proof chain needs verification. However, it provides no explicit exclusions or alternatives, and given the near-identical sibling invariance_verify_run, an agent gets no guidance on how to choose between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_saved_view_createC

Create a saved query view over executions/events/runs/nodes/captures.

ParametersJSON Schema
NameRequiredDescriptionDefault
vizNo
nameYes
specYesQuerySpec as a JSON object string. Fields (all optional): fields (string[]), filters ([{"field","op":"eq|neq|in|gt|gte|lt|lte","value"}]), group_by (string), aggregation ("count|sum|avg|min|max|count_distinct"), aggregation_field (string), order_by (string), order_dir ("asc|desc"), limit (int). Example: {"filters":[{"field":"status","op":"eq","value":"open"}],"aggregation":"count"}
sourceYes
visibilityNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate readOnlyHint=false and destructiveHint=false, and the description's 'Create' is consistent with that. However, the description adds no behavioral context beyond the basic write action, such as whether the view is immediately persisted, requires a unique name, or has 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?

The description is a single, front-loaded sentence with no filler. It efficiently communicates the core operation and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With five parameters, no output schema, and limited annotations, the description is too sparse for an agent to confidently invoke the tool. It omits what a saved view is for, how visibility works, what the spec must contain, and what the result of creation is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does little to explain the parameters beyond indicating that the view is 'over executions/events/runs/nodes/captures', which maps to the source enum. Schema description coverage is only 20%, and while the spec property has a detailed schema description, the tool description itself does not clarify name, viz, visibility, or how they interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Create'), a concrete resource ('saved query view'), and the valid data sources. It clearly conveys the tool's purpose, though it does not explicitly differentiate itself from the related saved_view_get/list/update/run/delete siblings beyond the verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given for when to use this tool versus alternatives. There is no mention that this is for creating a new view rather than updating, running, or listing views, so an agent must infer usage from the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_saved_view_deleteB
Destructive

Delete a saved view by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description says 'Delete', which aligns with destructiveHint=true, but it adds no behavioral detail beyond the annotations: it does not state that the deletion is permanent, irreversible, or whether any other objects are affected. The annotation already carries destructive meaning, and the description adds only the resource name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, direct sentence: 'Delete a saved view by ID.' It is front-loaded, no filler, and the key action is the first word. For a one-parameter delete tool, this is concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple schema and annotations, the description is enough to confirm the operation, but it lacks context about consequences expected results, or where the ID can be obtained. The presence of destructiveHint eases this, but 'by ID' alone does not fully contextualize the deletion need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only repeats 'by ID', matching the schema property 'id' without explaining what the ID refers to, where to find it before deleting, or any expected format. This is minimal rescue and doesn't practically add beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses the specific verb 'Delete' and clearly identifies the resource type ('a saved view') and the operation mode ('by ID'). Among many invocation_saved_view_* siblings, this immediately stands apart as the destructive deletion operation versus create/get/update/run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to invoke vs an alternative, no prerequisites beyond the ID, and no statement about when not to use it. The sibling list includes saved_view_create/update/get, so an agent is left to infer that delete is only for removing, not for changing or reading.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_saved_view_getA
Read-only

Get a saved view by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and scope. The description adds no further behavioral context (e.g., what happens if the ID is not found or the response format), so it adds minimal value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with zero filler. It is appropriately concise for a simple get-by-ID operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and no output schema, the description is adequate but sparse. It does not mention the return structure or error behavior, which an agent might need to interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description merely restates 'by ID', which adds little beyond the schema's 'id' property name. No format, source, or validation details are provided, failing to compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb 'get', a clear resource 'saved view', and the key parameter 'by ID'. It distinguishes this tool from siblings like list, create, update, delete, and run, making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by ID' implies it should be used when a specific saved view ID is already known, contrasting with list for discovery. However, no explicit alternatives or conditions are given, leaving the agent to infer when to choose this over other saved-view tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_saved_view_listA
Read-only

List saved query views (name, source, spec, viz, visibility).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No contradiction with annotations. The readOnlyHint already signals safety, and the description adds value by disclosing the returned fields (name, source, spec, viz, visibility), but it does not address pagination, ordering, or scope of the listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. Every element contributes meaning: the operation, resource, and returned fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list operation, the description is reasonably complete: it identifies the resource and the returned fields. However, it leaves the meaning of terms like 'spec' and 'viz' implicit, and with no output schema, slightly more detail could help.

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 the schema is fully covered. The parenthetical field list refers to return contents rather than parameters, and with no parameters there is little for the description to add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'saved query views', and enumerates the fields returned. It is distinguishable from sibling tools like invariance_saved_view_get by its list semantics, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives such as invariance_saved_view_get, nor any exclusions or context. The intended usage is only implied by the word 'List'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_saved_view_runA

Run a query and return the result. Pass EITHER saved_view_id OR source+spec (exactly one).

ParametersJSON Schema
NameRequiredDescriptionDefault
specNoQuerySpec as a JSON object string. Fields (all optional): fields (string[]), filters ([{"field","op":"eq|neq|in|gt|gte|lt|lte","value"}]), group_by (string), aggregation ("count|sum|avg|min|max|count_distinct"), aggregation_field (string), order_by (string), order_dir ("asc|desc"), limit (int). Example: {"filters":[{"field":"status","op":"eq","value":"open"}],"aggregation":"count"}
sourceNoAd-hoc query source; requires spec.
saved_view_idNoRun a stored saved view by ID.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and destructiveHint, but the description adds almost no behavioral context: it does not disclose whether running a query persists data, increments usage, or has side effects. With readOnlyHint=false, the agent is left uncertain about mutation potential.

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 short sentences with no filler. The core action and exclusivity rule are both front-loaded, making it easy to consume.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the key invocation contract but omits any guidance on output shape, side-effect expectations, or expected return format — despite having no output schema. Given the richness of the schema, it is minimally complete but not fully contextual.

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 descriptions already document each field. The description adds crucial inter-parameter semantics with 'EITHER saved_view_id OR source+spec (exactly one),' clarifying a constraint that the flat schema alone does not enforce.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action as 'Run a query and return the result,' backed by the saved_view_id OR source+spec distinction. It does not explicitly differentiate from sibling tools like invariance_run_start or invariance_list_runs, but the purpose is still understandable and specific enough.

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 an explicit usage rule: pass exactly one of saved_view_id or source+spec. This is valuable and prevents invalid requests, though it does not discuss when to prefer this tool over related siblings like invariance_saved_view_get or invariance_run_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_saved_view_updateB

Patch a saved view (partial; only included fields change).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
vizNo
nameNo
specNoQuerySpec as a JSON object string. Fields (all optional): fields (string[]), filters ([{"field","op":"eq|neq|in|gt|gte|lt|lte","value"}]), group_by (string), aggregation ("count|sum|avg|min|max|count_distinct"), aggregation_field (string), order_by (string), order_dir ("asc|desc"), limit (int). Example: {"filters":[{"field":"status","op":"eq","value":"open"}],"aggregation":"count"}
sourceNo
visibilityNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate it's a write (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds that it's a partial patch, which is useful. However, it doesn't disclose error handling, permissions, or side effects beyond the patch. openWorldHint is not contradicted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence that leads with the core purpose. No filler or redundant phrasing. The partial-update behavior is stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters (1 required) and no output schema, the description is minimal. It doesn't cover parameter explanations, required id, return behavior, or common errors. Given the low schema coverage and mutation nature, more context is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 17% (only spec has a description), so the description should compensate for the other five parameters. It does not mention any of them or explain how they relate to the partial update. It adds no semantic value beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Patch') and the resource ('a saved view'), and specifies it's a partial update. It distinguishes from create/delete via 'patch' semantics, though it doesn't explicitly say it operates on an existing view. The phrase 'only included fields change' adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus the sibling create or delete tools. It doesn't mention that the view must already exist, nor any prerequisites or context. The description focuses on behavior rather than usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_session_append_noteA

Append a freeform text note to an existing session as a custom event with payload {text}. USE THIS WHEN: jotting a thought during a Claude Code task ("trying approach X next"), capturing a meeting takeaway, annotating a screen recording, or recording a partial transcript chunk from microphone capture. The note becomes part of the company brain timeline for that session.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesNote text. Plain text or markdown.
session_idYesTarget agent-session ID.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it a write operation (readOnlyHint=false, destructiveHint=false). The description adds that the note becomes a custom event and part of the 'company brain timeline,' which clarifies the effect beyond annotations. It doesn't mention prerequisites like session existence, but that's a minor omission for a simple append.

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 plus a compact list of use cases. It is front-loaded with the action and technical detail, then provides concrete usage scenarios. Every element earns its place, with zero fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter append with no output schema, the description covers the what, when, and effect. It lacks explicit return-value expectations or failure modes, but given the tool's simplicity and the annotations covering mutation safety, this is a minor gap. The concrete use cases make it sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both `text` and `session_id` already described. The description reiterates 'freeform' and 'existing session,' which adds no new meaning beyond the schema. With full schema coverage, the baseline of 3 is appropriate; the description does not compensate for any missing semantic 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 opens with a specific verb-resource pair: 'Append a freeform text note to an existing session' and details the technical mechanism ('as a custom event with payload {text}'). It lists concrete use cases (jotting thoughts, meeting takeaways, screen annotations, transcript chunks) that clearly differentiate it from sibling tools like session creation, run attachment, or KB summary recording.

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 'USE THIS WHEN:' section enumerates four specific scenarios, leaving no ambiguity about intended usage. It implicitly contrasts with alternatives by focusing on freeform text notes rather than structured attachments or summaries, guiding an agent to the right tool without mentioning exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_session_attach_runA

Attach an existing run to an existing agent-session (PATCH). USE THIS when a Claude Code task that started a session later starts producing a run — call this to link the run's graph back to the session timeline so the brain can correlate transcript/notes with operational nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesRun ID to attach.
session_idYesAgent-session ID to update.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read-only, non-destructive operation. The description adds value by specifying the PATCH semantics and the effect: linking the run's graph back to the session timeline for correlation. It does not contradict annotations and gives useful behavioral context beyond the structured data.

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 fluff. The core action and HTTP method are front-loaded, followed by a precise usage trigger and outcome. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter attach operation, the description fully covers what the tool does, when to use it, and why it matters. Annotations cover safety and world-openness. No output schema exists, and the description provides enough context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters as 'Run ID to attach' and 'Agent-session ID to update.' The description adds conceptual context (run's graph, session timeline) but does not provide additional format, syntax, or edge-case semantics. 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 uses a specific verb-resource pair ('Attach an existing run to an existing agent-session') and adds the HTTP method PATCH. It clearly distinguishes this from sibling session tools (like append_note) and run lifecycle tools by focusing on linking an existing run to an existing session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the use case: 'USE THIS when a Claude Code task that started a session later starts producing a run.' It provides clear context and rationale (linking the run's graph to the session timeline), though it does not name alternatives or explicitly state when not to use it. Since no sibling tool does this exact job, the exclusion is less critical.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_session_createA

Open a new agent-session — the canonical container for an operator's bounded chunk of work in the company brain. CALL THIS at the START of: a new Claude Code task (source='api'), a screen recording for a teammate (source='screen_recording'), a mic capture session (source='microphone'), a meeting (source='meeting'), ingestion of a Granola note (source='granola_note'), or a manual note-taking session (source='manual_note'). Events (transcript chunks, tool calls, screenshots, notes) are appended to this session via invariance_session_append_note or the events sub-route. Link a session to a run via agent_id+run_id (or call invariance_session_attach_run later).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoHuman-readable title for the session.
run_idNoOptional run ID to attach at creation time.
sourceYesWhat kind of activity stream this session represents. Use: - "api" for autonomous agent work, including a single Claude Code task / sub-agent invocation (one Claude Code session = one agent-session with source="api"). - "screen_recording" when capturing a human teammate's screen for the company brain. - "microphone" when capturing raw mic audio (e.g. a teammate thinking out loud at their desk). - "meeting" for a Zoom/Meet/in-person meeting with multiple participants. - "granola_note" when ingesting a Granola meeting note. - "manual_note" when a human or agent is jotting freeform notes into the brain.
agent_idNoOptional agent ID to associate with the session (for source="api" Claude Code work, this is the agent running the task).
metadataNoOptional metadata as a JSON object string. Example: {"participants":["alice@x.com"],"app":"granola"}
session_typeNoOptional finer-grained label, e.g. "claude_code", "standup", "1on1", "design_review".
external_session_idYesStable client-supplied ID for dedup (e.g. the Claude Code conversation ID, the meeting calendar event ID, the Granola note ID, the screen-recording file UUID). Reusing the same external_session_id for the same source returns the existing session.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, the description discloses dedup/upsert behavior with external_session_id + same source returns existing session, and explains that events/transcripts are appended through other routes. It also communicates the write semantics consistent with readOnlyHint=false without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is substantive but each sentence moves the agent forward: purpose, when to call, how it relates to event append, and linking options. It's longer than minimal, but it's accountable for 7 parameters and multiple sibling alternatives, so the length is justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description provides enough usage context: how to create, when to create, the dedup contract, and how to tie into runs. The main omission is an explicit description of the return value, but the purpose and parameters are largely covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds some context around source semantics and explains linking via agent_id+run_id or attach_run later, but most param semantics are already fully documented in the schema, so the additional value is modest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states 'Open a new agent-session', giving a specific verb and resource, and immediately frames it as 'the canonical container' for a bounded work chunk. It further distinguishes the tool from its siblings by enumerating the six source contexts and contrasts it with append and attach operations.

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 'CALL THIS at the START of' and lists six concrete use cases (api, screen recording, mic capture, meeting, granola note, manual note), giving clear contextual guidance. It also names alternatives like invariance_session_append_note and invariance_session_attach_run, but it doesn't explicitly state when not to create a session, just implies it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_session_getA
Read-only

Fetch a single agent-session by ID, including its source, timestamps, attached run/agent, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSession ID.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds value by specifying the fields returned (source, timestamps, attached run/agent, metadata), which is useful behavioral context beyond the annotation. No side effects are implied, consistent with a fetch 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?

A single, front-loaded sentence that states the action and resource immediately, with no redundant words. Every phrase ('including its source, timestamps, attached run/agent, and metadata') adds useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only fetch with one parameter and no output schema, the description is complete. It tells the agent what the tool does, what it returns, and implicitly that no side effects occur. Nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the id parameter is described as 'Session ID.' The tool description does not add additional meaning about the parameter, so it meets the baseline for fully covered schema parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Fetch') and a precise resource ('a single agent-session by ID'), and enumerates the returned content (source, timestamps, attached run/agent, metadata). It clearly distinguishes from sibling tools like invariance_session_list, which retrieves multiple sessions.

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 context is clear: use when you have a session ID and need its full details. It does not explicitly state when not to use it or name alternatives, but the verb and resource make the intended use obvious, and no exclusions are needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_session_listA
Read-only

List agent-sessions, optionally filtered by source, agent, run, or status. Use this to find all Claude Code work for an agent (source="api"), all meetings ingested today (source="meeting"), or all screen recordings for a human teammate.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idNo
sourceNoWhat kind of activity stream this session represents. Use: - "api" for autonomous agent work, including a single Claude Code task / sub-agent invocation (one Claude Code session = one agent-session with source="api"). - "screen_recording" when capturing a human teammate's screen for the company brain. - "microphone" when capturing raw mic audio (e.g. a teammate thinking out loud at their desk). - "meeting" for a Zoom/Meet/in-person meeting with multiple participants. - "granola_note" when ingesting a Granola meeting note. - "manual_note" when a human or agent is jotting freeform notes into the brain.
statusNoFilter by session status (e.g. "open", "closed").
agent_idNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description need not restate that this is a read-only operation. It adds some behavioral context by explaining what the source enum means, but does not disclose additional traits like pagination, ordering, or result structure. The description does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, with the core purpose and filters front-loaded in the first sentence. The second sentence offers three concrete, distinct examples that immediately clarify real-world use, with zero filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward list operation with no output schema and read-only/open-world annotations, the description gives enough to decide when to call it and what filters to apply. It does not state the return format (e.g., a list of session objects) or any pagination behavior, but these are typical for such tools and not critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description covers source (with enum meanings) and status (with an example), but run_id and agent_id have no descriptions. The description mentions 'filtered by source, agent, run, or status' but adds no meaning for the undocumented parameters. With 50% schema coverage, the description fails to compensate for run_id and agent_id, though source is well-documented in the schema itself.

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 clear verb and resource: 'List agent-sessions' and enumerates the optional filters (source, agent, run, status). The concrete examples (source="api" for Claude Code work, source="meeting" for meetings, source="screen_recording" for human teammates) immediately distinguish it from sibling list tools like invariance_run_list and invariance_node_list, which target different entities.

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 three explicit, scenario-based usage examples ('Use this to find...'), which tell the agent when to invoke this tool. However, it does not explicitly contrast with alternatives or state when NOT to use it, leaving the agent to infer that session listing is the right choice for these scenarios rather than run or node listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_session_record_summary_to_kbA

Persist a summary of an agent-session as a knowledge-base page (so it becomes searchable, durable company brain content beyond the raw session timeline). USE THIS at the END of a Claude Code task, after a meeting wraps, or once a screen-recording has been reviewed — to capture the takeaways. The KB page is created under path 'sessions/' by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMarkdown body of the summary.
pathNoOptional KB path/slug. Defaults to "sessions/<session_id>".
titleYesTitle for the KB page.
summaryNoOptional one-line summary.
session_idYesAgent-session this summary describes.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read-only, non-destructive write. The description adds concrete behavioral context: it creates a durable, searchable KB page under 'sessions/<session_id>' by default, clarifying what the side effect actually produces.

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 no filler: purpose first, then usage timing, then default path. Every sentence earns its place and the most important information 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?

For a simple write/persist tool, the description together with full schema coverage and annotations gives an agent everything needed: what it does, when to use it, where it writes, and why the output is valuable. No return format is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 all 5 parameters, so the baseline is 3. The description only restates the default path already present in the schema and adds no additional meaning about body, title, summary, or session_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 states a specific action ('Persist a summary of an agent-session as a knowledge-base page') with a clear resource and purpose. It explicitly contrasts with the raw session timeline, making it easy to distinguish from session-logging and other KB 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 specifies when to use the tool: at the END of a Claude Code task, after a meeting wraps, or after a screen-recording is reviewed. It provides clear temporal context, though it doesn't name alternatives or 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.

invariance_signal_acknowledgeA

Acknowledge a signal — moves status from "open" to "acknowledged" (someone has seen it). Use invariance_signal_resolve to mark fully resolved.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already show readOnlyHint=false and destructiveHint=false, implying a non-destructive state change. The description adds valuable context by specifying the exact state transition (open to acknowledged) and the fact that it does NOT fully resolve (leaving it for resolve tool). This goes beyond the schema and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The immediate action is front-loaded, and the alternative is provided separately. Perfectly concise for the required 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 single parameter, no output schema, and annotations covering safety, the description is nearly complete. It could mention what happens to the signal after acknowledgment (e.g., remains in 'acknowledged' state) but the existence of invariance_signal_resolve implies that. Adequate for its 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 description coverage is 0%, so the description must explain the parameter 'id'. It says 'Acknowledge a signal' but does not explicitly state that 'id' is the signal identifier)Skip: The description doesn't add specific semantic details beyond the parameter name; it relies on the tool name to infer 'id' refers to a signal. Coverage is 0%, but with one obvious parameter, baseline 3 is fair.

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 action ('Acknowledge a signal') and the specific resource ('signal'), with a precise state transition from 'open' to 'acknowledged'. It explicitly contrasts with the sibling invariance_signal_resolve, making the tool's distinct 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use it ('Acknowledge a signal') and implicitly when not to use it by directing to invariance_signal_resolve for full resolution. It lacks explicit 'when not to use' exclusions (e.g., for already-acknowledged signals), but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_signal_emitA

Emit a manual signal (alert/notification) — typically attached to a run/node and used to flag noteworthy events for review or downstream automation. severity defaults to "info" if omitted. run_id/node_id auto-fill from INVARIANCE_RUN_ID/INVARIANCE_NODE_ID env vars when present.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoArbitrary signal payload as a JSON-encoded string (any JSON value). Example: {"observed_cost_usd":7.42,"threshold":5}
typeNoFree-form signal category, e.g. "policy_violation", "cost_spike", "pii_leak".
titleYesShort headline for the signal (shown in dashboards).
run_idNoRun this signal is associated with. Falls back to $INVARIANCE_RUN_ID.
messageNoLonger human-readable description.
node_idNoSpecific node this signal is attached to (within run_id). Falls back to $INVARIANCE_NODE_ID.
severityNoDefaults to "info" when omitted.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read-only, non-destructive operation. The description adds valuable behavioral details: severity defaults to 'info' and run_id/node_id auto-fill from environment variables when present. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences—first states the core purpose, second covers the default/fallback behavior. Every word earns its place, and critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters and no output schema, the description covers purpose, defaults, and environment variable fallbacks, which is sufficient for correct invocation. It does not discuss return values, but that is not required without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are already documented. The description enriches this by clarifying the severity default and the run_id/node_id fallback logic, going beyond the schema's static parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Emit') and resource ('manual signal (alert/notification)'), and adds context on typical attachment to a run/node and purpose ('flag noteworthy events'). It distinguishes itself from sibling signal tools (list/get/acknowledge/resolve) by emphasizing the manual emission action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 describes typical use cases (attached to runs/nodes, flagging events for review/downstream automation) but does not explicitly name alternatives or when not to use it. An agent can infer its role among signal siblings, but the guidance is not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_signal_getB
Read-only

Get a signal by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, covering the safety profile (no mutations). The description adds no behavioral context beyond the obvious 'Get', such as return format, error behavior, or potential external dependencies implied by openWorldHint. Since annotations already establish read-only nature, the description is not misleading but offers little added transparency.

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, short sentence with no redundancy or filler. It is front-loaded with the core action and resource, and every word earns its place. This is an example of appropriate conciseness for a simple getter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should explain what the returned signal object contains, but it says nothing about the response structure. It also omits any mention of error handling, prerequisites, or how the ID is generated or discovered. Given the tool's simplicity (one parameter), the description is under-specified and leaves the agent without critical context for interpreting results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter meaning. The phrase 'by ID' merely restates the parameter name 'id' without explaining what the ID refers to, what format it takes, or how to obtain it. It adds no substantive semantic value beyond what the parameter name already implies, failing to bridge the gap left by the sparse schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Get') and resource ('signal') and specifies the lookup mechanism ('by ID'), making the primary purpose unambiguous. However, it does not clarify what distinguishes a signal from other entities like cases or findings, and it does not differentiate from sibling getters such as invariance_case_get or invariance_finding_get beyond the resource name. This is clear but not fully differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like invariance_signal_list (to enumerate signals) or invariance_signal_emit (to create signals). It neither states a preferred use case nor exclusions, leaving the agent to infer that it should be used when a specific signal ID is already known. This is minimal and not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_signal_listA
Read-only

List signals visible to the calling agent (paginated, newest first).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNoopaque pagination token from previous response next_cursor; pass through unchanged

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's added value is modest: it discloses agent-visible scoping, pagination, and newest-first ordering. It does not contradict annotations, but it also does not mention return shape, signal status filtering, or pagination mechanics beyond what the schema cursor description states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence states the resource, scope, pagination, and ordering with no wasted words. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward read-only list tool with simple optional parameters, this description is nearly complete: it covers visibility, pagination, and ordering. It would be stronger if it noted what fields a returned signal contains or that next_cursor drives the next page, but the schema provides the cursor hint and this is a low-complexity 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?

The schema already documents the cursor parameter clearly ('opaque pagination token... pass through unchanged'), and limit is constrained by type/maximum. The description adds ordering context but does not explain limit defaults or how cursor/limit interact, so it only partially compensates for the 50% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List'), the resource ('signals'), and the scope ('visible to the calling agent'), plus ordering ('newest first'). It is specific enough to distinguish a list operation from signal_get/signal_emit, though it does not explicitly name those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'visible to the calling agent' gives some context for when this tool is appropriate, and 'paginated' implies browsing use. However, it gives no explicit guidance about when to choose this over related tools like signal_get, signal_acknowledge, or signal_resolve, so usage is mostly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_signal_resolveA

Resolve a signal — moves status to "resolved" (the underlying issue has been addressed).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the operation is a write (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds the specific status transition to 'resolved' and clarifies what that means, which is useful behavioral context beyond the annotations. No additional side effects are disclosed, but the annotations lower the burden.

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 sentence that communicates the action, the state change, and the semantic rationale. It is front-loaded with the verb and resource, with no wasted words or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but the description does not explain what the id parameter identifies, nor does it describe the return value or any side effects (e.g., whether resolution can be reversed or triggers notifications). The absence of an output schema and the sparse parameter documentation leave minor gaps, though the core action is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter 'id' with no description, and schema description coverage is 0%. The description does not mention the id parameter or clarify that it refers to the signal identifier, so the description fails to compensate for the schema's lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Resolve'), a clear resource ('a signal'), and the exact effect (moves status to 'resolved'). It also explains the meaning of 'resolved' as 'the underlying issue has been addressed', which distinguishes it from related signal operations like acknowledge, emit, get, or list.

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 a clear condition for when to use the tool: the underlying issue must have been addressed. It does not explicitly list alternatives or state when not to use it, but the context is sufficient for an agent to infer the appropriate trigger.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_verify_runD

Alias of invariance_run_verify

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It makes no mention of side effects, required permissions, return characteristics, or operational behavior. An agent cannot infer what effects invoking this tool will have.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is extremely brief, but this is under-specification rather than conciseness. It provides zero informative content, and no structure or front-loading of actionable details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single parameter, no output schema, and no annotations, the description is wholly inadequate. It fails to convey the tool's purpose, expected input semantics, or any operational constraints, making it nearly impossible for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter 'id' with no description, and schema description coverage is 0%. The description adds no semantic context for the parameter, failing to compensate for the schema's lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description only states 'Alias of invariance_run_verify' without explaining what the tool actually does. It does not name the resource or action being performed. This is a tautological pointer that requires the agent to look up invariance_run_verify, offering no independent purpose clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The alias reference does not include any conditions, prerequisites, or exclusions, leaving the agent with no context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_workflow_createB

Create a workflow definition with typed fields, expected steps, allowed outcomes, and custom metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
descriptionNo
display_nameYes
custom_metricsNoJSON array of metric widgets, e.g. [{"kind":"count","label":"Escalations","event_type":"support.escalated"}].
expected_stepsNoJSON array of expected workflow steps, e.g. [{"type":"triage","required":true}].
expected_fieldsNoJSON array of typed fields, e.g. [{"name":"priority","type":"enum","enum":["p0"]}].
allowed_outcomesNoJSON array of allowed outcomes, e.g. [{"value":"resolved","kind":"success"}].

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only echoes the obvious 'Create' action, which aligns with annotations (readOnlyHint=false, destructiveHint=false). It adds no behavioral details such as idempotency, validation rules, error behavior, or what happens on duplicate keys. Given this is a write operation, more transparency would be expected, but the description stays at surface level.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently lists the relevant components without redundancy. It is front-loaded with the main verb and resource. While it could be more structured (e.g., mentioning required fields), it avoids fluff and is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create operation with no output schema, the description covers the core purpose but omits details like return value, error conditions, and requirement that 'key' and 'display_name' are mandatory. Given the tool has 7 parameters and some are JSON strings requiring format knowledge (which the schema partially covers), the description could be more thorough but is not severely lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 provides descriptions for four parameters (custom_metrics, expected_steps, expected_fields, allowed_outcomes) with JSON examples, covering 57% of parameters. The description reiterates these names but adds no additional semantic value. For the three parameters without schema descriptions (key, display_name, description), the description does not compensate, so it remains at a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'workflow definition', and enumerates the component types it handles (typed fields, expected steps, allowed outcomes, custom metrics). This distinguishes it from workflow_update/delete/list/get, though it does not explicitly name a differentiating sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The name and description imply this is for creating a new workflow definition, and the presence of update/delete/list siblings makes the use case fairly obvious. However, the description does not explicitly state when to use this versus other workflow tools, nor any prerequisites such as required fields (key, display_name) or conditions for use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_workflow_deleteA
Destructive

Delete a workflow definition. Existing cases/runs/events are retained.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true and readOnlyHint=false, but the description adds valuable context: that existing cases/runs/events are retained. This goes beyond the annotations and clarifies the side-effect profile, which is crucial for a destructive 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?

Two sentences, zero waste. The primary action is front-loaded, and the retention note is a single clarifying clause. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter delete operation with annotations already declaring destructive behavior, the description is adequate. It explains the core action and the most important side effect. It does not cover error cases (e.g., key not found) or prerequisites, but these are minor for such a straightforward tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does not explain what the 'key' parameter refers to beyond its name and type. The agent must infer that 'key' identifies the workflow, which is not explicitly stated. The description adds no semantic value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete') and resource ('workflow definition'), and the retention note distinguishes it from other workflow tools. It clearly identifies the operation's scope and differentiates from sibling tools like invariance_workflow_update or invariance_workflow_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you need to remove a workflow definition) but does not explicitly state when to use it versus alternatives, nor does it mention any prerequisites or exclusions. The retention clause is behavioral context rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_workflow_event_createA

Record a semantic workflow event on a case (e.g. "refund.issued", "approval.approved", "human.handoff"). Links case/run/node evidence + external refs and is bridged into DNA. Pass idempotency_key to make external retries safe.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesDotted semantic type, e.g. "refund.issued".
case_idYesCase the event belongs to.
payloadNoJSON object of event detail, e.g. {"amount_usd":42,"ticket":"ZD-1001"}.
actor_idNoFree-form actor id (user, run, slack user, ...).
actor_typeNo
occurred_atNoISO timestamp the fact happened. Defaults to now.
evidence_refsNoJSON array of non-node evidence refs, e.g. [{"kind":"ticket","id":"ZD-1001","url":"https://..."}]. Use kind:"external" for external object refs.
idempotency_keyNoDedup key for repeated external events; re-sending returns the original event.
evidence_node_idsNoJSON array of node ids in the runs/nodes evidence layer.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false (write) and destructiveHint=false, but the description adds valuable behavioral context: it links case/run/node evidence and external refs, bridges into DNA, and advises passing idempotency_key for safe retries. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with no fluff. The primary action and examples are front-loaded, and the idempotency note is placed last. Every sentence earns its place, and the description is well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write operation with 9 parameters and no output schema, the description covers the essential aspects: purpose, evidence linking, DNA bridging, and retry safety. It doesn't detail every parameter, but the schema handles that. It could mention return value, but that's minor for a write tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 89%, so most parameters have descriptions. The description adds extra value by highlighting idempotency_key for safe retries and providing example event types, which aids in correct usage. It doesn't repeat schema details but 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 starts with a specific verb and resource: 'Record a semantic workflow event on a case', with concrete examples of event types. It clearly distinguishes this tool from siblings by emphasizing 'workflow event' and its DNA bridging, making it unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: when to record a semantic workflow event, and how it links evidence and is bridged into DNA. It doesn't explicitly name alternatives like invariance_case_event_create, but the purpose is specific enough that an agent can infer when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_workflow_event_listB
Read-only

List semantic workflow events across cases. Filter by case, workflow, tenant, actor, type, or time window.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoOnly events before this ISO timestamp.
fromNoOnly events at or after this ISO timestamp.
typeNoDotted semantic event type.
limitNo
cursorNoopaque pagination token; pass through unchanged
case_idNo
actor_idNo
tenant_idNo
actor_typeNo
end_user_idNo
workflow_keyNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and non-exhaustive nature are covered. The description adds little behavioral context beyond the filterable fields; it does not disclose pagination behavior, default ordering, or the fact that openWorldHint implies partial results. For a list tool, this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It states the core action and the main filtering capability efficiently, earning full marks for conciseness and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with 11 optional parameters and no output schema, the description is minimal. It omits essential usage details like pagination (cursor handling), result limits, default ordering, and clarification of ambiguous fields. Given the openWorldHint, an agent needs guidance on how to iterate over results, which is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 36% (4 of 11 params have descriptions). The description names filter categories (case, workflow, tenant, actor, type, time window) which roughly map to parameters, but it does not clarify ambiguous distinctions like actor_id vs actor_type vs end_user_id, or what workflow_key vs workflow means. It partially compensates but leaves several parameters under-documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('semantic workflow events') with a scope ('across cases'), which is clear. However, it does not explicitly differentiate from sibling tools like invariance_case_events_list or invariance_workflow_observability_list, so an agent might not immediately know which is the right choice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists available filter dimensions (case, workflow, tenant, actor, type, time window), giving some sense of when this tool is appropriate for cross-case queries. However, it offers no explicit guidance on when to prefer this over alternative list tools, no exclusions, and no mention of prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_workflow_getA
Read-only

Get one workflow definition by workflow key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesWorkflow key, e.g. "support.escalation".

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral detail beyond what the annotations already provide: readOnlyHint and openWorldHint. It does not mention error behavior for missing keys, response shape, or anything else about side effects, so it contributes little transparency beyond the structured metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, front-loaded with the action and resource. Every word contributes value for a tool this simple.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only getter with no output schema, the description is adequate. It says the operation returns a workflow definition, and the schema covers the key. It could mention error behavior or return structure, but the low complexity keeps the current text 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?

The only parameter, `key`, is already fully described in the schema with a concrete example ('support.escalation'). The description adds no extra semantics, but the schema does not need compensation because coverage is 100%. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('get'), resource ('workflow definition'), and a lookup method ('by workflow key'). It clearly distinguishes this from the workflow_list/create/update/delete siblings by emphasizing a single definition retrieval.

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 phrase 'one workflow definition by workflow key' makes it clear this is for retrieving a single workflow when the key is already known, versus listing all workflows. It provides clear context but does not explicitly name alternative tools or when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_workflow_listA
Read-only

List workflow definitions: typed fields, expected steps, allowed outcomes, and custom metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe read-only nature is established without needing the description. The description adds the useful detail that results are workflow definitions with schema-like fields, but it does not disclose pagination, ordering, or whether the full definition objects are returned. This is acceptable given the zero-parameter scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with a colon-delimited list of what the definitions contain. There is no filler, repetition, or unnecessary detail; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list operation with read-only annotations, the description is nearly sufficient. It names the resource type and its relevant contents. It could slightly improve by clarifying whether it returns summaries versus full definitions, but the sibling tools and the description together make the callable intent clear.

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 the baseline is 4. The description's mention of typed fields, expected steps, allowed outcomes, and custom metrics gives context about what the returned definitions contain, which indirectly informs callers what to expect even though no parameters need explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('List workflow definitions') and enumerates the meaningful contents: typed fields, expected steps, allowed outcomes, and custom metrics. This clearly differentiates it from sibling tools like invariance_workflow_get, invariance_workflow_create, and invariance_workflow_observability_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives such as invariance_workflow_get or invariance_workflow_observability_list. The word 'list' implies enumeration, but there is no when-to-use, when-not-to-use, or mention of alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_workflow_observability_executionsA
Read-only

List per-execution health for a workflow (status, stale flag, health, reasons, evidence mix, cost/tokens).

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_keyYesWorkflow key, e.g. "support.escalation".

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only, and the description's 'List' wording is consistent with that. The description adds useful behavioral context by naming the returned dimensions (status, stale flag, health, reasons, evidence mix, cost/tokens), going beyond the annotation alone.

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 front-loaded sentence with zero filler. It states the operation, the target resource, and the key returned fields in a compact, scannable format.

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 simple, one-parameter read-only listing tool with no output schema, the description covers the operation, the parameter usage implied by the schema, and the main return dimensions. Nothing essential for calling the tool correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the only parameter, workflow_key, already includes a concrete example ('support.escalation') in the schema. The tool description adds no additional parameter-level meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') with a clear resource ('per-execution health for a workflow') and enumerates the included data fields. This makes it easy to distinguish from workflow-level siblings like invariance_workflow_observability_list or invariance_workflow_observability_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is for per-execution health details rather than workflow-level or monitor-level observability. It does not explicitly name alternatives or exclusion conditions, but the context is specific enough that an agent can infer when to select it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_workflow_observability_getB
Read-only

Get the observability rollup for one workflow by key.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_keyYesWorkflow key, e.g. "support.escalation".

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral detail beyond what the annotations already declare (readOnlyHint=true, openWorldHint=true). It merely restates the function without disclosing edge cases, return format, or error behavior. With annotations covering the safety profile, the bar is lower, but the description still contributes almost nothing beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. It delivers the core purpose immediately and does not waste tokens. This is exemplary conciseness for a simple get-by-key operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, with one parameter and no output schema, and annotations are present. However, the description does not clarify what an 'observability rollup' contains or how the response is structured. Since there is no output schema, the agent must guess the return shape. For a read-only getter, this is a moderate gap, especially given the lack of alternative guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter is fully documented in the schema (workflow_key with an example). The description does not add any extra meaning or context about the parameter's format or constraints. Per the rubric, the baseline of 3 is appropriate when the schema carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (get), the resource (observability rollup), and the scope (one workflow by key). This distinguishes it from sibling tools like invariance_workflow_observability_list (multiple workflows) and invariance_workflow_observability_executions (execution-level details). However, it does not explicitly name these alternatives, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus its siblings. The description implies usage when you have a specific workflow_key and want the rollup, but it does not mention any exclusions or alternatives. This leaves the agent to infer selection logic from the name alone, which is insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_workflow_observability_listA
Read-only

List workflow observability rollups (per workflow_key: execution/open/closed counts, evidence mix, cost & token totals).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and open-world semantics. The description adds detail on the rollup contents (counts, evidence mix, cost/token totals), which is useful but does not go into pagination, ordering, or whether the list is exhaustive across all workflows. Given the annotations lower the bar, this is adequate but not rich – a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core purpose ('List workflow observability rollups') and then enumerates the content scope. Every word adds value, with no redundancy or filler. It 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?

Despite having no output schema, the description tells the agent exactly what fields each rollup includes (counts, evidence mix, cost & token totals), which is sufficient to set expectations. It does not mention pagination or sorting, but for a list tool without parameters, this is not critical. The presence of a sibling 'get' tool implies the list is a high-level overview, and the description covers the essentials.

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 the schema coverage is trivially 100%. There is nothing for the description to explain about parameters. Per the rubric, a baseline of 4 applies for 0-parameter tools, and the description appropriately avoids inventing parameter details. It does not add parameter semantics because 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 clearly states the verb 'List' and resource 'workflow observability rollups', then specifies the exact content of each rollup (per workflow_key: execution/open/closed counts, evidence mix, cost & token totals). This differentiates it from siblings like invariance_workflow_observability_get (which retrieves a single rollup) and invariance_workflow_observability_executions (which lists executions), leaving no ambiguity about what the tool returns.

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 implies usage: it's the list operation for workflow observability rollups, contrasting with the 'get' sibling. However, it does not explicitly state when to prefer this over alternatives or mention exclusions. The context is clear enough that an agent can infer its role among siblings, so it earns a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_workflow_updateA

Patch a workflow definition. Existing cases/runs/events keep their workflow_key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
descriptionNo
display_nameNo
custom_metricsNoJSON array of metric widgets, e.g. [{"kind":"count","label":"Escalations","event_type":"support.escalated"}].
expected_stepsNoJSON array of expected workflow steps, e.g. [{"type":"triage","required":true}].
expected_fieldsNoJSON array of typed fields, e.g. [{"name":"priority","type":"enum","enum":["p0"]}].
allowed_outcomesNoJSON array of allowed outcomes, e.g. [{"value":"resolved","kind":"success"}].

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-destructive mutation. The description adds a key behavioral guarantee: existing cases/runs/events keep their workflow_key, which is valuable context about the patch's impact. It doesn't mention auth requirements or rate limits, but the core behavioral trait is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action ('Patch a workflow definition') and immediately provides the most important behavioral guarantee. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 patch operation with 7 parameters and no output schema, the description is reasonably complete. It clarifies the non-destructive nature regarding existing cases/runs/events, which is the main risk an agent would worry about. It doesn't describe return values, but with no output schema and a patch operation, that's a minor gap. The openWorldHint annotation suggests other properties may exist, which is consistent with a patch operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 57%, with descriptions for custom_metrics, expected_steps, expected_fields, and allowed_outcomes. The description itself doesn't add parameter-level meaning beyond the schema. The 'key' parameter is required but its semantics are implied by the tool name. Baseline 3 is appropriate since the schema covers most parameters and the description doesn't need to repeat them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Patch') and resource ('workflow definition'), clearly indicating a partial update operation. It distinguishes itself from workflow_create and workflow_delete by the patch semantics, though it doesn't explicitly name those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for updating an existing workflow definition without affecting existing cases/runs/events. It doesn't explicitly state when to use this vs workflow_create or workflow_get, but the patch semantics and the invariance note provide some context. No explicit exclusions or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invariance_write_nodeD

Alias of invariance_node_write

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNo
outputNo
run_idYes
action_typeYes

TDQS

D1.3/5.0
Behavior1/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 behavioral disclosure. It merely points to another tool without revealing effects, side effects, required permissions, or any operational details. This is a significant gap for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely brief, but this is under-specification rather than conciseness. It packs no information beyond a reference, so its brevity does not serve the agent's needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has two required parameters and no output schema; the description fails to explain the tool's purpose, when to use it, or how parameters relate. It is entirely inadequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no explanation of the four parameters (input, output, run_id, action_type). The agent is left entirely to infer meaning from names, which is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description only states 'Alias of invariance_node_write', which indicates the tool is a synonym for another tool but does not describe what it actually does. The name hints at writing a node, but the description adds no functional clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the sibling invariance_node_write or any other alternative. The alias reference suggests interchangeability but does not explain the context or selection criteria.

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. 159 tool updatesv0.3.0
    • First observedcortex_ask
    • First observedcortex_get_job
    • First observedcortex_get_result
    • First observedcortex_job_runs
    • First observedcortex_launch
    • First observedcortex_list_jobs
    • First observedcortex_retry_job
    • First observedcortex_run_counterfactual
    • First observedcortex_run_eval
    • First observedcortex_run_job
    • First observedinvariance_agent_create
    • First observedinvariance_agent_get
    • First observedinvariance_agent_list
    • First observedinvariance_agent_me
    • First observedinvariance_agent_set_key
    • First observedinvariance_ask
    • First observedinvariance_capture_create
    • First observedinvariance_capture_get
    • First observedinvariance_capture_link
    • First observedinvariance_capture_links
    • First observedinvariance_capture_list
    • First observedinvariance_capture_unlink
    • First observedinvariance_capture_update
    • First observedinvariance_case_close
    • First observedinvariance_case_create
    • First observedinvariance_case_event_create
    • First observedinvariance_case_events_list
    • First observedinvariance_case_evidence
    • First observedinvariance_case_get
    • First observedinvariance_case_list
    • First observedinvariance_case_update
    • First observedinvariance_create_run
    • First observedinvariance_divergence_get
    • First observedinvariance_divergence_list
    • First observedinvariance_divergence_update
    • First observedinvariance_dna_accept_edge_candidate
    • First observedinvariance_dna_list_edge_candidates
    • First observedinvariance_dna_list_edges
    • First observedinvariance_dna_list_object_mentions
    • First observedinvariance_dna_list_objects
    • First observedinvariance_dna_promote_edge_candidate
    • First observedinvariance_dna_reject_edge_candidate
    • First observedinvariance_doctor
    • First observedinvariance_eval_case_create
    • First observedinvariance_eval_case_create_from_run
    • First observedinvariance_eval_case_list
    • First observedinvariance_eval_dataset_append_example
    • First observedinvariance_eval_dataset_create
    • First observedinvariance_eval_dataset_examples_list
    • First observedinvariance_eval_dataset_get
    • First observedinvariance_eval_dataset_list
    • First observedinvariance_eval_dataset_seed_suite
    • First observedinvariance_eval_experiment_compare
    • First observedinvariance_eval_experiment_run
    • First observedinvariance_eval_run_get
    • First observedinvariance_eval_run_results
    • First observedinvariance_eval_scorer_create
    • First observedinvariance_eval_scorer_list
    • First observedinvariance_eval_scorers_list_builtin
    • First observedinvariance_eval_suite_create
    • First observedinvariance_eval_suite_get
    • First observedinvariance_eval_suite_list
    • First observedinvariance_eval_suite_run
    • First observedinvariance_finding_get
    • First observedinvariance_finding_list
    • First observedinvariance_finding_update
    • First observedinvariance_get_run
    • First observedinvariance_guardrail_create
    • First observedinvariance_guardrail_get
    • First observedinvariance_guardrail_list
    • First observedinvariance_guardrail_promote
    • First observedinvariance_guardrail_update
    • First observedinvariance_kb_page_create
    • First observedinvariance_kb_page_delete
    • First observedinvariance_kb_page_get
    • First observedinvariance_kb_page_update
    • First observedinvariance_kb_pages_list
    • First observedinvariance_kb_session_append_message
    • First observedinvariance_kb_session_create
    • First observedinvariance_kb_session_delete
    • First observedinvariance_kb_session_list_messages
    • First observedinvariance_list_nodes
    • First observedinvariance_list_runs
    • First observedinvariance_memory_read
    • First observedinvariance_memory_write
    • First observedinvariance_metrics_agents
    • First observedinvariance_metrics_overview
    • First observedinvariance_monitor_create
    • First observedinvariance_monitor_evaluate
    • First observedinvariance_monitor_executions
    • First observedinvariance_monitor_findings
    • First observedinvariance_monitor_get
    • First observedinvariance_monitor_list
    • First observedinvariance_monitor_pause
    • First observedinvariance_monitor_preview_evaluator
    • First observedinvariance_monitor_preview_target
    • First observedinvariance_monitor_resume
    • First observedinvariance_monitor_update
    • First observedinvariance_narrative_get
    • First observedinvariance_node_list
    • First observedinvariance_node_write
    • First observedinvariance_operator_create
    • First observedinvariance_operator_get
    • First observedinvariance_operator_list
    • First observedinvariance_operator_me
    • First observedinvariance_receipt_batch
    • First observedinvariance_receipt_create
    • First observedinvariance_receipt_get
    • First observedinvariance_receipt_list
    • First observedinvariance_recipe_get
    • First observedinvariance_recipe_list
    • First observedinvariance_recipe_update
    • First observedinvariance_review_claim
    • First observedinvariance_review_get
    • First observedinvariance_review_list
    • First observedinvariance_review_resolve
    • First observedinvariance_review_unclaim
    • First observedinvariance_run_fail
    • First observedinvariance_run_finish
    • First observedinvariance_run_fork
    • First observedinvariance_run_get
    • First observedinvariance_run_inspect
    • First observedinvariance_run_list
    • First observedinvariance_run_llm_calls
    • First observedinvariance_run_metrics
    • First observedinvariance_run_node_type_metrics
    • First observedinvariance_run_node_types
    • First observedinvariance_run_operational_graph
    • First observedinvariance_run_start
    • First observedinvariance_run_verify
    • First observedinvariance_saved_view_create
    • First observedinvariance_saved_view_delete
    • First observedinvariance_saved_view_get
    • First observedinvariance_saved_view_list
    • First observedinvariance_saved_view_run
    • First observedinvariance_saved_view_update
    • First observedinvariance_session_append_note
    • First observedinvariance_session_attach_run
    • First observedinvariance_session_create
    • First observedinvariance_session_get
    • First observedinvariance_session_list
    • First observedinvariance_session_record_summary_to_kb
    • First observedinvariance_signal_acknowledge
    • First observedinvariance_signal_emit
    • First observedinvariance_signal_get
    • First observedinvariance_signal_list
    • First observedinvariance_signal_resolve
    • First observedinvariance_verify_run
    • First observedinvariance_workflow_create
    • First observedinvariance_workflow_delete
    • First observedinvariance_workflow_event_create
    • First observedinvariance_workflow_event_list
    • First observedinvariance_workflow_get
    • First observedinvariance_workflow_list
    • First observedinvariance_workflow_observability_executions
    • First observedinvariance_workflow_observability_get
    • First observedinvariance_workflow_observability_list
    • First observedinvariance_workflow_update
    • First observedinvariance_write_node

TDQS

C2.5/5.0

Scored across 159 tools

Disambiguation2/5

Several tools are explicit aliases (list_runs/run_list, create_run/run_start, write_node/node_write) and others intentionally overlap (capture_link vs capture_update, cortex_run_job vs cortex_run_eval/counterfactual, case_event_create vs workflow_event_create). These duplicates make it genuinely hard to know which tool to select despite mostly clear resource boundaries.

Naming Consistency3/5

The dominant invariance_<resource>_<action> pattern is readable and mostly snake_case, but there are many deviations: aliases invert the order (list_runs vs run_list), noun-phrase names appear (invariance_monitor_findings, invariance_run_node_types), and the cortex_* family follows its own conventions. It is consistent enough to guess, but not predictable across a 159-tool surface.

Tool Count1/5

159 tools is far beyond a well-scoped MCP server; the calibration guidance treats 50+ as an extreme mismatch. The count is inflated by aliases, overlapping wrappers, and many near-duplicate subdomain endpoints, making the toolset unwieldy regardless of individual tool quality.

Completeness3/5

Coverage is broad across runs, monitors, cases, evals, sessions, DNA, Cortex, and more, so core workflows exist. However, several subdomains have lifecycle dead ends: eval datasets/scorers/suites have create/read/append but no update/delete, agents/operators/captures lack update or delete paths, and monitors cannot be deleted. These are workable gaps but noticeable in a 159-tool API.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers