Skip to main content
Glama

From evidence source to verified action

Security teams rarely lack scanners. They lack one trustworthy view of what was scanned, what was discovered, which findings are actually connected to critical systems, who owns the fix, and whether the fix held.

agent-bom closes that loop with two honest entry paths:

Start from

First action

What produces inventory

A repository, image, SBOM, workstation, or MCP config

Run a local or CI scan—no connection required

The scanner reads the target and emits inventory, findings, provenance, and graph evidence together

AWS, Azure, GCP, Snowflake, Kubernetes, or another managed source

Add a read-only connection in the self-hosted control plane, then run or schedule a scan

The connection defines scope and credentials; the scan collects the source and creates the inventory snapshot

Both paths converge after collection: normalize evidence into the same Finding + UnifiedGraph contracts, correlate reachable risk, assign an owner and SLA, then re-scan to verify the result. Inventory is always the output of a named target or connected source—never unexplained preloaded data.

The product promise: start with one useful artifact today; keep the same evidence model as you add CI, connected sources, history, assignments, compliance exports, and runtime enforcement in your own environment.

Quick start · Evidence workflow · Integration capability matrix · Measured matcher proof · Control-plane architecture

See what needs fixing — and why

Prioritize. Start with the affected service, reachable asset, and recommended fix. Open the strongest path to inspect the relationships behind that conclusion.

These captures use the Reference evidence lab — modeled local infrastructure. They include real parser, scanner, and local gateway results; they are not customer evidence or live-cloud validation.

Investigate and act. Follow the ordered path from entry point to data asset. Switch to Graph or List, inspect a hop’s source evidence, or open the package remediation. Exact identifiers and receipts stay one click away. “Path verified” requires complete, fresh evidence for every directed, traversable hop; modeled infrastructure and runtime observations remain separately labeled.

The credential-free lab runs repository, CycloneDX, Kubernetes IaC, and MCP parsers plus the bundled advisory scanner for pillow@9.0.0 / CVE-2023-4863. Correlation connects the OCI digest, Kubernetes UID, MCP tool, workload identity, and local gateway receipts. An observed call and a separate opt-in block have independent receipts; neither is proof of a deployed remediation.

Run the reference lab · Capture protocol

Explore the product gallery

Related MCP server: agent-audit

Value by role

Role

Start here

Primary outcome

Developer / AI engineer

agent-bom scan .

See dependencies, secrets, IaC, agents, MCP, and whether Click, Flask, or FastAPI entry points can reach vulnerable packages before shipping

AppSec / product security

agent-bom agents --gha . --offline

Inventory remote actions and reusable workflows with their refs, source provenance, and CI-hardening findings

Cloud security

Add a read-only connection, then run a scan

Build scoped cloud, identity, and posture inventory with explicit coverage and provenance

Platform / DevOps

pip install 'agent-bom[ui]' && AGENT_BOM_NO_AUTH_ROLE=analyst agent-bom serve --persist ~/.agent-bom/control-plane.db

Schedule scans, centralize evidence, assign owners and SLAs, and verify remediation

GRC / audit

agent-bom report compliance-narrative scan.json

Export mapped evidence while preserving unavailable, partial, and not-assessed states

CISO / engineering leader

Open Architecture in the self-hosted graph

Compare observed Current state with modeled Proposed and Difference views; proposals remain labeled as not observed or deployed

Security engineering and GRC remain separate workflows: findings and reachability are not presented as audit certification. See product boundaries. GitHub Actions collection and credential requirements are documented in permissions; scenario truth boundaries are defined by the graph contract.

Quick start

Choose the smallest path that proves value. No account or control plane is required for repository, image, SBOM, workstation, or MCP configuration scans.

Path A — scan now, no connection

The offline sample completes without downloading an advisory database and shows the inventory, finding, reachable path, and remediation output shape.

pip install agent-bom
agent-bom scan --demo --offline

The sample intentionally contains a known-malicious package, so exit status 1 is expected and the printed report is complete. Scan a repository next:

agent-bom scan .

The repository scan shows inventory, findings, and reachable impact. agent-bom scan . and agent-bom scan -p . are the same command; PATH is an alias for --project.

Path B — connect a source, then scan

Use this path when the source is an account or platform rather than a local target. Start the customer-controlled control plane, open Connections, add the provider's read-only grant, and run the first scan. The browser flow defaults to an explicit first scan after verification; scheduled scans are an explicit operator opt-in.

pip install 'agent-bom[ui,aws]'
AGENT_BOM_NO_AUTH_ROLE=analyst agent-bom serve --persist ~/.agent-bom/control-plane.db

The explicit role applies to the generated loopback API key and browser sessions. analyst can run scans but cannot manage API keys. With no explicit role, the local bootstrap retains its admin default; non-loopback listeners still require configured authentication. Restart after changing the bootstrap role.

The example installs AWS collection support on the control-plane server. For Azure, GCP, or Snowflake, install agent-bom[ui,azure], agent-bom[ui,gcp], or agent-bom[ui,snowflake] instead. Install the selected provider extra before entering credentials; agent-bom[ui] alone does not include provider SDKs.

The explicit SQLite path keeps scan jobs, findings, compliance history, and graph inventory available together after a restart. Omit --persist only for an intentionally ephemeral process. The explicit local analyst role permits this loopback operator to run scans; the server's default anonymous role remains read-only.

For headless onboarding, agent-bom connect <provider> prints the exact grant, credential boundary, verification step, and next scan command. The cloud connection guide documents AWS, Azure, GCP, and Snowflake, including organization scope and scheduler behavior.

Need a disconnected scan? Seed the smallest package-advisory database first:

agent-bom db update --osv-ecosystem PyPI
agent-bom scan . --offline

If that database is missing or unreadable, the scan writes a partial artifact when -o is set and exits 1; CI therefore cannot mistake unavailable advisory coverage for a clean scan.

On a fresh database, that command covers only the selected ecosystem; packages from other ecosystems remain explicit offline coverage gaps. Repeat --osv-ecosystem for a polyglot repository, or use agent-bom db update --source osv for OSV's all-ecosystems archive. The full archive can exceed 1 GB, may take several minutes, and shows live progress with the exact total when the server supplies it. Run the broader agent-bom db update when you also need distro, exploit-probability, and known-exploited-vulnerability feeds.

A non-zero exit is a verdict, not a crash. scan exits 0 when nothing matched a gate, and 1 when one did — a --fail-on-* threshold you set, a known-malicious package, or a scan that did not complete. The report is printed in full either way, and the last line names the gate that matched. Full exit-code contract.

Save an artifact with agent-bom scan . -f sarif -o findings.sarif, or follow the first-run guide for formats and CI use.

Daily developer loop

Try the scanner without installing it, then check a package before adding it:

uvx agent-bom scan .
uvx agent-bom check requests@2.33.0 --ecosystem pypi

check returns an allow/unsafe/incomplete pre-install verdict; scan covers the repository plus discovered AI/MCP configuration. To make both dependency and secret gates automatic for a team, pin the shipped consumer hooks:

repos:
  - repo: https://github.com/msaad00/agent-bom
    rev: v0.103.2
    hooks:
      - id: agent-bom-secrets
      - id: agent-bom-scan

Run pre-commit install once. The hooks install agent-bom into their own isolated environment, so contributors do not need a separate global install. Hook behavior and CI examples.

You want to

Go to

Scan your repository

agent-bom scan .

A dashboard on your laptop

Self-host

A shared deployment (Docker, Helm, EKS, Snowflake)

Self-host table

Gate a pull request

first-run guide §5

Give an AI agent the tools

agent-bom mcp serverMCP server

Connect a cloud account

agent-bom connect aws --emit --out agent-bom-aws-readonly.jsoncloud connections

Use the curated, explicitly synthetic sample when you only want to inspect the output shape:

agent-bom scan --demo --offline

The sample intentionally contains a known-malicious package, which fails closed.

Self-host

The control plane is the growth path, not a prerequisite. Use it when one-off artifacts need to become a durable team workflow: registered sources, scheduled scans, history, inventory snapshots, finding ownership, graph investigation, compliance evidence, and runtime policy—all inside the customer's cloud, cluster, database, identity, and audit boundary.

Start the loopback evaluation profile:

pip install 'agent-bom[ui]'
AGENT_BOM_NO_AUTH_ROLE=analyst agent-bom serve --persist ~/.agent-bom/control-plane.db

Then open Connections to add a source or New Scan to target a repository, image, SBOM, MCP configuration, or IaC path. A scan produces the inventory; inventory is not populated merely by starting the server.

For a shared deployment, use the production-shaped Docker or Helm path and configure real identity, TLS, PostgreSQL, encryption, and audit keys before exposing it.

Target

Start here

Docker Compose

Platform compose — PostgreSQL, split secrets, migration job

Docker Compose (evaluation)

Pilot compose — loopback only, SQLite, no auth

Helm / Kubernetes

helm install agent-bom oci://ghcr.io/msaad00/charts/agent-bom --version 0.103.2

EKS

Terraform module

Snowflake SPCS / Native App

scripts/deploy/install.sh snowflake-native · install guide

Air-gapped

Image bundle guide

Examples target this release candidate; confirm release availability before copying an exact pin. Otherwise, use the latest version shown on PyPI.

Deployment overview · Enterprise configuration · Cloud connections

Need

First action

Artifact or next step

GitHub CI

uses: msaad00/agent-bom@v0.103.2

SARIF, PR summary, and a policy exit code

Cloud evidence

agent-bom connect aws --emit --out agent-bom-aws-readonly.json

Deploy the read-only grant, then connect and scan

Runtime gateway

agent-bom gateway serve --from-control-plane http://127.0.0.1:8422 --bind 127.0.0.1:8090

Allow, warn, and block audit events

Agent interface

agent-bom mcp server

86 MCP tools, 6 resources, and 8 workflow prompts

Agent distribution

Smithery manifest · Glama · MCP registry · Docker MCP

Registry-specific installation metadata

MCP server mode exposes 86 MCP tools, 6 resources, and 8 workflow prompts, all read-first: discovery and analysis never mutate a scanned target.

Set YDC_API_KEY to enable the optional youcom_search MCP tool for live web and news context alongside the local threat-intel database. It is the only tool that sends your query to a third party, it is off unless the key is set, and the request is pinned to the You.com origin over TLS — so the key cannot be redirected to another host by configuration.

The CLI, Docker, API, Helm chart, MCP server, gateway, and SDK are distribution surfaces of the same product. The Snowflake SPCS / Native App lane runs inside the customer's Snowflake account; it is a customer-owned deployment target, not an agent-bom-hosted service. Snowflake and Snowpark also remain connector and runtime integrations for the other deployment profiles.

Surface

Get it

Python package

pip install agent-bomPyPI

Container

docker pull agentbom/agent-bom:0.103.2 — signed release image on Docker Hub

Kubernetes

helm install agent-bom oci://ghcr.io/msaad00/charts/agent-bom

GitHub Action

msaad00/agent-bom

MCP server

pip install 'agent-bom[mcp-server]' && agent-bom mcp server

MCP registries

Smithery manifest · Glama · MCP registry · Docker MCP

SDKs

Python · TypeScript · Go

Trust

  • Read-only discovery by default; runtime write decisions are separate and explicit.

  • Credentials are write-only where stored, encrypted at rest, and never returned by API responses.

  • API and control-plane routes are tenant scoped and auth protected outside explicit local mode.

  • Missing evidence is shown as unavailable or partial, never converted into a factual zero.

  • Public examples and screenshots use deterministic synthetic identifiers only.

Threat model · Release verification · Security policy · MCP security model

Contributing and support

Stuck, or not sure where a question belongs? SUPPORT.md has the routing and an honest statement of what response to expect.

To contribute, start with CONTRIBUTING.md, AGENTS.md, and the open issues.

Apache-2.0 licensed.

Available Tools

86 tools
access_reviewAccess ReviewA
Idempotent

List or get NHI access-review / recertification campaigns and their status.

    Pass ``campaign_id`` to fetch one campaign with its review items, or omit
    it to list campaigns. Not read-only: listing/fetching recomputes and
    persists each campaign's status (to surface overdue), so this is an
    idempotent write. Creating a campaign or submitting a reviewer decision
    is a separate write action not exposed through this tool.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum campaigns to list when campaign_id is omitted.
tenant_idNoTenant scope to read. Defaults to the control-plane default tenant.default
campaign_idNoOptional campaign id to fetch one campaign with its review items. Omit to list campaigns.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description explains that listing/fetching recomputes and persists status, making it an idempotent write—this adds behavioral context beyond the annotations (idempotentHint=true, readOnlyHint=false). It discloses the side effect and distinguishes this from true read-only operations.

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

Conciseness5/5

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

The description is concise (2-3 sentences) and front-loaded with the core purpose, followed by details on behavior and excluded actions. Every sentence is essential and no extraneous information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 3 parameters, annotations, and an output schema, the description adequately covers the primary functions, side effects, and limitations. It is complete enough for an AI agent to use correctly. Could potentially mention required permissions or authentication, but not necessary for core functionality.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the usage pattern (omit campaign_id to list, provide to fetch one) and the effect of the limit parameter, enhancing the semantic understanding beyond the schema 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 clearly states the tool lists or gets NHI access-review campaigns, specifying two modes: listing (omit campaign_id) and fetching one (with campaign_id). The verb and resource are specific and 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 explicit guidance on when to use each mode (with/without campaign_id) and clearly states what the tool does NOT do (creating campaigns or submitting decisions), which helps the agent avoid misuse. However, it does not explicitly name alternative tools for excluded actions.

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

ai_inventory_scanAI Inventory ScanA
Read-onlyIdempotent

Scan source code for AI component usage patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
directoryYesDirectory to scan for AI SDK imports, model refs, API keys, shadow AI (Python/JS/TS/Java/Go/Rust/Ruby).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, destructiveHint=false, etc. Description adds no further behavioral details (e.g., no mention of scanning depth, file types, or output structure). Adequate but basic.

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?

Single sentence, no redundant information, front-loaded with key verb and resource. Every word earns its place.

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

Completeness3/5

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

Despite having an output schema, the description is minimal and does not elaborate on what 'AI component usage patterns' entails. Could benefit from a brief list of scanned elements (e.g., SDK imports, model refs) already partially in parameter description but not in tool description itself. Adequate for simple tool but not comprehensive given numerous siblings.

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

Parameters3/5

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

Input schema already fully describes the 'directory' parameter with 100% coverage. Tool-level description adds no extra parameter meaning beyond the schema's rich description.

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

Purpose5/5

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

Description clearly states verb ('scan') and resource ('source code for AI component usage patterns'). Distinguishable from sibling tools like code_scan or prompt_scan by focusing specifically on AI component usage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 model_file_scan or inventory. Does not mention prerequisites or typical scenarios.

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

aisvs_benchmarkAISVS BenchmarkA
Read-onlyIdempotent

Run AISVS v1.0 (AI Security Verification Standard) compliance checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
checksNoComma-separated AISVS check IDs to run (e.g. 'AI-4.1,AI-6.1'). Omit to run all 9 checks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations fully cover safety (readOnlyHint, idempotentHint) so the description need not repeat those. It adds context about the AISVS standard but no additional behavioral traits beyond what annotations provide.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the key purpose. Every word contributes value; there is no fluff or redundancy.

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

Completeness3/5

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

For a simple tool with one optional parameter and good annotations, the description is nearly adequate but omits the default behavior (all 9 checks) and does not reference the output schema or differentiate from similar sibling tools.

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

Parameters3/5

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

The only parameter 'checks' has a complete description in the schema (100% coverage). The tool description does not add any extra meaning beyond the schema, which already explains the comma-separated IDs and default behavior.

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 runs AISVS v1.0 compliance checks, using a specific verb and standard. It distinguishes from siblings like cis_benchmark by naming a different standard.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 compliance, check, or cis_benchmark. The description lacks when/when-not criteria or references to sibling tools.

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

analytics_queryAnalytics QueryA
Read-onlyIdempotent

Query vulnerability trends, posture history, and runtime event summaries from ClickHouse.

    Requires AGENT_BOM_CLICKHOUSE_URL to be set. Returns empty results if
    ClickHouse is not configured.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback window in days (default 30). Used by vuln_trends, posture_history, and compliance_heatmap.
agentNoFilter by agent name. Used by vuln_trends and posture_history.
hoursNoLookback window in hours (default 24). Used by event_summary.
limitNoMax results for top_cves and fleet_riskiest (default 20).
query_typeYesQuery type: vuln_trends, top_cves, posture_history, event_summary, fleet_riskiest, or compliance_heatmap

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds value by disclosing the setup requirement and the potential for empty results when ClickHouse is not configured. 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 extremely concise with two sentences: first for purpose, second for prerequisites and behavior. It is front-loaded and contains 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?

An output schema exists, so return values are likely documented. The description covers prerequisites and a failure mode. Parameter schema thoroughly documents each parameter and its context. Together, these provide sufficient completeness for a query tool. Slight miss: not all query types are explicitly listed in the description, but they are 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?

Schema coverage is 100% and parameter descriptions are detailed (e.g., listing which query types use each parameter). The description does not add significant meaning beyond what the schema already provides, so 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 clearly states the verb 'Query' and the resources 'vulnerability trends, posture history, and runtime event summaries from ClickHouse.' This distinguishes it from sibling tools like audit_query or intel_lookup, which query different data sources. The parameter schema further lists all query types, reinforcing specificity.

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

Usage Guidelines3/5

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

The description provides a prerequisite ('Requires AGENT_BOM_CLICKHOUSE_URL to be set') and a fallback behavior ('Returns empty results if ClickHouse is not configured'). However, it does not explicitly guide when to use this tool over alternatives such as audit_query or intel_lookup, which also query data but from different sources.

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

anomaly_scanAnomaly ScanA
Read-onlyIdempotent

Surface cost and behavior anomalies: per-agent spend and per-session tool-call-rate statistical outliers, for proactive runaway-agent detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_idNoTenant scope to summarize. Defaults to the control-plane default tenant.default
z_thresholdNoZ-score threshold for flagging an outlier (default 3.0; higher = stricter).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, so the description's claim of 'surface' and 'proactive detection' aligns and adds context that the tool is analytical and non-destructive. No behavioral details are missing or contradictory.

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 immediately conveys the tool's purpose and output. No extraneous words or 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?

Given the tool's simplicity (2 parameters, no required parameters, output schema exists), the description sufficiently defines purpose and use case. It could optionally mention that results include flagged outliers, but the output schema likely covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales 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 contains clear parameter descriptions ('Z-score threshold...', 'Tenant scope...'). The tool's description does not add any further parameter semantics 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 uses a specific verb ('Surface') and clearly identifies the resource ('cost and behavior anomalies'), specifying the kinds of anomalies (per-agent spend, per-session tool-call-rate statistical outliers) and the purpose (proactive runaway-agent detection). This clearly distinguishes it from sibling tools like 'cost_report' or 'tool_risk_assessment'.

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 for proactive detection of runaway agents, but it does not explicitly state when not to use it or provide alternatives. Given the large set of sibling tools, a note on when to prefer this over other scan tools would be beneficial.

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

approve_exceptionApprove Vulnerability ExceptionC
Destructive

Activate a pending exception through the canonical lifecycle store.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for approving the exception.
tenant_idNoRequested tenant; the MCP server binding remains authoritative.default
exception_idNoPending exception id to activate.
operator_roleNoOperator role for this audited write.viewer
operator_scopesNoComma-separated operator scopes for this audited write.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already disclose destructiveHint=true, so the description's 'activate' aligns but adds little detail. It does not explain side effects, reversibility, or the audited nature of the write (though parameters mention 'audited write'). The 'canonical lifecycle store' phrase adds no behavioral context. Since annotations carry most of the burden, and the description contributes minimal additional disclosure, this is below 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, short sentence that states the main action upfront. The inclusion of 'through the canonical lifecycle store' is somewhat redundant but does not bloat it materially. It is concise and structured acceptably, though it could be more informative without adding length.

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

Completeness2/5

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

Despite having an output schema and 100% parameter coverage, the description is inadequate for a destructive write operation. It omits the domain (vulnerability exceptions), the expected workflow (request -> approve), prerequisites, and any caveats. The sibling list includes closely related tools like 'request_exception' and 'list_exceptions', and this description does not clarify how it fits. Two sentences of context could dramatically improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema documents all five parameters. The description does not add any extra meaning to parameters like 'exception_id' or 'reason'. It implicitly relates to approving an exception but adds no syntax or usage nuance. Because coverage is high, the baseline of 3 applies; the tool does not need the description to compensate.

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

Purpose4/5

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

The description uses a specific verb 'activate' with a resource 'pending exception', which clearly indicates the action. It distinguishes from siblings like 'request_exception' (creating) and 'list_exceptions' (listing), though the phrase 'canonical lifecycle store' is vague jargon that obscures the actual domain (vulnerability exceptions) and may confuse an agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 that it operates on exceptions created via 'request_exception', nor when it should be avoided (e.g., for already-active exceptions). An agent is left to infer the workflow from the name and siblings with no explicit conditions.

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

audit_integrityAudit IntegrityA
Read-onlyIdempotent

Verify control-plane and runtime audit chain integrity.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum audit records to verify.
tenant_idNoTenant scope to verify. Defaults to the control-plane default tenant.default
include_runtimeNoAlso verify the configured runtime proxy audit log when AGENT_BOM_LOG is set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, so the description need not restate those. It adds value by specifying the scope (control-plane and runtime), which gives useful context beyond the annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. It is appropriately sized and efficiently conveys the core purpose.

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

Completeness4/5

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

Given the presence of a full schema and an output schema, the description is mostly sufficient. However, it could benefit from clarifying what 'integrity' means (e.g., hash verification) to fully cover the tool's behavior, but it is still above minimal.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents each parameter. The description adds no additional meaning or guidance for parameter usage, meeting the baseline of 3.

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 'Verify' and clearly identifies the resource 'control-plane and runtime audit chain integrity'. It effectively distinguishes from sibling tools like 'audit_query' which likely queries logs rather than verifying integrity.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives (e.g., 'audit_query'). It implicitly suggests it is for integrity checks, but lacks explicit context or exclusions, making it minimally informative for tool selection.

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

audit_queryAudit QueryA
Read-onlyIdempotent

Read tenant-scoped control-plane audit records with filters and paging.

    Returns the immutable, hash-chained audit log of control-plane actions
    (identity, shield, firewall, and policy changes) for one tenant, with
    optional filtering by action, resource, and start time. Read-only: it
    never mutates enforcement state.

    Args:
        tenant_id: Tenant scope to read (default control-plane tenant).
        action: Optional audit action filter (exact match).
        resource: Optional audit resource filter (exact match).
        since: Optional ISO-8601 timestamp lower bound.
        limit: Maximum audit records to return (1-1000).
        offset: Pagination offset.

    Returns:
        JSON with the matched audit records (actor, action, resource,
        timestamp, chain position) and pagination metadata.

    Call this to review who changed what in the control plane; pair with
    ``audit_integrity`` to verify the chain has not been tampered with.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum audit records to return.
sinceNoOptional ISO timestamp lower bound.
actionNoOptional audit action filter.
offsetNoPagination offset.
resourceNoOptional audit resource filter.
tenant_idNoTenant scope to read. Defaults to the control-plane default tenant.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false. The description adds context that the audit log is immutable, hash-chained, and that the tool never mutates enforcement state. This enriches the behavioral understanding beyond annotations.

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

Conciseness4/5

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

The description is front-loaded with the main purpose and well-structured, but the Args section is somewhat verbose and repeats schema details. Still clear and logically organized.

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

Completeness5/5

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

Given the presence of an output schema and detailed annotations, the description sufficiently covers purpose, usage, filtering, paging, and pairing with audit_integrity. No gaps for an agent to misuse the tool.

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

Parameters3/5

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

Schema coverage is 100%, so the description's Args section mostly repeats schema descriptions without adding new meaning or constraints. Baseline 3 is appropriate as the schema already documents parameters well.

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

Purpose5/5

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

The description clearly states it reads tenant-scoped control-plane audit records with filters and paging, and distinguishes itself from the sibling tool audit_integrity by specifying that it is for reviewing changes while integrity verification is separate.

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

Usage Guidelines5/5

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

Explicit guidance is provided: 'Call this to review who changed what in the control plane; pair with audit_integrity to verify the chain has not been tampered with.' This tells when to use and suggests an alternative for verification.

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

blast_radiusBlast Radius AnalysisA
Read-onlyIdempotent

Look up the blast radius of a specific CVE across your AI agent setup.

    Reads the tenant's persisted control-plane finding evidence when it is
    available. Standalone MCP mode falls back to a local MCP configuration
    scan and labels that narrower source explicitly.

    Args:
        cve_id: The CVE identifier (e.g. "CVE-2024-1234" or "GHSA-xxxx").

    Returns:
        JSON with blast radius details including risk_score,
        affected_servers, affected_agents, exposed_credentials, and
        exposed_tools. Returns found=false if CVE not found.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier to look up, e.g. 'CVE-2024-1234' or 'GHSA-xxxx'.
scan_idNoOptional persisted scan scope.
tenant_idNoTenant scope for persisted findings. Defaults to 'default'.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context: the fallback to a local MCP configuration scan, the explicit labeling of that narrower source, and the `found=false` return case. 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?

The description is concise (~100 words), front-loaded with the primary action, and structured with Args and Returns sections. Every sentence earns its place: the two behavioral notes (persisted vs. local source) and the return format are all useful. No redundancy or fluff.

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

Completeness5/5

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

For a read-only lookup tool with strong annotations, a 3-param schema at 100% coverage, and an output schema, this description is complete. It covers purpose, two distinct operational modes, parameter requirement (cve_id), and a not-found outcome. The output schema presumably handles return-field details, but the description already gives the key returning fields.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter (cve_id, scan_id, tenant_id) has a description. The description's Args section only restates cve_id syntax ('e.g. CVE-2024-1234 or GHSA-xxxx') without adding new semantics. Per the calibration 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 opens with a specific verb+resource+scope: 'Look up the blast radius of a specific CVE across your AI agent setup.' It clearly distinguishes this from siblings like exposure_paths and intel_lookup by focusing on CVE-specific blast radius. The two data-source modes (persisted control-plane evidence vs. standalone local scan) are also explicitly described.

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 behavioral context: it reads persisted evidence when available and falls back to a local scan in standalone mode, labeling the narrower source explicitly. However, it does not explicitly name alternative tools or say when not to use this tool, so it stops short of a full when/when-not guideline.

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

browser_extension_scanBrowser Extension ScanA
Read-onlyIdempotent

Scan installed browser extensions for dangerous permissions.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_low_riskNoInclude low-risk extensions in results (default: only medium+ risk).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 idempotentHint. The description adds context about scanning for 'dangerous permissions' but does not elaborate on what that means or how it behaves.

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 extraneous words, immediately conveying the tool's purpose.

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

Completeness4/5

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

Given low complexity (1 param, output schema present) and annotations, the description is sufficient for an agent to understand the tool's primary function, though it could hint at expected output format.

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

Parameters3/5

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

The input schema has 100% coverage with a description for the only parameter. The tool description adds no additional parameter information beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Scan') and the resource ('installed browser extensions') with a specific focus ('dangerous permissions'). This distinguishes it from sibling tools like code_scan or fleet_scan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 scanning browser extensions but provides no explicit guidance on when to use or avoid this tool, nor does it mention alternatives.

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

checkPackage CVE CheckA
Read-onlyIdempotent

Check a specific package for known CVEs before installing.

    Queries OSV.dev for vulnerabilities in the given package. Use this
    before installing an MCP server or dependency to verify it is safe.

    Args:
        package: Package name with optional version, e.g. "express@4.18.2",
                 "@modelcontextprotocol/server-filesystem@2025.1.14",
                 or just "requests" (resolves @latest).
        ecosystem: Package ecosystem — "npm", "pypi", "go", "cargo",
                   "maven", "nuget", "rubygems", "composer", "swift",
                   "pub", "hex", "conda", "deb", "apk", or "rpm".
                   Defaults to "npm".

    Returns:
        JSON with package, version, ecosystem, vulnerability count,
        and vulnerability details (id, severity, cvss, fix version, summary).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
offlineNoUse only the local advisory database. An explicit version is required; registry resolution and publication checks are disabled.
packageYesPackage name with optional version, e.g. 'express@4.18.2', '@modelcontextprotocol/server-filesystem@2025.1.14', or 'requests' (resolves @latest).
versionNoOptional package version when omitted from ``package`` (e.g. package='flask', version='0.12.2'). Prefer embedding in ``package`` as 'flask@0.12.2' or 'flask==0.12.2' when possible.
ecosystemNoPackage ecosystem: 'npm', 'pypi', 'go', 'cargo', 'maven', 'nuget', 'rubygems', 'composer', 'swift', 'pub', 'hex', 'conda', 'deb', 'apk', or 'rpm'.npm

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, destructiveHint=false, idempotentHint=true, so the safety profile is covered structurally. The description adds genuine value by disclosing the external dependency on OSV.dev (an outbound network query) and documenting the JSON return shape. 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?

The key purpose is front-loaded in the first line, followed by a tight context sentence and structured Args/Returns blocks. It earns its length with the OSV.dev source note, usage guidance, and return-format disclosure, with no filler.

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

Completeness4/5

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

Given rich annotations, an output schema, and 100% parameter coverage, the description covers what matters beyond structure: external data source, when to invoke, and expected return fields. The only minor gap is that the offline/version parameters are not surfaced in the description text, though the schema fully documents them.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are already documented structurally and the baseline is 3. The description reinforces package/ecosystem with concrete examples but omits the offline and version parameters entirely from its Args section. It adds convenience, not new meaning, on top of 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 opens with a precise 'Check a specific package for known CVEs before installing' — a specific verb, resource, and scoping constraint. It clearly separates this single-package advisory check from broad siblings like scan or registry_lookup by framing it as a targeted, pre-installation safety verification.

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

Usage Guidelines4/5

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

'Use this before installing an MCP server or dependency to verify it is safe' gives an explicit trigger condition and intended moment of use. However, it does not name any alternative tools or state when NOT to use it, leaving an agent to infer the boundary against scan/policy_check/marketplace_check on its own.

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

cis_benchmarkCIS BenchmarkA
Read-onlyIdempotent

Run CIS benchmark checks against a cloud account.

    Evaluates security posture against CIS Foundations Benchmarks:
    - AWS Foundations v3.0: 18 checks (IAM, Storage, Logging, Networking)
    - Snowflake v1.0: 12 checks (Auth, Network, Data Protection, Monitoring, Access Control)
    - Azure Security Benchmark v3.0: 10 checks (IAM, Storage, Logging, Networking, Key Vault)
    - GCP Foundation v3.0: 8 checks (IAM, Logging, Networking, Storage)

    All checks are read-only. Failed checks include MITRE ATT&CK Enterprise technique mappings.
    Requires appropriate credentials for the chosen provider.

    Returns:
        JSON with per-check pass/fail results, evidence, severity, ATT&CK techniques, and pass rate.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
checksNoComma-separated check IDs to run (e.g. '1.1,2.1'). Omit to run all.
regionNoOptional AWS region scope. Omit to evaluate CIS across all enabled AWS regions.
profileNoAWS CLI profile (only for provider=aws).
providerYesCloud provider: 'aws', 'snowflake', 'azure', or 'gcp'.
project_idNoGCP project ID (only for provider=gcp). Falls back to GOOGLE_CLOUD_PROJECT env var.
subscription_idNoAzure subscription ID (only for provider=azure). Falls back to AZURE_SUBSCRIPTION_ID env var.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

The description explicitly states 'All checks are read-only,' which aligns with the readOnlyHint annotation. It additionally discloses credential requirements and the inclusion of MITRE ATT&CK mappings, providing useful behavioral context beyond the annotations. 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.

Conciseness4/5

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

The description is structured with a clear lead sentence followed by a bullet-like enumeration of benchmarks and a return format section. It is informative without excessive verbosity, though the list of check counts could be seen as slightly extraneous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 provides a comprehensive overview of the tool's purpose, the benchmarks it covers, the output format (JSON with pass/fail, evidence, severity, ATT&CK techniques, pass rate), and prerequisites. This is sufficient for an agent to understand expectations without an explicit output schema.

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

Parameters3/5

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

The schema already covers each parameter with clear descriptions (e.g., provider values, env var fallbacks, check ID format). The description's top-level text does not add significant new parameter information beyond the schema, so it does not exceed the baseline of 3.

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 'Run CIS benchmark checks against a cloud account' with a specific verb and resource. It distinguishes from sibling tools like 'compliance' or 'policy_check' by explicitly naming CIS Foundations Benchmarks and enumerating provider-specific check counts.

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

Usage Guidelines4/5

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

It states when to use (for CIS benchmark evaluation) and implicitly differentiates from generic compliance checks. It also notes that 'appropriate credentials' are required, which is a prerequisite. It doesn't explicitly list alternatives, but the specificity is sufficient.

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

cloud_inventoryCloud InventoryA
Read-onlyIdempotent

Summarize the estate-wide cloud asset inventory (resource + identity counts).

    Each provider is opt-in via its own ``AGENT_BOM_*_INVENTORY`` env flag and
    credentials; a disabled or unconfigured provider returns a clear status
    and contributes zero nodes. Returns resource/identity counts and a node
    summary only — reference-only, never resource secrets.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoOptional AWS region for AWS inventory (e.g. us-east-1).
providersNoComma-separated cloud providers to summarize: aws, azure, gcp. Omit to query all enabled.
tenant_idNoTenant scope for the response envelope. Defaults to the control-plane default tenant.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

Description adds significant context beyond annotations: opt-in per-provider via env flags, disabled provider behavior, returns only counts and node summary, and assures no resource secrets. Complements readOnlyHint and other annotations effectively.

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 first front-loading core purpose, second adding critical behavioral details. No filler, 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?

Given zero required params, high schema coverage, and presence of output schema, the description sufficiently explains tool behavior, return type, and configuration prerequisites. No gaps identified.

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

Parameters3/5

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

Schema has 100% coverage, so baseline is 3. Description adds minimal additional meaning beyond schema descriptions (providers, region, tenant_id). The env flag opt-in is mentioned but not tied to 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 clearly states it summarizes estate-wide cloud asset inventory with resource and identity counts, using specific verbs and outlining scope. It distinguishes from siblings like 'inventory' by referencing opt-in env flags and reference-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 Guidelines3/5

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

Description implies usage for overview but lacks explicit when-to-use or when-not-to-use compared to siblings like 'inventory' or 'ai_inventory_scan'. Mentions opt-in behavior but no alternatives or exclusions.

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

cloud_side_scanCloud Side-Scan (Azure/GCP)A
Destructive

Trigger one agentless Azure/GCP disk side-scan and read back honest state.

    Runs the same executor as ``agent-bom cloud side-scan`` and the REST
    ``POST /v1/cloud/side-scan``: snapshot the disk, mount a temp copy on an
    in-account collector read-only, record SBOM + CVE + secret *metadata* only,
    and tear every owned temporary resource down. Requires an admin operator +
    ``cloud:write`` scope. Credentials are never accepted here — the
    executor resolves read-only credentials from the provider's default chain
    (``credentialed_smoke=false``). Fail-closed and honest: OFF → ``disabled``;
    missing extra/credentials → ``unavailable``; never a clean-workload claim.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for triggering the side-scan.
regionNoOptional provider region hint for client construction.
locationNoAzure location / GCP zone of the temp disk (must match the collector).
providerNoCloud provider: 'azure' or 'gcp' (AWS EBS uses the CLI side-scan entrypoint).
target_idNoManaged/persistent disk resource id to scan.
tenant_idNoTenant scope for the execution and durable lifecycle record.default
account_idNoAzure subscription id / GCP project id owning the disk + collector.
collector_idNoIn-account collector VM/instance the temp disk attaches to.
operator_roleNoOperator role for this write action (audit).viewer
idempotency_keyNoRetry-safe key; the same key reuses one execution record.
operator_scopesNoComma-separated operator scopes (audit).
scan_secrets_enabledNoInclude the redacted secret scan (type + location only, never values).
collector_resource_groupNoAzure only: resource group of the collector VM.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

The description thoroughly discloses behavior: it snapshots, mounts read-only, records only SBOM and redacted secret metadata, tears down temp resources, resolves credentials via the default chain (no accepted credentials), requires an admin operator, and fails closed on missing extras/credentials. It also notes idempotency key reuse. This significantly exceeds the annotation info (readOnlyHint=false, destructiveHint=true) and adds concrete details about side effects and failure modes.

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

Conciseness4/5

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

The description is succinct: a one-line summary followed by a detailed but focused paragraph covering critical behavior (snapshot/teardown, metadata-only, fail-closed states, credential handling). It's organized and free of fluff, though the second paragraph is a dense run-on that could benefit from bullet points for readability.

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

Completeness5/5

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

With 13 parameters and 100% schema coverage, the description adds essential behavioral context: how the scan works (snapshot, mount, teardown), security constraints (admin role, read-only credentials, never accepts credentials), fail-closed outcomes, and metadata-only secret handling. It also clarifies idempotency via key reuseikuha, covering operational semantics beyond the schema.

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

Parameters4/5

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

While the schema already provides per-parameter descriptions (100% coverage), the description adds context for parameters like idempotency_key (reuses execution record), provider-specific details (location/resource group), and the overall auth model (admin operator). It clarifies the relationship between parameters (e.g., target disk, collector VM) without repeating schema text, adding practical 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 defines the tool's purpose: triggers an agentless Azure/GCP disk side-scan, capturing SBOM and secret metadata only. Its scope is distinctly specified (Azure/GCP, not AWS), and it differentiates from siblings by emphasizing the agentless, read-only, metadata-only nature and the fail-closed honest results.

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 context on when to use (triggering a scan, evaluating cloud disk state) and what it does (snapshot, mount, tear down). It lacks explicit 'when NOT to use' or alternatives, but the Azure/GCP scoping and read-only credential requirements are clear. A brief mention of the CLI-side-scan for AWS would be a nice contrast, but it's not critical.

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

code_scanSemgrep SAST ScanA
Read-onlyIdempotent

Run SAST (Static Application Security Testing) on source code via Semgrep.

    Scans for security flaws: SQL injection, XSS, command injection,
    hardcoded credentials, insecure deserialization, path traversal, etc.
    Returns findings with CWE classifications and severity levels plus a
    typed ``findings``, ``clean``, ``skipped``, or ``failed`` status.

    Requires ``semgrep`` on PATH (``pip install semgrep``).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to source code directory to scan.
configNoSemgrep config. 'auto' = Semgrep Registry rules. Can be a path or registry string.auto

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds useful context beyond this: requires semgrep on PATH, returns typed statuses (findings, clean, skipped, failed), and scans for CWE-classified issues. No contradictions.

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

Conciseness5/5

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

The description is tightly written, with the main action front-loaded and each sentence providing useful info: purpose, vulnerability classes, return status, and a key prerequisite. No wasted words.

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

Completeness5/5

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

Given the presence of an output schema and 100% parameter coverage, the description covers the essential aspects: what the tool does, what it returns (statuses), and a critical dependency. It is complete for guiding 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 (path and config) are fully described in the schema (100% coverage), so the description doesn't need to add parameter details. It does not significantly enrich parameter meaning beyond the schema, which is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 runs SAST via Semgrep on source code and lists specific vulnerability classes (SQL injection, XSS, etc.). It is specific in verb+resource but does not explicitly differentiate from sibling tools like 'scan' or 'check'.

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 for static security scanning of source code and mentions a prerequisite (semgrep on PATH), but it does not provide explicit when-to-use or exclusions relative to alternative tools.

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

complianceCompliance PostureA
Read-onlyIdempotent

Get OWASP LLM Top 10 / OWASP MCP Top 10 / MITRE ATLAS / NIST AI RMF compliance posture.

    Scans local MCP configurations, maps findings to 47 security controls
    across four AI security frameworks, and returns per-control
    pass/warning/fail status with an overall compliance score.

    Args:
        config_path: Path to a specific MCP config directory.
                     If not provided, auto-discovers all local agent configs.
        image: Docker image reference to scan (e.g. "nginx:1.25").

    Returns:
        JSON with overall_score (0-100), overall_status (pass/warning/fail/no_data),
        and per-control details for OWASP LLM Top 10 (10 controls),
        OWASP MCP Top 10 (10 controls), MITRE ATLAS (13 techniques),
        and NIST AI RMF (14 subcategories). Plus a nist_800_53_catalog line:
        the vendor-asserted, catalog-backed NIST SP 800-53 Rev 5 score over
        evaluated controls only (with ISO-27001-by-id attribution), scored
        independently and NOT folded into overall_score.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
imageNoDocker image to scan, e.g. 'nginx:1.25'.
config_pathNoPath to MCP client config directory. Auto-discovers all if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable context about scan behavior, return structure, and the notable fact that the nist_800_53_catalog score is independently scored and NOT folded into overall_score. This goes beyond 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.

Conciseness4/5

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

The description is structured with Args and Returns sections, front-loaded with purpose. It is somewhat verbose, especially the Returns details, given that a full output schema exists. However, the special NIST 800-53 scoring nuance justifies the length.

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

Completeness5/5

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

For a complex tool with two optional parameters and an output schema, the description fully explains scope, control mapping, return structure, and the separate NIST score. It leaves no critical gaps for an agent to understand what the tool does and what it returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 descriptions for both parameters. The paragraph text essentially restates schema descriptions (config_path auto-discovers, image is a Docker reference) without adding new semantics or edge-case guidance. 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 opens with a specific verb+resource: 'Get OWASP LLM Top 10 / OWASP MCP Top 10 / MITRE ATLAS / NIST AI RMF compliance posture.' It clearly states what it does (scans MCP configurations, maps to 47 controls) and distinguishes itself from sibling tools like scan or cis_benchmark by naming unique frameworks.

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: scans local MCP configs with optional config_path or image, auto-discovers if omitted. However, it does not explicitly mention when to prefer this tool over alternatives or provide exclusions, so it falls short of a 5.

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

context_graphContext GraphA
Read-onlyIdempotent

Build an agent context graph with lateral movement analysis.

    Models reachability between agents, servers, credentials, tools,
    and vulnerabilities.  Answers: "If agent X is compromised, what
    else becomes reachable?"

    Returns:
        JSON with nodes, edges, lateral_paths, interaction_risks, and stats.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNoMax BFS depth for lateral path discovery (1-6, default 4).
config_pathNoPath to MCP config directory. Omit to auto-discover.
source_agentNoAgent name to compute lateral paths from. Omit for all agents.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds context on output structure (nodes, edges, lateral_paths) and analysis type, without contradicting annotations. It does not detail permissions or side effects, but annotations already cover safety.

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

Conciseness5/5

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

The description is concise (three sentences), front-loaded with purpose, and well-structured. It efficiently conveys the tool's function, modeled entities, key question, and return fields with no extraneous content.

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

Completeness5/5

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

Given the tool's complexity and that an output schema exists (so return values need not be explained), the description sufficiently covers purpose, usage context, and output structure. It mentions all relevant return fields, making it complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add additional meaning beyond the schema, resulting in a baseline score of 3.

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

Purpose5/5

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

The description clearly states it builds an agent context graph for lateral movement analysis, with a specific verb and resource. It distinguishes from siblings like 'blast_radius' and 'exposure_paths' by focusing on reachability between agents, servers, credentials, tools, and vulnerabilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 answering a concrete question, 'If agent X is compromised, what else becomes reachable?' but does not explicitly guide when to use this tool versus alternatives like 'blast_radius' or 'exposure_paths'.

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

cost_allocationCost AllocationA
Read-onlyIdempotent

Return chargeback / showback LLM spend rollups by cost-center and allocation tag.

Spend is derived from token counts on ingested OpenTelemetry GenAI spans priced via the open cost model. Includes per-cost-center allocation, budget posture, and forecast. No prompts or responses are read.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoOptional allocation tag to add a showback slice (by_tag rollup).
agentNoOptional agent name to scope spend to a single agent.
tenant_idNoTenant scope to summarize. Defaults to the control-plane default tenant.default
cost_centerNoOptional cost-center / allocation unit to scope the chargeback report and budget.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true. The description adds value by stating that no prompts or responses are read, which is a privacy assurance beyond annotations. It also describes data sourcing (OpenTelemetry GenAI spans) and included outputs, enhancing 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 concise with four front-loaded sentences. Each sentence adds unique value: main purpose, data source, included outputs, and privacy note – no redundancy or fluff.

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

Completeness4/5

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

Given the presence of an output schema and the tool's moderate complexity (4 optional params, LLM cost rollups), the description adequately covers the purpose, data source, and privacy. It does not detail the exact output structure, but the output schema handles that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 detailed parameter descriptions. The tool description does not add additional semantics beyond what is already in the schema, so it meets the baseline of 3 without enhancement.

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 'Return' and the resource 'chargeback / showback LLM spend rollups', specifying the dimensions (cost-center, allocation tag) and included outputs (allocation, budget posture, forecast). It also distinguishes itself from sibling tools like cost_forecast and cost_report by focusing on rollups with budget and forecast.

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 for retrieving cost allocation data but does not explicitly compare to alternatives or state when not to use. It provides clear context on what the tool returns, but lacks explicit usage guidance or exclusions.

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

cost_forecastCost ForecastA
Read-onlyIdempotent

Project LLM spend burn rate and budget runway for the active tenant.

    Derives a recent burn rate from persisted cost records and extrapolates
    to the configured budget, returning projected period spend, days of
    runway, and an exhaustion date. Reference only: a forecast never blocks a
    call and returns a clear status with null projections on sparse history.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
agentNoOptional agent name to scope the forecast to a single agent.
tenant_idNoTenant scope to forecast. Defaults to the control-plane default tenant.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint), the description adds that the forecast never blocks and returns null on sparse history, providing valuable 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.

Conciseness4/5

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

The description is concise (two paragraphs, ~60 words) and front-loaded with the main purpose, though it could be slightly more structured.

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

Completeness5/5

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

Given the output schema covers return values, the description sufficiently explains the forecasting method, behavior on sparse history, and that it is reference-only, making it complete for this tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add extra meaning beyond the schema, which already documents the optional agent and tenant_id 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 clearly states the tool projects LLM spend burn rate and budget runway for the active tenant, using specific verbs and resources that distinguish it from siblings like cost_report or cost_allocation.

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 context on usage ('Reference only', 'never blocks a call') and mentions behavior on sparse history, but does not explicitly name alternative tools or specify when not to use it.

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

cost_reportCost ReportA
Read-onlyIdempotent

Return LLM spend attribution (per agent/model/provider) and budget posture.

Spend is derived from token counts on ingested OpenTelemetry GenAI spans priced via agent-bom's open cost model; no prompts or responses are read.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentNoOptional agent name to scope spend to a single agent.
tenant_idNoTenant scope to summarize. Defaults to the control-plane default tenant.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds valuable context: spend is derived from token counts on OpenTelemetry spans and no prompts/responses are read, revealing data source and privacy assurances 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?

Two sentences with zero waste: first sentence states core purpose, second adds transparency. Information is front-loaded and well-structured.

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

Completeness5/5

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

Given 2 optional parameters, complete annotations, and presence of output schema, the description sufficiently explains the tool's function and computation method. No missing critical details.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The description adds no extra parameter info beyond what the schema provides, meeting the baseline for high 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 states 'Return LLM spend attribution (per agent/model/provider) and budget posture,' specifying the verb and resource. It distinguishes from sibling tools like cost_allocation (which allocates costs) and cost_forecast (which forecasts).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 vs alternatives such as cost_allocation or cost_forecast. The description lacks explicit when/when-not scenarios or comparison to siblings.

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

create_ticketCreate ITSM TicketA
Destructive

File an ITSM ticket for a finding through a stored connection.

    Connect-once: auth and the ITSM base URL come only from the stored,
    encrypted connection — no credential or link is passed here. Requires an
    admin operator + ``ticketing:write`` scope. Idempotent per finding.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for filing the ticket.
findingNoFinding/issue as a JSON object (the vulnerability details to file).
projectNoTarget ITSM project/queue key. Uses the connection default if omitted.
tenant_idNoTenant scope for the connection and audit logging.default
finding_idNoStable finding id for idempotency. Derived from the finding if omitted.
issue_typeNoITSM issue type (e.g. Bug). Provider default if omitted.
source_urlNoOptional deep link back into agent-bom for provenance.
connection_idNoStored ticketing connection id. Uses the tenant's only connection if omitted.
operator_roleNoOperator role for this write action (audit).viewer
operator_scopesNoComma-separated operator scopes (audit).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior1/5

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

The description directly contradicts the annotations: it states 'Idempotent per finding' while the idempotentHint is false. This is a serious inconsistency, making the description untrustworthy about behavioral traits. Even though it discloses auth source and required scope, the contradiction nullifies 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?

Two concise sentences: the first states the purpose, the second explains the connection mechanism, required scope, and idempotency. No fluff, front-loaded, 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?

With 10 parameters and an output schema, the description gives helpful context about the stored connection, admin scope, and idempotency claim. However, the idempotency contradiction undermines reliability, and it does not describe side effects beyond the annotation's destructiveHint. Adequate but with clear gaps.

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

Parameters3/5

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

The schema has 100% coverage of parameters with descriptions. The tool description adds no significant parameter semantics beyond what the schema already provides; mentions of connection and idempotency are already covered in parameter descriptions (connection_id, finding_id). 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: 'File an ITSM ticket for a finding through a stored connection.' It uses specific verb 'file' and distinguishes this creation tool from siblings like sync_ticket_status, which suggests an update operation. The title and description align.

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 noting the tool requires an admin operator and the 'ticketing:write' scope, and that auth/base URL come from the stored connection. It does not explicitly name alternatives or give when-not guidance, but the purpose of creating a ticket is clearly implied.

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

credential_expiryCredential ExpiryA
Read-onlyIdempotent

Return expiring / overdue credential posture for control-plane secrets.

    Surfaces non-secret credential-expiry and rotation governance: which
    secrets are near expiry, overdue for rotation, or past max age, with an
    overall verdict. Never returns secret values.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations (readOnlyHint, idempotentHint) already indicate safe read behavior. The description adds important context: it never returns secret values, and it specifically handles control-plane secrets. This goes beyond annotations by clarifying what is NOT exposed.

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 primary purpose concisely, second adds detail without redundancy. Every sentence adds value, and the description is well 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?

Despite having no parameters and an output schema, the description fully explains the tool's purpose, scope (control-plane secrets), and what it does not return. It is complete for an agent to understand its capabilities.

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, the schema coverage is 100%. The description appropriately has no need to explain parameters. Baseline score of 4 for no-parameter tools is met.

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

Purpose5/5

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

The description clearly states it returns expiring/overdue credential posture for control-plane secrets, specifying details like near expiry, overdue for rotation, and an overall verdict. This distinctively differentiates it from sibling tools which cover other security and compliance functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 credential expiry status is needed, but lacks explicit guidance on when to use this tool over alternatives (e.g., access_review, audit_query). No exclusions or context about when not to use it are provided.

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

dataset_card_scanDataset Card ScanA
Read-onlyIdempotent

Scan a directory for ML dataset card metadata, provenance, and optionally PII/PHI content.

ParametersJSON Schema
NameRequiredDescriptionDefault
scan_piiNoAlso scan CSV/JSON/JSONL file contents for PII/PHI (emails, SSNs, credit cards, medical data). Default false.
directoryYesDirectory path to scan for dataset cards (dataset_info.json, README.md frontmatter, .dvc files).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds specific context about what is scanned (dataset_info.json, README.md frontmatter, .dvc files) and the optional PII scanning. No contradictions.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently conveys the tool's core functionality. Every word adds value with no redundancy.

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

Completeness5/5

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

Given the simple tool with 2 parameters, full schema coverage, and an existing output schema, the description sufficiently covers all necessary aspects: purpose, what is scanned, and optional behavior. It is complete for an agent to use.

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

Parameters3/5

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

Schema coverage is 100%, and the description repeats the exact parameter descriptions from the schema. It adds no new meaning beyond what the schema already provides, so a baseline score 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 clearly states the tool scans a directory for ML dataset card metadata, provenance, and optionally PII/PHI content. It distinguishes from sibling scanning tools by focusing on dataset cards and adding PII scanning, making its purpose specific 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 Guidelines3/5

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

The description implies usage for dataset directories but provides no explicit guidance on when to use this tool versus alternatives like code_scan or model_file_scan. It does not state when not to use it or compare with siblings.

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

diffVulnerability DiffA
Destructive

Compare a fresh scan against a baseline to find new and resolved vulns.

    Runs a new scan, then diffs it against the provided baseline (or the
    latest saved report). Shows new vulnerabilities, resolved ones, and
    changes in the package inventory.

    Not read-only: this persists the fresh scan to report history and may
    prune older saved reports, so it is annotated as a (destructive) write.

    Returns:
        JSON with new findings, resolved findings, new/removed packages,
        and a human-readable summary.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
baselineNoBaseline report JSON object. If omitted, uses the latest saved report from history.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description explicitly confirms the destructive write behavior, stating it persists the fresh scan and may prune older reports, going beyond the annotations. This adds valuable context 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?

The description is well-structured with a clear first sentence stating purpose, followed by behavioral details and return value summary. Every sentence adds value, and the structure is front-loaded.

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

Completeness5/5

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

Given the tool's complexity (diff with side effects) and the presence of an output schema, the description covers purpose, behavior, side effects, and return type adequately. No missing critical information.

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

Parameters4/5

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

The schema describes the 'baseline' parameter, and the description clarifies its role and default behavior (if omitted, uses latest saved report). Schema coverage is 100%, so the description adds complementary context without redundancy.

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 compares a fresh scan against a baseline to find new and resolved vulnerabilities. It distinguishes itself from sibling tools like 'scan' by specifying the diff behavior and the fact it runs a new scan and diffs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 context (comparing scans to find changes), but does not explicitly state when to use this tool over alternatives like 'scan' or when not to use it. It lacks explicit 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.

drift_incidentsDrift IncidentsA
Read-onlyIdempotent

List open blueprint-drift incidents (observed runtime traffic outside the approved role blueprint).

Each incident records the blueprint, drift score, and top violations so an operator can reconcile the agent or blueprint and resolve it.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_idNoTenant scope to summarize. Defaults to the control-plane default tenant.default
include_resolvedNoInclude resolved incidents. Defaults to open incidents only.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, etc. The description adds context about default behavior (open incidents only) and incident contents (blueprint, drift score, top violations), which aids understanding without contradicting 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, no filler. First sentence immediately states the action and resource. Every word serves a purpose.

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 list tool with two optional parameters and an output schema, the description fully covers purpose and incident structure. No missing essential context.

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

Parameters3/5

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

Schema covers both parameters with full descriptions. The tool description aligns with the include_resolved default but adds no new meaning beyond the schema. Baseline 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 clearly states it lists open blueprint-drift incidents and explains what a drift incident is. The verb 'list' and resource 'blueprint-drift incidents' are specific and distinct from sibling tools.

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

Usage Guidelines3/5

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

The description implies usage for operators reconciling drift but does not explicitly state when to use this tool over alternatives like runtime_blueprint_drift. No exclusions or when-not guidance is provided.

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

exposure_pathsExposure PathsA
Read-onlyIdempotent

Return ranked ExposurePath JSON for headless security agents.

    This is the agent-native graph surface: Claude, Cursor, Codex,
    Windsurf, Cortex, and other MCP clients can request the same
    investigation objects used by the dashboard without scraping UI state.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of ranked exposure paths to return.
scan_idNoOptional graph scan ID. Omit to use the latest snapshot.
min_riskNoMinimum path risk score to include.
tenant_idNoTenant ID for the graph snapshot. Defaults to 'default'.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already convey readOnly, idempotent, and openWorld hints. The description adds context about the output being ranked and identical to dashboard objects, but does not disclose potential limits, error handling, or performance traits. It complements 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 that deliver the core purpose and context without waste. The main action is front-loaded in the first sentence, and the second sentence adds relevant user audience information. 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?

Given the tool's complexity (4 parameters, rich annotations, and an output schema), the description provides sufficient context about the intended users and use case. The presence of an output schema covers return values, and annotations cover safety, making the description complete.

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

Parameters3/5

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

Schema coverage is 100%, so all four parameters are already well-documented in the schema. The description does not add any additional meaning or constraints beyond what the schema provides, meeting the baseline for this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 returns ranked ExposurePath JSON for headless security agents. It mentions specific MCP clients and distinguishes itself as the 'agent-native graph surface', differentiating from siblings like blast_radius or context_graph. However, it could more explicitly contrast with similar graph 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 indicates the tool is for headless agents and lists target clients, but it does not provide explicit guidance on when to use this tool versus alternatives like blast_radius or graph_export. No when-not-to-use or alternative references are given, only implicit context.

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

findings_triageRecord Finding Triage DecisionA
Destructive

Record a tenant-scoped finding triage decision to the exception store.

    Writes the same entry as the REST ``POST /v1/findings/triage`` endpoint.
    Requires an admin operator + ``findings:write`` scope. A ``not_affected``
    decision requires an OpenVEX ``justification``.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for recording the decision.
packageNoAffected package name, or '*' for all packages (default).*
assigneeNoOwner recorded for the triage entry.
decisionNoDecision: under_investigation, affected, or not_affected.under_investigation
tenant_idNoTenant scope for the triage entry and audit logging.default
expires_atNoOptional ISO-8601 expiry for the triage entry.
queue_stateNoQueue state: open, assigned, reviewing, or decided.open
server_nameNoOptional MCP server / asset scope for the decision.
justificationNoOpenVEX justification (required for not_affected), e.g. vulnerable_code_not_present.
operator_roleNoOperator role for this write action (audit).viewer
decision_reasonNoFree-text rationale for the decision.
operator_scopesNoComma-separated operator scopes (audit).
vulnerability_idNoVulnerability/advisory id being triaged (e.g. CVE-2024-1234).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate destructive and non-read-only behavior, so the description's 'Writes the same entry as REST POST endpoint' aligns with that. It adds extra transparency by specifying the admin operator requirement, scope, and the justification rule for not_affected, which go 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 concise—three sentences that front-load the purpose, then provide a REST equivalence and requirements. Every sentence adds value without 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 an output schema present, return values don't need explanation. The description covers prerequisites, scoping, and a critical parameter constraint. For a write operation with many parameters, this is adequately complete, though it could elaborate on side effects or idempotency, but annotations partly cover behavioral aspects.

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

Parameters4/5

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

The schema has full coverage of all 13 parameters, so the baseline is 3. The description adds meaningful context by clarifying that the entry is tenant-scoped (relevant to tenant_id) and explicitly states the justification requirement for not_affected, tying to a parameter. This goes slightly above baseline.

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

Purpose5/5

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

The description clearly states the action: 'Record a tenant-scoped finding triage decision to the exception store.' This specifies a verb and resource, and the mention of the REST endpoint differentiates it from potential siblings. It is unambiguous about what the tool does.

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

Usage Guidelines4/5

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

The description provides usage context by stating the necessary admin operator and findings:write scope, and mandates a justification for not_affected decisions. It does not explicitly name alternative tools, but the prerequisites are clear enough for an agent to know 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.

firewall_checkFirewall CheckA
Read-onlyIdempotent

Dry-run an inter-agent firewall decision without recording it to the control-plane tally.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_agentYesSource agent identity, for example claude-desktop.
source_rolesNoOptional comma-separated source roles such as developer,security_analyst.
target_agentYesTarget agent or service identity, for example jira-mcp.
target_rolesNoOptional comma-separated target roles such as production,finance.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

'Without recording it to the control-plane tally' adds explicit behavioral context beyond the annotations (readOnlyHint, idempotentHint). Consistent with annotations and clarifies the dry-run nature.

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?

Single sentence that is front-loaded with the core action and conditions. No wasted 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?

Given the simple dry-run nature and presence of output schema, the description does not need to detail return values. However, it lacks context on what determines the firewall decision or how results are presented, leaving some gaps.

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

Parameters3/5

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

Schema coverage is 100% and each parameter has a clear description. The tool description does not add additional parameter meaning, so baseline 3 is appropriate.

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

Purpose5/5

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

'Dry-run an inter-agent firewall decision' clearly states the verb (dry-run), resource (firewall decision), and scope (inter-agent). It distinguishes from siblings that may actually enforce or record decisions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 on when to use this tool versus alternatives like policy_check or check. The description implies a testing use case but does not state when not to use it or which sibling to prefer.

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

fleet_scanFleet ScanA
Read-onlyIdempotent

Batch-scan a list of MCP server names against the security metadata registry.

    Designed for fleet inventory data (EDR, SIEM, CSV exports) where
    you have server names but not versions. Returns per-server risk assessment
    with registry match status, risk category, tools, credentials, known CVEs,
    and a verdict (known-high-risk, known-medium, known-low, unknown-unvetted).

    Risk levels are category-derived (filesystem=high, database=medium,
    search=low), not made-up threat scores. Every field is traceable to a source.

    Returns:
        JSON with summary (total, matched, unmatched, risk breakdown)
        and per-server details.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
serversYesComma-separated or newline-separated list of MCP server names to scan. E.g. '@modelcontextprotocol/server-filesystem, brave-search, glean, 50 sleep'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds valuable behavioral context: it explains that risk levels are category-derived (not made-up), that every field is traceable to a source, and describes the return structure. 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?

The description is concise and well-structured: a succinct first sentence, followed by bullet points explaining design context, then a clear outline of return fields, and finally an explanation of risk derivation. Every sentence serves a purpose without 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?

Given the tool's simplicity (1 parameter, no nested objects, output schema exists), the description is highly complete. It covers purpose, usage context, input format, return structure, and risk level derivation. The only minor omission is error handling, but the output schema likely addresses that.

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

Parameters4/5

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

The schema has only one parameter ('servers') with 100% coverage. The description adds value by providing examples of valid inputs (e.g., '@modelcontextprotocol/server-filesystem, brave-search') and clarifying that it expects server names without versions. This helps the agent understand the parameter's format and use case.

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: batch-scanning MCP server names against a security metadata registry. It specifies the target (server names), the source (registry), and the action (batch-scan). It also distinguishes itself from siblings by emphasizing its design for fleet inventory data with no version info, differentiating it from other scan 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 states when to use the tool: 'Designed for fleet inventory data (EDR, SIEM, CSV exports) where you have server names but not versions.' This provides clear context for usage. It does not explicitly exclude other scenarios or name alternatives, but the guidance is sufficiently informative for an agent to decide.

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

gateway_statusGateway StatusB
Read-onlyIdempotent

Return gateway policy, firewall, durable activity, and optional self-posture evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_idNoTenant scope to summarize. Defaults to the control-plane default tenant.default
activity_limitNoMaximum activity events to return when include_activity is true.
activity_cursorNoOpaque cursor from a prior gateway_status activity response.
include_activityNoInclude the durable, cursor-paged gateway activity feed.
include_self_postureNoInclude this deployment's tenant-scoped operator self-posture evidence.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by naming the specific outputs (durable activity, self-posture evidence) which are not in the annotations. It does not contradict annotations and provides a modest amount of additional 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 sentence with zero wasted words. It front-loads the main outputs in a structured list and avoids redundancy with the schema. It is appropriately sized for the tool's breadth, covering all major categories without elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 moderate complexity (5 params, output schema, annotations). The description covers the main outputs but does not explain what 'durable activity' means or how to paginate via cursors, and it omits any note about when to use it relatively to sibling tools. Given the output schema and annotations, many details are covered externally, but the description is not fully self-sufficient for an agent deciding when to invoke it.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all five parameters. The description does not add semantic detail beyond the schema, except a slight hint that 'optional self-posture evidence' maps to include_self_posture. Per the calibration, a baseline of 3 is appropriate when the schema carries the parameter burden.

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

Purpose4/5

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

The description states a specific verb ('Return') and a clear resource (gateway) with its main output categories (policy, firewall, durable activity, optional self-posture evidence). It is not a tautology and distinguishes the general domain from other tools, though it does not explicitly contrast with sibling status tools like shield_status or proxy_status.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or context such as 'use for gateway health checks'. With many sibling status tools present, the lack of differentiation leaves the agent to infer usage from the name and description alone.

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

generate_sbomGenerate SBOMA
Read-onlyIdempotent

Generate a Software Bill of Materials (SBOM) for your AI agent setup.

    Discovers AI agents and MCP servers, extracts all package dependencies,
    and generates a standards-compliant SBOM.

    Args:
        format: SBOM format — "cyclonedx" (CycloneDX 1.7) or "spdx" (SPDX 3.0).
        config_path: Path to a specific MCP config directory.
                     If not provided, auto-discovers all local agent configs.

    Returns:
        JSON string containing the SBOM in the requested format.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoSBOM format: 'cyclonedx' (CycloneDX 1.7) or 'spdx' (SPDX 3.0).cyclonedx
config_pathNoPath to MCP client config directory. Auto-discovers all if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, openWorldHint, idempotentHint, and destructiveHint=false. The description adds that the tool discovers agents and servers, extracts dependencies, and generates a standards-compliant SBOM, which is consistent with read-only behavior.

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

Conciseness5/5

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

The description is concise, front-loaded with the purpose, and uses a clear structure with bullet points for arguments and return. Every sentence contributes meaning.

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

Completeness5/5

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

Given the presence of an output schema (mentioned in signals) and two optional parameters, the description provides complete context: what the tool does, how parameters work, and the return format. No gaps.

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

Parameters4/5

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

Schema description coverage is 100% for both parameters. The description adds value by specifying the exact format values ('cyclonedx' and 'spdx') and clarifying config_path auto-discovery behavior, which goes beyond the schema.

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

Purpose5/5

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

The description clearly states the tool generates a Software Bill of Materials (SBOM) for AI agent setups, with specific details on discovering agents, MCP servers, and extracting dependencies. It distinguishes itself from sibling tools like 'scan' or 'inventory' by focusing on SBOM generation.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool (to generate an SBOM) and explains config_path auto-discovery. However, it does not mention when not to use it or compare to alternatives among siblings.

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

gpu_infra_scanGPU Infrastructure ScanA
Read-onlyIdempotent

Discover GPU/AI compute infrastructure: containers, K8s nodes, and DCGM endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault
probe_dcgmNoWhether to probe DCGM exporter endpoints on port 9400 (unauthenticated metrics leak detection).
k8s_contextNokubectl context to use for K8s GPU node discovery. Omit for current context.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, indicating safety. The description adds behavioral detail (e.g., probing DCGM endpoints on port 9400 for unauthenticated metrics leak detection), providing context beyond annotations. 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.

Conciseness4/5

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

Single sentence that succinctly captures the tool's purpose and scope with no wasted words. Front-loaded with the key verb and resource types.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 presence of annotations (readOnly, idempotent, openWorld), an output schema (not shown but noted), and 100% parameter coverage in schema, the description adequately completes the picture. It identifies what the tool discovers without needing to explain return values.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters already well-described in the input schema (k8s_context for K8s context, probe_dcgm for DCGM probing). The description adds little beyond framing the overall purpose.

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 verb 'Discover' with specific resource types: containers, K8s nodes, and DCGM endpoints. It clearly differentiates from siblings like ai_inventory_scan or scan by focusing on GPU/AI compute infrastructure.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 GPU infrastructure discovery but provides no explicit when-to-use or when-not-to-use guidance, nor does it compare to sibling tools.

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

graph_correlateGraph CorrelateB
Idempotent

Create one bounded, provenance-rich correlation snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable correlation run name.
reasonYesHuman audit reason for creating the correlation.
scan_idsYesTwo to 32 exact immutable source snapshot ids.
tenant_idNoTenant scope bound by MCP authentication context.default
allow_staleNoAdmit stale evidence while preserving its stale label.
max_age_hoursYesRequired source-evidence freshness bound in hours.
operator_roleNoOperator role for this write action (audit).viewer
idempotency_keyYesCaller-stable retry key for this exact correlation request.
operator_scopesNoComma-separated operator scopes (audit).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the operation's safety profile is covered by structured data. The description adds modest context beyond annotations — 'one... snapshot' signals a single point-in-time artifact and 'bounded' signals constrained scope — but it does not disclose audit expectations, stale-evidence handling, or how the resulting snapshot is later retrieved.

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?

At six words, the description is extremely efficient. 'Create' is front-loaded, and every modifier — 'one,' 'bounded,' 'provenance-rich' — earns its place given that the schema and annotations carry the detailed documentation burden.

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

Completeness3/5

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

The schema fully documents all 9 parameters, annotations cover idempotency and non-destructiveness, and an output schema exists, so an agent can technically invoke the tool correctly. However, for a tool with 9 parameters and 80+ siblings, the absence of any guidance on when to use this snapshot tool versus runtime_correlate, or how results are later consumed via graph_correlation_status, is a real gap.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the input schema, which sets the baseline at 3. The description's 'bounded' and 'provenance-rich' add interpretive color about the overall operation but no parameter-level detail beyond what the schema provides.

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

Purpose4/5

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

The description states the specific verb 'Create' and the resource 'correlation snapshot,' with 'bounded' and 'provenance-rich' conveying scope and data focus. It is clear but does not explicitly differentiate itself from closely related siblings such as runtime_correlate or graph_correlation_status, so the agent must inspect the schema to understand the distinction.

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

Usage Guidelines2/5

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

The one-line description provides no when-to-use context, no exclusions, and no mention of alternatives. Given the sibling list contains runtime_correlate and graph_correlation_status, an agent receives no guidance on when a bounded snapshot correlation is the right choice versus runtime or status-checking operations.

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

graph_correlation_statusGraph Correlation StatusB
Read-onlyIdempotent

Read run state, receipts, freshness, conflicts, and analysis bounds.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_idNoTenant scope bound by MCP authentication context.default
correlation_idYesCorrelation id returned by graph_correlate.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds modest context by specifying the read facets (state, receipts, freshness, conflicts, bounds), but it does not disclose additional behavioral traits such as authorization requirements, rate limits, or what happens if the correlation no longer exists. This is consistent with annotations, adding some but not rich 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?

A single sentence, front-loaded with the action verb 'Read', and no filler. Each listed facet adds meaning, and the tool relies on structured schema fields for the remaining details. Efficient and appropriately compact.

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

Completeness4/5

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

For a simple read-only status tool with 2 parameters (1 required), complete schema coverage, full annotations, and an output schema, the description adequately states what it reads. It would be slightly more complete if it explicitly indicated the prerequisite correlation workflow, but the parameter description already tells the agent that correlation_id is returned by graph_correlate, filling that gap.

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

Parameters3/5

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

Schema description coverage is 100%, with both tenant_id and correlation_id already documented. The description contributes no parameter-level information beyond the schema; the key provenance fact that correlation_id comes from graph_correlate is already in the schema. Per 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 uses a specific verb ('Read') and enumerates the resource facets: run state, receipts, freshness, conflicts, and analysis bounds. This clearly identifies it as a status/read tool for correlation graphs, and the read verb distinguishes it implicitly from siblings like graph_correlate. However, it does not explicitly contrast with any sibling, so it falls just short of the top score.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives, no exclusions, and no mention of the expected workflow (e.g., after graph_correlate). The schema parameter description for correlation_id does imply the correlation flow, but the tool description itself offers no usage direction.

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

graph_exportGraph ExportA
Read-onlyIdempotent

Export the agent dependency graph in graph-native formats.

    Formats:
    - **graphml** — yEd, Gephi, NetworkX compatible with AIBOM-typed attributes
    - **cypher** — Neo4j import script with AIBOM node labels (AIAgent, MCPServer, Package, Vulnerability)
    - **dot** — Graphviz (pipe through ``dot -Tsvg``)
    - **mermaid** — embed in markdown, GitHub, Notion
    - **json** — machine-readable nodes/edges list

    Returns:
        Graph in the requested format as a string.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoExport format: graphml, cypher, dot, mermaid, or json (default).json
config_pathNoPath to MCP config directory. Omit to auto-discover.
mermaid_limitNoMaximum nodes rendered for Mermaid output; 0 renders the full graph.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, idempotent, and open-world behavior. The description adds value by specifying that the tool returns the graph as a string in the requested format, which is not disclosed by annotations alone.

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

Conciseness5/5

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

The description is very concise: a single sentence for purpose, bullet points for formats, and a returns line. It is front-loaded with the main action, and every sentence provides necessary information without redundancy.

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

Completeness4/5

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

Given the tool's simplicity and the presence of a full schema and annotations, the description covers the essential aspects: purpose, formats, and return type. It is complete enough for the agent to understand and use the tool, though it omits error handling or edge cases (e.g., what happens with invalid format).

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description lists the format options but does not add meaning beyond the schema's description of each parameter (e.g., config_path, format, mermaid_limit). The description does not compensate for any missing schema details.

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

Purpose5/5

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

The description clearly states the tool exports the agent dependency graph in specific graph-native formats (graphml, cypher, dot, mermaid, json). The verb 'export' and resource are well-defined, and the listing of formats distinguishes it from other tools like context_graph or scan 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 use when a graph-native format is needed, but it does not explicitly state when to use this tool versus alternatives (e.g., context_graph for other representations) or when not to use it. No exclusions or preconditions are provided.

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

identity_grant_jitIdentity Grant JITA
Destructive

Grant an identity time-bound JIT access to one tool. Requires admin role, identity:write scope, and an audit reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for granting access.
tenant_idNoTenant scope for audit logging.default
ticket_idNoOptional change/incident ticket id for the grant.
tool_nameYesTool the grant authorizes, beyond the identity's standing scope.
identity_idYesIdentity id to grant time-bound access to.
ttl_secondsNoGrant lifetime in seconds.
operator_roleNoOperator role for this write action. Must be admin.viewer
operator_scopesNoComma-separated operator scopes. Must include identity:write.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description adds context beyond annotations: it confirms the destructive nature (already hinted by destructiveHint=true) and specifies required roles/scopes and audit requirements. 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 concise (two sentences), front-loads the purpose, and adds prerequisites efficiently. No unnecessary 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?

Given the tool has 8 parameters, destructive annotations, and an output schema, the description covers the core purpose and key requirements. It could mention the temporal nature or return values, but the output schema likely covers that.

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

Parameters3/5

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

With 100% schema description coverage, the baseline is 3. The description does not add extra explanation beyond the schema, but it is not expected to since the schema already explains each parameter adequately.

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 'Grant' and the resource 'identity time-bound JIT access to one tool', which is specific and distinguishes from sibling tools like identity_revoke (revoke access) and identity_rotate (rotate credentials).

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

Usage Guidelines4/5

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

The description explicitly lists prerequisites (admin role, identity:write scope, audit reason), which guides usage. It implies when to use (for temporary access) but does not explicitly state when not to use or compare to alternatives.

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

identity_issueIdentity IssueA
Destructive

Issue a managed agent identity. Requires admin role, identity:write scope, and an audit reason. Returns the raw token once.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoIdentity role label, for example agent or service.agent
reasonNoHuman audit reason for issuing the identity.
agent_idYesAgent identifier the issued identity represents.
tenant_idNoTenant scope for the identity and audit logging.default
ttl_secondsNoIdentity lifetime in seconds.
blueprint_idNoOptional runtime blueprint id bound to the identity.
allowed_toolsNoComma-separated per-tool scope allowlist. Empty means any tool.
operator_roleNoOperator role for this write action. Must be admin.viewer
operator_scopesNoComma-separated operator scopes. Must include identity:write.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Description discloses that the tool returns a raw token once, adds requirement context beyond annotations (which show destructive=true), and notes non-idempotent and destructive nature.

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 covering action, prerequisites, and return value; no extraneous content.

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

Completeness4/5

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

With 9 parameters and an output schema, description covers prerequisites and output type. Could mention default behaviors but overall 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?

Schema description coverage is 100%, so description adds minimal extra meaning beyond schema. Baseline score is appropriate.

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

Purpose5/5

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

Description clearly states the action 'Issue a managed agent identity' with specific verb and resource, and distinguishes from sibling tools like identity_revoke and identity_rotate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 prerequisites (admin role, identity:write scope, audit reason) but does not explicitly state when to use this tool over alternatives like identity_grant_jit.

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

identity_revokeIdentity RevokeA
Destructive

Revoke a managed identity immediately. Requires admin role, identity:write scope, and an audit reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for revoking the identity.
tenant_idNoTenant scope for audit logging.default
identity_idYesIdentity id to revoke.
operator_roleNoOperator role for this write action. Must be admin.viewer
operator_scopesNoComma-separated operator scopes. Must include identity:write.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description confirms the destructive nature ('immediately') and adds behavioral context about required authentication and audit logging, beyond what annotations (destructiveHint=true) alone 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?

Single sentence front-loads the action and immediately follows with critical usage requirements. 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?

Given the annotations, output schema existence, and complete parameter descriptions, the description covers the key aspects. Lacks details on post-revocation state but is adequate for a destructive action.

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

Parameters3/5

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

Schema description coverage is 100%. The description references the purpose of parameters (e.g., 'audit reason') but adds no new semantic detail beyond the schema definitions.

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

Purpose5/5

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

The description uses the specific verb 'Revoke' and resource 'managed identity', clearly distinguishing it from sibling tools like identity_grant_jit or identity_rotate.

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 explicit requirements (admin role, identity:write scope, audit reason), providing clear usage context. However, it does not mention when not to use or alternative tools.

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

identity_revoke_jitIdentity Revoke JITA
Destructive

Revoke an active JIT grant immediately. Requires admin role, identity:write scope, and an audit reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for revoking the grant.
grant_idYesJIT grant id to revoke.
tenant_idNoTenant scope for audit logging.default
operator_roleNoOperator role for this write action. Must be admin.viewer
operator_scopesNoComma-separated operator scopes. Must include identity:write.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, so the description's mention of 'Revoke' aligns. It adds value by specifying authorization requirements (admin role, scope) and the need for an audit reason, which are not covered by 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, efficient and front-loaded with the action and requirements. No unnecessary words 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?

Given the 100% schema coverage and existence of an output schema, the description is adequate. It covers the tool's purpose, prerequisites, and required parameters, enabling an agent to use it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents each parameter. The description adds minimal extra value beyond what the schema provides, justifying a baseline score of 3.

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 verb 'Revoke' and the resource 'active JIT grant', and specifies immediate action. It clearly differentiates from sibling tools like identity_grant_jit (grant) and identity_revoke (generic revoke) by focusing on JIT grants.

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 mentions required admin role, identity:write scope, and audit reason, providing clear context for when to use the tool. However, it does not explicitly contrast with alternatives like the generic identity_revoke, but the sibling list helps differentiate.

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

identity_rotateIdentity RotateA
Destructive

Rotate a managed identity, keeping the old token live during the overlap window.

    Requires admin role, identity:write scope, and an audit reason.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for rotating the identity.
tenant_idNoTenant scope for audit logging.default
identity_idYesIdentity id to rotate.
ttl_secondsNoLifetime of the replacement identity in seconds.
operator_roleNoOperator role for this write action. Must be admin.viewer
operator_scopesNoComma-separated operator scopes. Must include identity:write.
overlap_secondsNoSeconds the old token stays live during rotation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it notes that the old token stays live during the overlap window, which is critical behavior not captured by the destructiveHint annotation. Requirements are also included.

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: first explains the core action and key behavior, second lists requirements. No unnecessary 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?

Given the high schema coverage and presence of an output schema, the description covers the essential action and requirements. It lacks explicit guidance on when to prefer this over siblings, but the sibling list provides context.

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

Parameters3/5

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

Schema description coverage is 100%, so the description adds no new parameter information beyond referencing the overlap window, which is already described in 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 clearly states the verb 'rotate' and the resource 'managed identity' with a specific behavioral detail about keeping the old token live. This distinguishes it from sibling tools like identity_grant_jit or identity_revoke.

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

Usage Guidelines4/5

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

The description explicitly lists prerequisites: admin role, identity:write scope, and audit reason. It does not explicitly state when not to use, but the clear prerequisites and context provide sufficient guidance.

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

ingest_external_scanIngest External Scanner ReportA
Destructive

Ingest external SARIF, SBOM, or scanner JSON without executing its producer.

    This tool mutates the control plane when ``parse_only`` is false: it bulk-ingests
    findings and, with ``reconcile_absent``, resolves open findings absent from the batch.
    That write path is gated as a destructive action requiring the ``findings:write`` scope.
    ``parse_only`` requests parse locally only and stay a read.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoSource label stored on ingested findings.external_scan
scan_jsonYesJSON string containing tool-agnostic SARIF, CycloneDX, SPDX, Trivy, Grype, or Syft evidence
parse_onlyNoWhen true, parse locally only. When false, bulk-ingest to the control plane when AGENT_BOM_API_URL and credentials are configured.
reconcile_absentNoWhen pushing, mark findings absent from this batch as resolved.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, it explicitly states the mutation side effects, including bulk-ingesting findings and resolving open findings absent from the batch, and notes the required scope. It also clarifies that parse_only keeps it a read. This is rich 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?

The description is front-loaded with a clear one-sentence summary, followed by a focused paragraph on behavior. Every sentence conveys necessary information without waste.

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

Completeness5/5

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

With an output schema present, the description need not explain return values. It covers core aspects: accepted formats, non-execution, write gating, authentication scope, and the read-only parse_only path. This is sufficient for an agent to decide and invoke correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents parameters. The description adds meaning by explaining the behavior implied by parse_only (read vs. write) and reconcile_absent (resolving absent findings), which goes beyond the schema 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 opens with a specific verb ('Ingest') and resource ('external SARIF, SBOM, or scanner JSON'), and the phrase 'without executing its producer' distinguishes it from scanning tools. This clearly differentiates it from siblings like 'scan' and 'generate_sbom'.

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 explains the conditional write behavior ('mutates the control plane when parse_only is false') and notes the destructive-action gating with findings:write scope. However, it does not explicitly name alternative tools or provide direct 'use when vs. instead of' guidance, so it stops short of a 5.

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

intel_daily_briefThreat Intel Daily BriefA
Read-onlyIdempotent

Return a local analyst threat brief from governed intel sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum packages/advisories to inspect, 1-500.
packagesNoOptional inventory packages with purl or ecosystem/name/version objects for local matching.
epss_thresholdNoMinimum EPSS probability for inventory-prioritized CVEs, 0-1.
tenant_profileNoOptional tenant profile with sectors and geos used to match campaign/ransomware inputs.
kev_window_hoursNoKEV date_added lookback window, 1-168 hours.
campaign_activityNoOptional governed campaign activity items with sectors/geos and provenance for tenant-profile matching.
ransomware_claimsNoOptional governed ransomware claim items with sectors/geos and provenance for tenant-profile matching.
telemetry_indicatorsNoOptional governed IoC observations with indicator, hit_count, source_url, license, fetched_at, and content_hash.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds minimal behavioral context beyond stating it is from governed sources. It does not disclose potential limitations, data freshness, or failure states, but annotations cover the safety profile adequately.

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 conveys the core purpose efficiently. Every word is meaningful, and there is no redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 tool has 8 optional parameters and an output schema, the description is adequate but does not elaborate on what 'local' means or the nature of 'governed intel sources.' It relies on the schema and output schema for full context. For a daily brief tool, additional context on scope or typical usage would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add any additional semantic meaning for the parameters beyond what the schema provides. The parameters are well-documented in the schema, so the description's lack of param details does not detract.

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

Purpose5/5

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

The description clearly states the tool returns a local analyst threat brief from governed intel sources. It specifies a specific verb ('Return'), resource ('threat brief'), and source ('governed intel sources'), distinguishing it from siblings like intel_lookup (specific indicator lookup) or intel_sources (source listing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 obtaining a daily brief but provides no explicit guidelines on when to use this tool versus alternatives like intel_lookup or audit_query. No exclusions or conditions are mentioned, leaving the agent to infer context.

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

intel_lookupThreat Intel Advisory LookupA
Read-onlyIdempotent

Look up one advisory from the local threat-intel database.

ParametersJSON Schema
NameRequiredDescriptionDefault
advisory_idYesCVE, GHSA, or OSV advisory ID, e.g. CVE-2024-1234 or GHSA-abcd-1234-wxyz.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds 'local threat-intel database' context, indicating no external fetch. No contradiction. However, it doesn't detail behavior on missing IDs or performance considerations.

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?

Single, well-structured sentence that is front-loaded and free of 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?

Given simplicity (1 param, output schema exists, annotations rich), the description is nearly complete. Minor gap: no mention of error handling or edge cases like invalid IDs, but output schema likely covers return structure.

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

Parameters3/5

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

Schema coverage is 100%, and the schema's parameter description already provides detailed format guidance (e.g., 'CVE-2024-1234 or GHSA-abcd-1234-wxyz'). The tool description adds no new parameter-level information beyond 'one advisory,' so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'Look up one advisory from the local threat-intel database.' It specifies a specific verb (look up) and resource (advisory from a local database), distinguishing it from siblings like intel_match which likely handle multiple matches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 a specific advisory ID is known, but lacks explicit guidance on when to use this tool versus alternatives like intel_match or intel_sources. No mention of when not to use or prerequisites.

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

intel_matchThreat Intel Package MatchA
Read-onlyIdempotent

Match package inventory coordinates to local threat-intel advisories.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoPackage name when purl is omitted.
purlNoPackage URL, e.g. pkg:pypi/requests@2.31.0.
limitNoMaximum packages to match, 1-500.
versionNoPackage version when known.
packagesNoOptional package list with purl or ecosystem/name/version objects for batch matching.
ecosystemNoPackage ecosystem when purl is omitted, e.g. pypi, npm, go, maven, apk.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open world. Description adds that matching is against 'local' advisories, providing context beyond 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?

Single sentence, no fluff, front-loaded verb. Efficient and clear for a tool with high schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 full schema, annotations, and output schema, the description is sufficient. Could hint at batch matching (packages parameter) but schema already does. Not a gap.

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

Parameters3/5

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

Schema has 100% coverage with detailed descriptions for all 6 parameters. Description only vaguely mentions 'package inventory coordinates' but adds no new semantic value beyond schema.

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

Purpose5/5

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

Description uses specific verb 'match' and resource 'package inventory coordinates' to threat-intel advisories. Clearly distinguishes from siblings like intel_lookup and intel_daily_brief.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance. Does not mention alternatives like intel_lookup or scan. Usage is implied but not clarified.

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

intel_sourcesThreat Intel Source CatalogA
Read-onlyIdempotent

Return canonical threat-intel sources and local feed-run freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description needn't restate. It adds value by specifying the kind of data returned (canonical sources, freshness), which is transparent 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, information-dense sentence that front-loads the purpose with zero fluff.

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

Completeness5/5

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

For a zero-parameter tool with an output schema, the description completely covers the purpose and return value, leaving no ambiguity.

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

Parameters4/5

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

No parameters exist, so the description has no burden. Baseline 4 is appropriate as the tool is trivially parameter-free.

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 ('Return') and names the resource ('canonical threat-intel sources', 'local feed-run freshness'), clearly distinguishing it from siblings like intel_lookup and intel_match.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 (getting a catalog), but lacks explicit when-to-use or when-not-to-use guidance relative to alternative tools among the siblings.

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

inventoryAgent InventoryA
Read-onlyIdempotent

List all discovered MCP configurations and servers without CVE scanning.

ParametersJSON Schema
NameRequiredDescriptionDefault
config_pathNoPath to MCP client config directory. Auto-discovers all if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already convey safety and idempotency; description adds the 'no CVE scanning' trait but omits other behaviors like output 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?

Single efficient sentence front-loaded with action verb, no unnecessary 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?

Given rich annotations, schema, and output schema, the description is largely complete, adding the key differentiator; could mention output scope but not required.

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

Parameters3/5

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

Schema description covers the parameter fully; tool description adds no extra meaning beyond 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 lists MCP configurations and servers, with explicit exclusion of CVE scanning, distinguishing it from sibling scanning 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?

Implies usage via 'without CVE scanning' but lacks explicit when-to-use or alternatives; only gives a constraint.

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

inventory_assetAsset Inventory DetailA
Read-onlyIdempotent

Return one asset's attributes, relationships, and blast-radius impact.

Reuses the graph store's node context so an agent gets the same config, inbound/outbound edges, neighbors, sources, and impact the dashboard drawer renders. Returns a clean not-found error when the asset id is not present in the tenant's snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
scan_idNoOptional graph scan ID. Omit to use the latest snapshot.
asset_idYesGraph node ID of the asset to inspect, e.g. 'cloud_resource:ec2' or 'agent:a'.
tenant_idNoTenant scope for the snapshot. Defaults to 'default'.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint, destructiveHint false), the description discloses returning a clean not-found error for missing asset IDs and reuses graph store context. This adds behavioral detail without contradicting 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-load the primary purpose, then add context on behavior and error handling. Every word earns its place, with no fluff.

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

Completeness5/5

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

Given the tool's complexity (3 params, one required), rich annotations, and output schema, the description covers purpose, behavior, error handling, and reuse context. No missing information for an agent to use it correctly.

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

Parameters4/5

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

With 100% schema description coverage, the schema already documents parameters. The description adds value by explaining the overall output (e.g., attributes, relationships, blast-radius impact) and error handling, complementing the schema without redundancy.

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

Purpose5/5

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

The description clearly states it returns one asset's attributes, relationships, and blast-radius impact, using a specific verb ('Return') and resource ('one asset'). This distinguishes it from siblings like inventory_list (list) and blast_radius (separate tool), as it provides a combined detail 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?

The description implies usage for inspecting a single asset and mentions reusing the graph store node context like the dashboard drawer, giving clear context. However, it lacks explicit guidance on when not to use it or alternatives, such as for batch queries or separate blast radius analysis.

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

inventory_listAsset Inventory ListA
Read-onlyIdempotent

Return a filtered, paginated page of inventory asset rows.

    Every filter and the exact whole-query total is evaluated natively by
    the graph store. Facets are self-excluding and never derived from the
    displayed page. Page deep with ``pagination.next_cursor``. Findings
    never appear in the list.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoComma-separated asset entity types to include, e.g. 'agent,cloud_resource'. Finding types are rejected.
limitNoMaximum asset rows to return (1-200).
cursorNoOpaque keyset cursor from a previous page's pagination.next_cursor.
offsetNoPagination offset for non-cursor paging.
searchNoFree-text search over asset name / label / attributes.
sourceNoFilter by data-source / provenance facet.
scan_idNoOptional graph scan ID. Omit to use the latest snapshot.
providerNoFilter by provider facet, e.g. 'aws', 'snowflake'.
severityNoFilter by the asset's highest directly linked finding severity.
tenant_idNoTenant scope for the snapshot. Defaults to 'default'.default
environmentNoFilter by environment facet, e.g. 'production'.
min_severityNoMinimum severity floor for included assets: critical / high / medium / low.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark the tool read-only and idempotent, and the description adds substantial context beyond those flags: every filter and the exact whole-query total are evaluated natively by the graph store, facets are self-excluding and not derived from the displayed page, and findings are excluded. This meaningfully informs how an agent should reason about the call.

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

Conciseness5/5

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

Four short sentences, each carrying distinct information: core operation, execution semantics, pagination behavior, and content exclusion. There is no filler and no repetition of schema defaults.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 12 optional parameters, rich schema documentation, and an output schema, the description covers the behavioral aspects that appear nowhere else. It does not mention sibling routing, but that is more a usage-guideline gap than a completeness gap for invoking this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description does not explain individual parameters, but it adds global filter semantics—native evaluation, self-excluding facets, and non-page-derived totals—that are absent from the schema and affect how filters should be combined.

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?

Opens with a specific verb+resource: 'Return a filtered, paginated page of inventory asset rows.' The phrase 'page of rows' distinguishes it from singular inventory_asset and aggregate inventory_summary, and 'Findings never appear in the list' carves out a clear boundary from finding-focused 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 the list-and-paginate use case and gives a useful exclusion ('Findings never appear'), but it does not name alternatives or state when to prefer inventory_asset or inventory_summary. No explicit when-to-use/when-not-to-use guidance is provided.

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

inventory_summaryAsset Inventory SummaryA
Read-onlyIdempotent

Return unified asset-inventory counts by type and source group.

    Counts every non-finding asset in the tenant's current graph snapshot —
    AI (agents, MCP servers, models, tools, credentials), cloud (resources,
    data stores, accounts), Snowflake, and identity — bucketed by OCSF entity
    type and by operator-facing group (ai / cloud / identity / secrets /
    code). Findings (CVEs, misconfigurations) are excluded; use blast_radius
    or exposure_paths for the finding queue.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
scan_idNoOptional graph scan ID. Omit to use the latest snapshot.
tenant_idNoTenant scope for the snapshot. Defaults to 'default'.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, openWorldHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe, read-only operation. The description adds behavioral context by specifying that it counts assets from the 'current graph snapshot', lists the specific asset types, and clarifies the exclusion of findings. This adds value 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 concise and well-structured. It starts with a one-line summary, then elaborates on scope and grouping, and ends with exclusion and alternatives. Every sentence adds value without 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?

Given the presence of an output schema (not shown but indicated), the description does not need to explain return values. It covers the input parameters, the scope of the count, the grouping dimensions, and what is excluded. It is complete for the tool's complexity.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for both parameters (scan_id and tenant_id). The description does not add significant new semantics beyond what the schema already provides. It mentions 'Omit to use the latest snapshot' but this is also present in the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly defines the tool's purpose: returning unified asset-inventory counts by type and source group. It specifies that it counts only non-finding assets and lists the categories (AI, cloud, Snowflake, identity) and grouping methods (OCSF entity type and operator-facing groups). It also distinguishes itself from siblings by explicitly excluding findings.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool versus alternatives: 'Findings (CVEs, misconfigurations) are excluded; use blast_radius or exposure_paths for the finding queue.' This clearly specifies the context and exclusion, helping the agent choose appropriately among sibling tools.

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

kspm_cluster_postureKSPM Cluster PostureA
Read-onlyIdempotent

Evaluate live Kubernetes cluster security posture (KSPM).

    Read-only inspection of running workloads, RBAC, NetworkPolicy coverage,
    and (opt-in) kubelet config against the pinned CIS Kubernetes Benchmark.
    Distinct from image discovery: this returns SECURITY POSTURE, not a
    container-image inventory.

    Every collector carries an explicit execution state — executed / skipped
    / unevaluable (a denied or absent read) / failed — so a partial run is
    reported 'partial' with a coverage-affecting ScanRun issue and can never
    be laundered into a clean pass. The benchmark provenance, collector
    states, ScanRun outcome, and finding summary reconcile 1:1 with the REST
    /v1/kspm/clusters/posture route and the CLI evidence dict.

    Returns:
        JSON with benchmark provenance, per-collector states, the canonical
        ScanRun outcome, a finding count, and a per-severity summary.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
contextNokubectl context to use (workstation fallback path only). Omit to use the in-cluster SA token.
namespaceNoKubernetes namespace to inspect (ignored when all_namespaces=True). Defaults to 'default'.default
all_namespacesNoInspect every namespace instead of a single one.
enable_nodes_configzNoOpt in to per-node kubelet /configz collection (CIS section 4.2). Off by default.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

Beyond annotations (readOnly, idempotent, non-destructive), the description adds rich context: every collector has an explicit state (executed/skipped/unevaluable/failed), partial runs are reported as 'partial' and cannot be launder into a clean pass, and results reconcile with the REST route and CLI. This is substantial behavioral disclosure not present in annotations.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the core purpose, followed by distinguishing context and behavioral details. It is longer than average but each sentence contributes meaningful information, and the final 'Returns:' block clearly summarizes outputs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 tool's purpose, output, and critical behavioral nuances (collector states, partial run handling). While it does not explicitly state required permissions, the mention of 'unevaluable (a denied or absent read)' implies this. The presence of an output schema reduces the need to describe return values, so the description is 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 description coverage is 100% and parameter descriptions are already detailed (e.g., 'Opt in to per-node kubelet /configz collection (CIS section 4.2)'). The tool description does not add significant parameter-level semantics 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.

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: 'Evaluate live Kubernetes cluster security posture (KSPM)'. It clearly distinguishes itself from image discovery by stating it returns SECURITY POSTURE, not container-image inventory, which differentiates it from sibling tools.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (live cluster posture against CIS benchmark) and explicitly states what it is NOT (image discovery). However, it does not name alternative sibling tools directly, relying more on exclusion than explicit alternatives.

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

license_compliance_scanLicense Compliance ScanA
Read-onlyIdempotent

Evaluate package licenses against an SPDX compliance policy.

    Takes packages (either a prior ``scan`` result JSON or an explicit array
    of ``{name, version, ecosystem, license}`` objects) and classifies each
    license as allowed, warn, or blocked. Normalizes 2,500+ SPDX IDs
    (including deprecated identifiers) and flags network-copyleft licenses
    (AGPL/SSPL/BUSL and similar).

    Args:
        scan_json: JSON of a previous scan result, or a JSON array of
            package objects with license metadata.
        policy_json: Optional JSON policy with ``license_block`` /
            ``license_warn`` glob lists. Falls back to the built-in policy
            (block strong/network copyleft, warn weak copyleft) when empty.

    Returns:
        JSON with per-package license verdicts, the matched policy rule,
        and counts of blocked / warned / allowed packages.

    Call this in release or procurement gates to enforce license policy on
    an agent's dependency set without running a full scan.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
scan_jsonYesJSON string of a previous scan result (from the 'scan' tool) containing agents with packages. Or a JSON array of {"name": "pkg", "version": "1.0", "ecosystem": "npm", "license": "MIT"} objects.
policy_jsonNoOptional JSON policy: {"license_block": ["GPL-*"], "license_warn": ["LGPL-*"]}. Uses default policy (block GPL/AGPL/SSPL/BUSL/EUPL/OSL, warn LGPL/MPL/EPL/CDDL) if empty.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 idempotentHint=true. The description adds behavioral details: normalizing 2,500+ SPDX IDs, flagging network-copyleft licenses, and returning verdicts with matched policy. It provides context beyond the annotations without contradicting them.

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

Conciseness5/5

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

The description is concise, structured with clear sections, and contains no redundant information. Every sentence serves a purpose: purpose, inputs, behavior, output, and usage context.

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

Completeness4/5

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

Given the tool's complexity (license compliance, policy, SPDX normalization) and the presence of annotations and output schema, the description is mostly complete. It covers purpose, inputs, behavior, and output summary. A brief mention of error handling or edge cases would improve completeness, but it is sufficient for correct 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 coverage is 100% with both parameters described. The description largely reiterates the schema for scan_json and policy_json, adding minor context about the default policy. Since the schema already does the heavy lifting, the description does not add significant new meaning beyond what is in the schema.

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

Purpose5/5

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

The description clearly states the tool evaluates package licenses against an SPDX compliance policy, specifying the verb 'evaluate' and resource 'package licenses'. It distinguishes from sibling tools like 'scan' by noting it works on prior scan results or explicit arrays and is meant for release/procurement gates without a full scan.

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 when-to-use guidance: 'Call this in release or procurement gates to enforce license policy on an agent's dependency set without running a full scan.' It also implies alternatives by referencing the scan tool. However, it does not explicitly state when not to use this tool.

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

list_exceptionsList Vulnerability ExceptionsA
Read-onlyIdempotent

List tenant-scoped exception evidence from the canonical store.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum tenant-scoped exception records to return.
statusNoOptional lifecycle status filter: pending, active, expired, or revoked.
tenant_idNoRequested tenant; the MCP server binding remains authoritative.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds operational context by noting tenant scoping and the canonical store, which is useful but does not disclose additional behavioral traits like pagination, rate limits, or auth requirements. Given the annotation coverage, the description provides modest extra value beyond 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.

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 tenant-scoped exception evidence') and adds the store qualifier without filler. Every word earns its place; 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 read-only listing operation with three optional parameters and an output schema provided, the description covers the essential scope. It does not mention edge cases like default tenant resolution or result ordering, but these are minor given the schema and output schema. The tool is simple enough that the description, combined with structured data, is 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 description coverage is 100%—all three parameters (limit, status, tenant_id) have detailed descriptions with defaults and ranges. The description adds no parameter-level detail, which is acceptable because the schema fully documents them. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('List'), a specific resource ('exception evidence'), and a clear scope ('tenant-scoped' and 'canonical store'). It distinguishes itself from sibling tools like request_exception and approve_exception by focusing solely on listing existing exceptions, which is immediately clear from the language.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 clearly implies this tool is for retrieving existing exceptions, but it does not explicitly contrast with create/approve workflows or mention when to prefer it over siblings. It provides context ('tenant-scoped', 'canonical store') but no explicit exclusion or alternative routing, so guidance 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.

marketplace_checkMarketplace Trust CheckA
Read-onlyIdempotent

Pre-install trust check for an MCP server package.

    Queries the package registry (npm or PyPI) for metadata and
    cross-references against the agent-bom MCP threat intelligence registry.
    Returns trust signals including download count, CVE status, and
    registry verification.

    Args:
        package: Package name to check.
        ecosystem: 'npm' or 'pypi'. Defaults to 'npm'.

    Returns:
        JSON with name, version, ecosystem, cve_count, download_count,
        registry_verified, and trust_signals.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
packageYesPackage name, e.g. 'express', 'langchain'.
ecosystemNoPackage ecosystem: 'npm' or 'pypi'.npm

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds value by detailing the sources (npm/PyPI, threat intel registry) and the fields returned, expanding on what the agent can 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 concise and well-structured, starting with a clear one-line summary, followed by a paragraph of detail, then structured Args and Returns sections. Every sentence adds value without 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?

Given the tool's simplicity (2 parameters, output schema provided), the description fully covers the purpose, inputs, outputs, and sources. No missing information for an agent to decide whether to invoke it.

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

Parameters4/5

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

The input schema covers both parameters with descriptions (100% coverage). The description adds examples ('express', 'langchain') and specifies the default for ecosystem, providing additional clarity beyond the schema.

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

Purpose5/5

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

The description clearly states it performs a pre-install trust check for MCP server packages, querying npm/PyPI and cross-referencing threat intelligence. It distinguishes itself from siblings like 'registry_lookup' by adding trust signals, making the purpose very specific.

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 before installing a package through 'Pre-install trust check', but does not explicitly state when not to use it or provide alternatives. The context is clear enough for an agent to infer appropriate usage.

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

model_file_scanModel File ScanA
Read-onlyIdempotent

Scan a directory for ML model files and assess serialization risks.

ParametersJSON Schema
NameRequiredDescriptionDefault
directoryYesDirectory path to scan for ML model files (.gguf, .safetensors, .onnx, .pt, .pkl, .h5, etc.).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, covering safety and side effects. The description adds the concept of 'assess serialization risks', which provides behavioral context beyond a simple directory 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?

The description is a single sentence with no superfluous words. It is appropriately front-loaded with the core action.

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

Completeness4/5

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

Given the single parameter with full schema coverage and annotations covering behavioral traits, the description is mostly complete. However, it lacks explanation of what 'serialization risks' entails and what the output schema provides. Still, it is sufficient for a focused 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 provides 100% coverage with a description of the 'directory' parameter that lists file extensions. The description adds no extra semantic meaning beyond what the schema provides, so 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 verb 'scan' and the resource 'directory for ML model files', and adds the specific assessment of 'serialization risks'. This distinguishes it from sibling tools like dataset_card_scan or prompt_scan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 vs. alternatives like code_scan or vector_db_scan. There is no mention of when not to use it or what distinguishes it from similar scanning tools.

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

model_provenance_scanModel Provenance ScanA
Read-onlyIdempotent

Check ML model provenance and supply chain metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoModel source: 'huggingface' or 'ollama' (default: huggingface).huggingface
model_idYesHuggingFace model ID (e.g. 'meta-llama/Llama-3-8B') or Ollama model name (e.g. 'llama3').

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

The description adds no behavioral details beyond the annotations, which already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description simply restates the purpose, so it does not contradict annotations but also does not enrich the agent's understanding of side effects or constraints.

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

Conciseness5/5

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

The description is a single sentence of 8 words, with no redundancy or filler. It is front-loaded and immediately clear, earning a top score for 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?

The tool is simple (2 parameters, output schema present, no nested objects), and the description covers its core function. While it could mention that results are returned via the output schema or that it queries external sources, the combination of annotations and schema provides sufficient context for an agent to use 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?

With 100% schema description coverage, the input schema already documents both parameters (model_id and source) with clear examples and default values. The description adds no further semantic information, so it meets the baseline expectation for parameter clarity.

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: 'Check ML model provenance and supply chain metadata.' It uses a specific verb ('Check') and resource ('ML model provenance'), and the tool name itself differentiates it from sibling tools like model_file_scan or license_compliance_scan, which focus on other aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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, nor does it mention prerequisites or limitations. It only states what the tool does, leaving the agent to 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.

nhi_discoverNHI DiscoverA
Read-onlyIdempotent

Discover non-human identities (Okta service apps / Entra service principals).

    Read-only and reference-only: returns normalized identity metadata (id,
    name, owner, created, credential expiry, scope references) — never secret
    material. Each provider is gated by its own discovery env flag and token;
    a disabled or unconfigured provider is reported in ``providers`` with a
    clear status rather than failing the request.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
providersNoComma-separated IdP providers to query: okta, entra. Omit to query both.
tenant_idNoTenant scope for the response envelope. Defaults to the control-plane default tenant.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds that it never returns secret material and explains graceful degradation for disabled providers, providing useful behavioral context 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?

Two concise sentences front-load the core purpose and add relevant behavioral details without 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?

Given the presence of an output schema and comprehensive annotations, the description covers key aspects: what is returned, safety guarantees, and error handling. Could mention pagination or limits but not necessary for this use case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 description adds minimal new meaning beyond the schema descriptions. It mentions provider gating but does not elaborate on 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 clearly states the tool discovers non-human identities (Okta service apps / Entra service principals) with a specific verb and resource. It distinguishes from sibling tools that target different domains or actions.

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

Usage Guidelines3/5

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

Provides usage context: read-only, reference-only, and explains provider gating and error handling. However, it does not explicitly state when to use versus alternatives or when not to use.

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

policy_checkPolicy EvaluationA
Read-onlyIdempotent

Evaluate a security policy against current scan results.

    Runs a scan, then evaluates the provided policy rules against the
    findings. Policies can gate on severity thresholds, CISA KEV status,
    AI risk flags, credential exposure, and denied packages.

    Args:
        policy_json: JSON string containing policy rules. Example:
            {"rules": [{"id": "no-critical", "severity_gte": "critical",
            "action": "fail"}, {"id": "no-kev", "kev": true, "action": "fail"}]}

    Returns:
        JSON with passed (bool), violations list, failure_count, and
        warning_count.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
policy_jsonYesJSON string containing policy rules, e.g. {"rules": [{"id": "no-critical", "severity_gte": "critical", "action": "fail"}]}.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations indicate read-only, non-destructive, and idempotent behavior. The description adds that it runs a scan and evaluates rules, and specifies the return structure (passed, violations, etc.), which is beyond 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.

Conciseness3/5

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

The description is well-structured with summary, details, and return info, but is slightly verbose. Could be more concise while retaining key 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 and existence of output schema, the description covers the essential behavior and expected output. However, it lacks details on error handling or edge cases (e.g., invalid policy_json).

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

Parameters4/5

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

With 100% schema coverage, the description still adds value by providing an illustrative example of the policy_json format and listing supported rule types (severity, KEV, etc.), enhancing understanding beyond the schema description.

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

Purpose5/5

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

The description clearly states it evaluates a security policy against current scan results, with a specific verb and resource. It distinguishes from sibling tools like 'compliance' or 'code_scan' by focusing on custom policy rules.

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

Usage Guidelines3/5

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

The description explains the tool's purpose but lacks explicit guidance on when to use it versus alternatives like 'check' or 'should_i_deploy'. It provides context on policy components but no when-not statements.

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

prompt_scanPrompt Template ScanA
Read-onlyIdempotent

Scan prompt template files for prompt-injection and unsafe-interpolation risks.

    Walks the given directory for prompt assets (``.prompt`` files,
    ``system_prompt.*``, and ``prompts/`` directories), then statically
    inspects each template for injection-prone patterns and unsafe variable
    interpolation (untrusted input concatenated into instructions, missing
    delimiters, tool/role-confusion phrasing).

    Args:
        directory: Directory path to scan for prompt template files.

    Returns:
        JSON with the scanned files, per-file findings (rule id, severity,
        line, message), and a summary count by severity.

    Use this before shipping or registering agent prompts to catch
    injection exposure that package and CVE scans do not cover.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
directoryYesDirectory path to scan for prompt template files (.prompt, system_prompt.*, prompts/ directories).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, idempotent, and open-world behavior. The description adds value by detailing the walking of directories and static inspection for specific patterns, which goes 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?

At approximately 100 words, the description is concise. It is front-loaded with the purpose, followed by args, returns, and usage guidance, with no unnecessary sentences.

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

Completeness5/5

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

Given the presence of an output schema, the description succinctly describes the return value. The tool is simple (one parameter), and the description covers purpose, behavior, and usage adequately.

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 single parameter 'directory' is fully documented in the schema, but the description adds context about the file types scanned (.prompt, system_prompt.*, prompts/), which enriches 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 tool scans prompt template files for prompt-injection and unsafe-interpolation risks, specifying the verb 'scan' and the resources (prompt files). It distinguishes itself from sibling tools that focus on code or model scans.

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 before shipping or registering agent prompts, and contrasts with package and CVE scans to indicate complementary usage. It provides clear context but does not list alternative tools.

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

proxy_alertsProxy AlertsA
Read-onlyIdempotent

Return recent runtime proxy alerts without prompts, arguments, or responses.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum alerts to return.
detectorNoOptional detector name filter, for example credential_leak.
severityNoOptional severity filter: critical, high, medium, low, or info.
tenant_idNoTenant scope to read. Defaults to the control-plane default tenant.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

While annotations already mark it as read-only and idempotent, the description adds value by specifying that returned alerts exclude prompts, arguments, or responses. This behavioral detail aids agent understanding of the tool's scope beyond standard 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, well-structured sentence that immediately conveys the tool's purpose and key behavioral trait. There is no extraneous information.

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

Completeness4/5

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

Given the comprehensive annotations, complete parameter schema, and presence of an output schema, the description is largely sufficient. It omits details like ordering or default time range, but 'recent' provides adequate context for typical use.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The tool description does not add parameter-specific context beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool returns 'recent runtime proxy alerts' and specifies that it does not include 'prompts, arguments, or responses,' which precisely defines its output. This distinguishes it from sibling tools like 'proxy_status' or other alert-related tools.

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

Usage 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. The description does not mention use cases, when to avoid, or suggest other tools for different needs.

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

proxy_statusProxy StatusA
Read-onlyIdempotent

Return current MCP proxy metrics and alert summary, if a session is active.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_idNoTenant scope to summarize. Defaults to the control-plane default tenant.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds important context with 'if a session is active', which is not in annotations. 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?

Single sentence, front-loaded with the action and object, no unnecessary words. Excellent 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?

Given an output schema exists (per context signals), the description adequately states what is returned and the key condition. However, it does not mention any time bounds or format, but these may be in the output schema. Slight deduction for lack of guidance on typical usage patterns.

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

Parameters3/5

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

Schema coverage is 100% with a clear description and default for 'tenant_id'. The tool description does not add additional parameter semantics beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Return', the resource 'MCP proxy metrics and alert summary', and includes a conditional scope 'if a session is active'. This distinguishes it from sibling tools like 'proxy_alerts' (alerts only) and 'gateway_status' (gateway component).

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. The implied usage is when proxy metrics and alerts are needed. Given siblings like 'proxy_alerts' and 'gateway_status', some context on differentiation would improve the score.

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

registry_lookupRegistry LookupA
Read-onlyIdempotent

Query the agent-bom MCP server threat intelligence registry.

    Look up risk level, known tools, credential requirements, and
    verification status for known MCP servers. The registry contains
    109+ servers with security metadata.

    Args:
        server_name: MCP server name to look up (e.g. "filesystem",
                     "@modelcontextprotocol/server-github").
        package_name: Package name to search for (e.g. "mcp-server-sqlite").
                      At least one of server_name or package_name is required.

    Returns:
        JSON with registry entry: risk_level, verified, tools,
        credential_env_vars, risk_justification. Returns found=false
        if not found.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
server_nameNoMCP server name to look up, e.g. 'filesystem', '@modelcontextprotocol/server-github'.
package_nameNoPackage name to search for, e.g. 'mcp-server-sqlite'. At least one of server_name or package_name is required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 idempotentHint=true. The description adds value by detailing the return structure (risk_level, verified, etc.) and the behavior when a server is not found (found=false). 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 concise and well-structured: a brief first line, followed by a paragraph, then Args and Returns sections. Every sentence serves a purpose, and the most important information (purpose) is front-loaded.

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

Completeness5/5

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

The description fully covers the tool's purpose, parameters, and return format. Given the presence of an output schema, the description could have omitted return details, but it includes them for clarity. It also provides contextual info (109+ servers) and parameter constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 descriptions for both parameters. The description repeats these descriptions in the Args section and adds examples (e.g., 'filesystem', 'mcp-server-sqlite'). This is helpful but does not provide significant additional meaning beyond the schema.

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

Purpose5/5

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

The description clearly states it queries a specific registry (agent-bom MCP server threat intelligence) and lists the data fields returned (risk level, tools, credentials, verification). It distinguishes itself from sibling tools like intel_lookup by being focused on MCP server security metadata.

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

Usage Guidelines4/5

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

The description provides clear context on what to use the tool for (look up MCP server details) and specifies that at least one parameter is required. However, it does not explicitly mention when not to use it or provide alternative tools for similar lookups.

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

registry_sweep_scanRegistry Image SweepA
Read-onlyIdempotent

Sweep an entire cloud container registry: enumerate every repo+tag, dedupe by digest, cap, and scan each (read-only).

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoAWS region (ecr only).
profileNoAWS credential profile (ecr only).
projectNoGCP project id (gar only).
locationNoGAR location/multi-region, e.g. 'us' (gar only).
providerYesContainer registry to sweep: 'ecr' (AWS), 'acr' (Azure), or 'gar' (GCP Artifact Registry).
registryNoACR login server, e.g. 'myacr.azurecr.io' (acr only).
max_imagesNoCap on images scanned (default: AGENT_BOM_REGISTRY_MAX_IMAGES or 50).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds valuable behavioral context: 'read-only', enumerating, deduplicating by digest, capping, and scanning. This expands beyond 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?

A single sentence that is front-loaded with action. Every word earns its place; no fluff. Highly concise and structured.

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

Completeness5/5

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

Given the tool has an output schema and 7 parameters (1 required), the description explains the core workflow (enumerate, dedupe, cap, scan) and safety (read-only). It is complete enough for an agent to understand scope. The max_images default is in schema. No gaps.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description does not add meaning specific to parameters (region, profile, etc.) beyond the schema. It explains the overall process but not parameter details, so it stays at 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 ('sweep') and resource ('entire cloud container registry'), with detailed steps: enumerate, dedupe, cap, scan. It clearly distinguishes from sibling tools like 'registry_lookup' (specific image) and 'scan' (general) by targeting full registry sweeping.

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 for scanning all images in a registry, but does not explicitly state when not to use or suggest alternatives like 'registry_lookup' for individual images. Good context but lacks exclusions.

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

remediateRemediation PlanA
Read-onlyIdempotent

Generate a remediation plan for vulnerabilities in your AI agent setup.

    Scans for vulnerabilities, then generates actionable fix commands for
    each affected package (npm install, pip install), credential scope
    reduction guidance, and reports on unfixable vulnerabilities.

    Args:
        config_path: Path to a specific MCP config directory.
                     If not provided, auto-discovers all local agent configs.
        image: Docker image reference to scan (e.g. "nginx:1.25").

    Returns:
        JSON with package_fixes (upgrade commands by ecosystem),
        credential_fixes (scope reduction steps), and unfixable items.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
imageNoDocker image to scan, e.g. 'nginx:1.25'.
config_pathNoPath to MCP client config directory. Auto-discovers all if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

The description fully discloses behavior: scanning for vulnerabilities, generating fix commands (npm install, pip install), credential scope reduction guidance, and reporting unfixable items. Annotations (readOnlyHint=true) align with generating instructions without executing them.

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 well-structured with clear sections (purpose, scanning, arguments, returns). It is slightly lengthy but each sentence provides relevant information.

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

Completeness5/5

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

Given the tool's complexity, the description covers all necessary aspects: scanning, fix generation, optional parameters, and return structure. Together with the input and output schema, the description is fully complete.

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

Parameters3/5

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

Schema coverage is 100%, and the description adds minimal value beyond the schema. It clarifies behavior for config_path (auto-discovers if omitted) and image, but this is largely repetitive.

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: generating remediation plans for vulnerabilities in AI agent setups. It specifies scanning for vulnerabilities and producing fix commands, distinguishing it from sibling tools that focus on scanning alone.

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 (after vulnerabilities are found) and describes the optional parameters (config_path, image). However, it does not explicitly mention when not to use or compare to alternative tools.

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

request_exceptionRequest Vulnerability ExceptionC
Destructive

Create a pending exception through the shared REST/UI/MCP lifecycle.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for requesting the exception.
tenant_idNoRequested tenant; the MCP server binding remains authoritative.default
expires_atNoOptional timezone-aware ISO-8601 expiry.
server_nameNoOptional server or asset scope.
package_nameNoAffected package name, or '*' for any package.*
operator_roleNoOperator role for this audited write.viewer
operator_scopesNoComma-separated operator scopes for this audited write.
exception_reasonNoHuman rationale for the exception request.
vulnerability_idNoVulnerability or advisory id to except.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the agent knows this is a write operation. The description adds the 'pending' state, which is useful, but it does not explain the effects, reversibility, or what the output represents. The 'shared REST/UI/MCP lifecycle' phrase is vague and adds little 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.

Conciseness4/5

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

The description is a single sentence with no redundancy or fluff, making it very concise. The sentence gives a clear action and object, though the lifecycle phrase is ambiguous. It is well-structured for its brevity, but the content is minimal rather than effectively enriched.

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 9 parameters and an output schema, the description is severely under-specified. It does not explain what a 'pending exception' is, when to submit one, what the response contains, or how it relates to the exception workflow. The schema covers parameter syntax, but the tool-level context needed for correct invocation is largely missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all nine parameters are documented in the schema. The tool description adds no parameter-specific meaning, which aligns with the baseline of 3 for high schema coverage. No compensation is needed since the schema suffices.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 (create) and resource (pending exception), making the core purpose clear. However, it does not differentiate from sibling tools like approve_exception or list_exceptions, which would have earned a 5. The title adds vulnerability specificity, but the description itself remains generic about the exception domain.

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 alternatives. Sibling tools include list_exceptions and approve_exception, but the description neither mentions them nor explains the lifecycle stage at which this tool applies. The vague phrase 'shared REST/UI/MCP lifecycle' offers no actionable usage context.

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

risk_campaign_workflowManage Remediation Campaign WorkflowA
Destructive

List, assign, ticket, or verify a tenant-scoped remediation campaign.

    Uses the same campaign store and verification service as REST and CLI.
    Writes require an authenticated admin operator with ``findings:write``.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoBounded queue or ticket action page size.
ownerNoOwner to assign during update.
stateNoWorkflow state: open, in_progress, blocked, or done.
actionNoWorkflow action: list, update, verify, verification_queue, ticket_create, or ticket_sync.list
cursorNoContinuation cursor for bounded queue or ticket actions.
projectNoOptional ticketing project override.
versionNoCurrent optimistic-lock version for update or verify.
tenant_idNoRequested tenant; the MCP server binding remains authoritative.default
issue_typeNoOptional ticketing issue type override.
sla_due_atNoTimezone-aware ISO-8601 SLA deadline during update.
campaign_idNoCampaign id for update or verify.
connection_idNoStored ticketing connection id for ticket_create.
operator_roleNoOperator role for this write action (audit).viewer
idempotency_keyNoRetry key for verify; replays return the original result.
operator_scopesNoComma-separated operator scopes (audit).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

The description adds a concrete auth precondition: writes require an authenticated admin operator with `findings:write`. The mention of the same campaign store/verification service also adds context about consistency. This does not contradict the `destructiveHint: true` annotation.

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 only two concise sentences and includes the most critical facts first: what the tool does and who can perform writes. There is no fluff or redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 a rich input schema covering all 15 parameters and action descriptions, the overall information is sufficient. The only minor gap is that it does not set all action modes, such as `verification_queue`, in the free-text description, but that is still easily discovered through 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?

Every parameter in the input schema has its own description, and schema coverage is 100%. The tool description itself does not need to explain parameters, so the text meets the baseline. No extra parameter semantics beyond schema are added.

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

Purpose4/5

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

The description explicitly says 'List, assign, ticket, or verify a tenant-scoped remediation campaign', giving a clear verb list and resource. It does not explicitly show why this tool is better than sibling tools like `remediate` or `verify`, but the campaign workflow scope is clear.

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

Usage Guidelines3/5

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

The description provides useful context: the operation is tenant-scoped, reuses the same campaign store/verification service as REST and CLI, and writes require an authenticated admin with `findings:write`. It does not provide explicit 'when to use' or 'when not to use' guidance relative to 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.

runtime_blueprint_driftRuntime Blueprint DriftA
Read-onlyIdempotent

Compare current runtime traffic with an approved role/profile blueprint.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_idNoTenant scope to summarize. Defaults to the control-plane default tenant.default
blueprint_idYesBlueprint id to evaluate, such as developer, security_analyst, mlops, finance, or admin.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description's 'Compare' action adds minimal behavioral context. No additional traits like performance or scope are disclosed.

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

Conciseness5/5

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

A single sentence that is concise and front-loaded with the core action and resources, with no 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?

While the description is functionally adequate given the output schema and high schema coverage, it lacks context on what 'drift' entails or how results are presented, leaving room for interpretation.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters having descriptions. The tool description does not add any parameter-specific detail beyond the schema, so 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 clearly states the verb 'Compare' and the resources 'current runtime traffic' and 'approved role/profile blueprint', making the tool's purpose specific and distinguishable from siblings like 'runtime_blueprints' which likely manages blueprints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 on when to use this tool versus alternatives such as 'runtime_correlate' or 'diff'. The description does not provide conditions or prerequisites for use.

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

runtime_blueprintsRuntime BlueprintsA
Read-onlyIdempotent

Return canonical role/profile blueprints for runtime policy design.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_idNoTenant scope for the response envelope.default
blueprint_idNoOptional blueprint id such as developer, security_analyst, mlops, finance, or admin.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds context by specifying 'canonical' blueprints and the design purpose, enhancing transparency beyond annotations.

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

Conciseness5/5

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

A single, front-loaded sentence of 11 words with no superfluous information. Every word serves a purpose, making it highly efficient.

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

Completeness4/5

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

Given the simplicity of the tool (two optional params, output schema present), the description adequately covers the purpose and return type. It could implicitly clarify that omitting blueprint_id returns all blueprints, but this is minor.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description does not add any additional meaning to the parameters beyond what the schema provides, so no upward adjustment.

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 explicitly states the tool returns canonical role/profile blueprints for runtime policy design, using a specific verb and resource. It clearly distinguishes from siblings like runtime_blueprint_drift, which focuses on drift detection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 runtime policy design but provides no explicit guidance on when to use this tool versus alternatives, such as runtime_blueprint_drift. No exclusions or context are mentioned.

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

runtime_correlateRuntime CorrelationA
Read-onlyIdempotent

Cross-reference vulnerability scan results with proxy runtime audit logs.

    Identifies which vulnerable tools were ACTUALLY CALLED in production,
    distinguishing confirmed attack surface from theoretical risk. Produces
    risk-amplified findings: a vulnerable tool that was called 100 times is
    higher priority than one never invoked.

    Also accepts an OTel trace file (``otel_trace``) to extract ML API call
    provenance: which models were called, token usage, and deprecation advisories.

    Requires a proxy audit log (generated by running agent-bom proxy with
    the --log flag). Without an audit log, returns scan results only.

    Returns:
        JSON with correlated findings (CVE + tool call data + amplified risk),
        summary stats, uncalled vulnerable tools, and ml_api_calls provenance.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
audit_logNoPath to proxy audit JSONL log file (generated by 'agent-bom proxy --log audit.jsonl').
otel_traceNoPath to OTel OTLP JSON trace file for ML API provenance (detects deprecated/vulnerable model versions).
config_pathNoPath to MCP config directory (e.g. ~/.config/claude) or 'auto' for default discovery.auto

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds behavioral context: it distinguishes between output with and without an audit log, and explains the risk-amplified findings. It does not contradict annotations and provides useful behavioral details beyond what annotations alone convey.

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

Conciseness4/5

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

The description is front-loaded with the main purpose and uses bullet points for the return value. It is clear and each sentence adds value, though it could be slightly more concise.

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

Completeness4/5

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

Given the tool's complexity, the description covers the main purpose, required inputs, alternative behavior (without audit log), and output format. It does not reiterate the output schema since one exists, making it sufficiently complete for an agent to understand when and how to invoke the tool.

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

Parameters5/5

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

Schema description coverage is 100% with detailed per-parameter descriptions. The tool description adds further context, such as the OTel trace being used for ML API call provenance, enriching the meaning beyond the schema.

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

Purpose5/5

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

The description clearly states it cross-references vulnerability scan results with proxy runtime audit logs to identify which vulnerable tools were actually called. It uses specific verbs like 'cross-reference', 'identifies', and 'distinguishing confirmed attack surface from theoretical risk', which differentiates it from siblings like ai_inventory_scan or audit_query.

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 requirement for a proxy audit log and explains what happens without it ('returns scan results only'). It also mentions the OTel trace as an optional input. While it does not explicitly list alternatives or when not to use, it provides clear context on prerequisites and fallback behavior.

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

runtime_evidence_ingestIngest CWPP Runtime EvidenceA
Destructive

Ingest CWPP runtime/EDR workload signals into the local evidence store.

    Mutates the durable runtime-evidence store for the authenticated source's
    tenant. Sources are provisioned via ``AGENT_BOM_RUNTIME_EVIDENCE_SOURCES``.
    Fail-closed on auth; never writes to a customer cloud target.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
secretYesShared secret for the source (never logged).
source_idYesPre-registered runtime evidence source id.
signals_jsonYesJSON string: a list of signal objects, or {"signals": [...]} matching the POST /v1/cloud/runtime-evidence/ingest body shape (metadata only).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior5/5

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

The description goes beyond the annotations by specifying that the call mutates a durable runtime-evidence store scoped to the authenticated tenant, fails closed on auth, and never writes to a customer cloud target. This gives the agent critical behavioral context (side effects, auth sensitivity, write target) that annotations alone do not convey.

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

Conciseness5/5

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

The description is concise and front-loaded: the primary action and target appear in the first sentence, followed by three compact clauses covering mutation, provisioning, and auth behavior. No word is wasted.

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

Completeness5/5

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

With an output schema present, return values need not be described. The description covers the key contextual elements: what is mutated, where data goes, how sources are provisioned, and auth failure behavior, which is sufficient for the agent to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents source_id, secret, and signals_json. The description does not add parameter-level detail beyond the schema, which matches the baseline of 3.

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

Purpose4/5

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

The description identifies a specific action ('Ingest') and resource ('CWPP runtime/EDR workload signals') into an explicit target ('local evidence store'), making the tool's purpose clear. However, it does not distinguish this from sibling ingestion tools like ingest_external_scan or intel_sources; the only differentiation is the resource-specific wording, not an explicit contrast.

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

Usage Guidelines3/5

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

It provides a useful prerequisite: sources must be provisioned via AGENT_BOM_RUNTIME_EVIDENCE_SOURCES. It does not state when to prefer this over alternative tools or give any when-not-to-use guidance, so the usage context 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.

runtime_production_indexRuntime Production IndexA
Read-onlyIdempotent

Return metadata-only runtime production posture for agent/tool traffic.

Summarizes tool-call volume, block rate, policy decisions, authorization trace posture, alerts, active sources/sessions, freshness, and retention mode without returning prompts, raw arguments, responses, or credential values.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_idNoTenant scope to summarize. Defaults to the control-plane default tenant.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds critical context that no sensitive data (prompts, arguments, credentials) is returned, which is beyond what annotations provide. 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 sentences: first states the core purpose, second lists included and excluded details. Front-loaded and every sentence adds value with no redundancy.

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

Completeness5/5

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

Given the tool has one optional parameter, full annotations, and an output schema, the description covers all necessary context: purpose, what is summarized, and what is excluded. No gaps for an agent to safely 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 schema has one parameter (tenant_id) with full documentation and 100% coverage. The description adds no additional meaning about the parameter beyond what the schema provides, meeting 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?

The description clearly states it returns metadata-only runtime production posture and lists specific aspects like tool-call volume, block rate, policy decisions, etc. It distinguishes itself by emphasizing it does not return prompts, raw arguments, or credential values, which separates it from sibling tools that may return raw data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 obtaining a summary overview without sensitive data, but does not explicitly state when to use versus alternatives or when not to use. Given many sibling tools, more explicit guidance would help agents decide.

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

scanSecurity ScanA
Read-onlyIdempotent

Run a full AI supply chain security scan and return an AI-BOM.

    Point it at a target with one of:
      • repo_url     — a public git repo URL (cloned + scanned, no checkout)
      • config_path  — a local project / MCP-config directory
      • image        — a Docker image
      • sbom_path    — an existing CycloneDX/SPDX SBOM
      • package      — a single package or MCP launch command (pair it with
                       ``ecosystem`` when the spec names no launcher)
    With none of these, it auto-discovers local MCP clients (Claude Desktop,
    Cursor, Windsurf, VS Code Copilot, OpenClaw, etc.).

    It extracts package dependencies, queries OSV.dev for CVEs, assesses
    config security (credential exposure, tool access), computes blast
    radius, and returns structured results. Scanning is fully static and
    read-only — repository and image contents are parsed, never executed.

    Returns:
        JSON with the complete AI-BOM report including agents, packages,
        vulnerabilities, blast radius, and remediation guidance.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
imageNoDocker image to scan (e.g. 'nginx:1.25', 'ghcr.io/org/app:v1').
enrichNoEnable NVD CVSS, EPSS probability, and CISA KEV enrichment.
policyNoPolicy object to evaluate alongside scan results, e.g. {"rules": [{"id": "no-critical", "severity_gte": "critical", "action": "fail"}]}.
offlineNoUse the local vulnerability DB only and skip registry, OSV, GHSA, and NVIDIA network lookups.
packageNoDirect package or MCP launch command to scan, e.g. 'npx @modelcontextprotocol/server-filesystem@2025.1.14' or '@modelcontextprotocol/server-filesystem'. A bare 'name@version' spec is assumed to be npm — pass ``ecosystem`` for anything else.
repo_urlNoPublic git repository URL to clone and scan, e.g. 'https://github.com/org/repo'. Maps the repo's dependencies, project structure, secrets, IaC, and AI/MCP usage into an AI-BOM. Static and read-only: the repository is shallow-cloned into a temporary directory, scanned without ever executing its code, then deleted. The fastest way to point this tool at a target — no local checkout required.
ecosystemNoEcosystem of ``package`` when the spec does not name a launcher: 'npm', 'pypi', 'go', 'cargo', 'maven', 'nuget', 'rubygems', 'composer', 'swift', 'pub', 'hex', 'conda', 'deb', 'apk', or 'rpm'. Omitted, the ecosystem is inferred from the spec (PEP 440 specifiers such as 'flask==0.12.2' are PyPI) and any assumption is reported in the result warnings.
sbom_pathNoPath to existing CycloneDX or SPDX JSON SBOM file to ingest.
scorecardNoEnrich packages with OpenSSF Scorecard scores (requires resolvable GitHub repos).
db_sourcesNoComma-separated DB sources to sync before scanning (e.g. 'nvd,ghsa,osv,epss,kev').
transitiveNoResolve transitive dependencies for npx/uvx packages.
config_pathNoLocal directory to scan — a project root or an MCP client config directory. Auto-discovers installed MCP clients if omitted unless no_discover=true. Mutually exclusive with repo_url.
no_discoverNoDisable ambient host MCP-client discovery. Explicit repo/config, image, SBOM, and package targets are still scanned; use this for deterministic CI.
fail_severityNoReturn failure status if vulns at this severity or higher: critical, high, medium, low.
output_formatNoOutput format: 'json' (default), 'sarif', 'cyclonedx', 'spdx', 'junit', 'csv', or 'markdown'.json
warn_severityNoReturn warning status (gate_status=warn, exit 0) when vulns at this severity or higher exist. Use with fail_severity for two-tier CI gates, e.g. warn_severity='medium', fail_severity='critical'.
auto_update_dbNoExplicitly refresh the local vuln DB when older than the daily freshness target before scanning.
verify_integrityNoVerify package SHA-256/SRI hashes and SLSA provenance against registries.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, destructiveHint), the description adds crucial behavioral detail: 'Scanning is fully static and read-only — repository and image contents are parsed, never executed.' It also discloses that repos are shallow-cloned into a temporary directory, scanned, and deleted. This goes well beyond the annotations and reassures an agent 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?

The description is well-structured with a clear opening line, bulleted target options, a compact summary of the scan process, and a Returns section. Every sentence earns its place; there is no filler. The front-loaded purpose and scannable list make it easy for an agent to parse quickly.

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

Completeness5/5

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

For a tool with 18 parameters and a rich output schema, the description is remarkably complete. It covers all target types, the scanning methodology, the static/read-only safety guarantee, and the return format. The existence of an output schema means the description need not detail the JSON structure. The description leaves no critical gap for an agent to call the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents each parameter with rich descriptions. The tool description adds value by explaining how parameters interact (e.g., package requires ecosystem when no launcher is named) and the auto-discovery behavior when no target is given. This contextual information helps an agent choose parameters correctly without re-reading the schema, though it doesn't describe individual parameters' formats or defaults 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 opens with a specific verb and resource: 'Run a full AI supply chain security scan and return an AI-BOM.' It then enumerates the distinct target types (repo_url, config_path, image, sbom_path, package) and outlines what the scan does (extract dependencies, query OSV, assess config, compute blast radius). This clearly distinguishes it from siblings like skill_scan or vector_db_scan, which target narrower scopes.

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

Usage Guidelines4/5

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

The description gives explicit guidance on how to select a target: 'Point it at a target with one of...' and explains the auto-discovery fallback when none is provided. It also clarifies the pairings of package with ecosystem and the mutual exclusivity of config_path and repo_url. However, it does not explicitly name alternative tools or state when not to use this tool versus siblings, 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.

shield_break_glassShield Break GlassA
Destructive

Run Shield break-glass override. Requires admin role, shield:write scope, and audit reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for emergency Shield override.
tenant_idNoTenant scope for audit logging.default
session_idNoShield session id to override.default
operator_roleNoOperator role for this write action. Must be admin.viewer
operator_scopesNoComma-separated operator scopes. Must include shield:write.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate destructive behavior. The description adds context about required authorization (admin role, shield:write scope, audit reason), which is valuable for safe invocation. 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, succinct sentence that covers the key points without unnecessary words. It is front-loaded with the action, then requirements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 destructive tool with an output schema, the description covers purpose, requirements, and mandatory parameters. It does not detail return values (handled by output schema) and is sufficiently complete for safe use.

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

Parameters3/5

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

Schema description coverage is 100%, so the description adds minimal new meaning. It mentions admin role and shield:write scope, which align with parameter descriptions but do not exceed them. 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 action ('Run Shield break-glass override'), specifying a distinct verb and resource. It differentiates from sibling tools like shield_start, shield_status, and shield_unblock by focusing on an emergency override scenario.

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 prerequisites (admin role, shield:write scope, audit reason), guiding when to use the tool. However, it does not mention when not to use it or suggest alternatives, such as shield_unblock for non-emergency cases.

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

shield_startShield StartA
Destructive

Start Shield enforcement for a session. Requires admin role, shield:write scope, and audit reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for starting Shield enforcement.
tenant_idNoTenant scope for audit logging.default
session_idNoShield session id to start.default
operator_roleNoOperator role for this write action. Must be admin.viewer
operator_scopesNoComma-separated operator scopes. Must include shield:write.
correlation_windowNoAlert correlation window in seconds.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true and readOnlyHint=false, implying the tool modifies state. The description adds context about administrative requirements and the need for an audit reason, which goes beyond what annotations alone convey. 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?

Single sentence with maximum efficiency: states action first, then requirements. Every word earns its place, 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?

Tool has 6 parameters (all optional), output schema exists (not shown). Description covers prerequisites but omits potential side effects or error conditions. However, annotations and output schema fill some gaps, making it mostly complete.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds minimal extra meaning beyond the schema, only clarifying that operator_role must be admin and operator_scopes must include shield:write (already stated in schema 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?

Description clearly states 'Start Shield enforcement for a session,' specifying the verb and resource. It is distinct from sibling tools like shield_status, shield_unblock, and shield_break_glass, which handle different operations on the same resource.

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 prerequisites: 'Requires admin role, shield:write scope, and audit reason.' This informs the agent of necessary conditions but does not explicitly exclude alternative tools or specify when not to use.

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

shield_statusShield StatusA
Read-onlyIdempotent

Return current Shield assessment for a session without changing enforcement state.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoShield session id to inspect.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds no new behavioral details beyond confirming no state change, which aligns 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?

Single sentence, front-loaded with action and constraint, no redundant words. Optimal 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?

With an output schema present, the description need not explain return values. It sufficiently covers the tool's purpose and constraint for a simple read-only 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 covers the single parameter with full description. The tool description adds no additional 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.

Purpose5/5

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

Description clearly states the verb 'Return', resource 'Shield assessment for a session', and a key constraint 'without changing enforcement state', distinguishing it from siblings that modify state.

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

Usage Guidelines4/5

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

Description implies read-only usage by stating 'without changing enforcement state', but does not explicitly compare with sibling tools or provide 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.

shield_unblockShield UnblockA
Destructive

Unblock Shield enforcement for a session. Requires admin role, shield:write scope, and audit reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for unblocking Shield enforcement.
tenant_idNoTenant scope for audit logging.default
session_idNoShield session id to unblock.default
operator_roleNoOperator role for this write action. Must be admin.viewer
operator_scopesNoComma-separated operator scopes. Must include shield:write.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Adds valuable behavioral details (required role, scope, audit reason) beyond annotations. Annotations already indicate destructive and non-idempotent, and description aligns 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?

Two sentences, front-loaded with the key action, no wasted words. Efficiently conveys essential 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 presence of an output schema, the description provides sufficient context. Could mention unblocking only works on blocked sessions, but the overall completeness is good.

Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 detailed parameter descriptions. The tool description adds no new meaning beyond what the schema already provides for each 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?

Description clearly states 'Unblock Shield enforcement for a session' with explicit required permissions, distinguishing it from siblings like shield_start and shield_break_glass.

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

Usage Guidelines3/5

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

Provides prerequisites (admin role, shield:write scope, audit reason) but does not explicitly say when to use this tool versus alternatives or when not to use it.

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

should_i_deployShould I DeployA
Read-onlyIdempotent

Return an allow / warn / block deploy decision from graph exposure risk.

    Resolves a deployment candidate against the latest security-graph
    snapshot, ranks its reachable ExposurePaths by risk score, and maps the
    top score to a gate decision using the warn/block thresholds.

    Args:
        candidate: Package, resource, CVE, graph node ID, or deployment
            label to evaluate.
        tenant_id: Tenant whose graph snapshot to read (default ``default``).
        scan_id: Specific graph scan ID; omit to use the latest snapshot.
        limit: Maximum matched exposure paths to return (1-25).
        warn_risk: Risk score at or above which the decision becomes warn.
        block_risk: Risk score at or above which the decision becomes block.

    Returns:
        JSON with the ``decision`` (allow/warn/block), the driving risk
        score, and the ranked exposure paths behind it.

    Call this as a pre-deployment gate to get a single machine-readable
    verdict instead of interpreting raw findings.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum matched exposure paths to return.
scan_idNoOptional graph scan ID. Omit to use the latest snapshot.
candidateYesCandidate package, resource, CVE, node ID, or deployment label to evaluate.
tenant_idNoTenant ID for the graph snapshot. Defaults to 'default'.default
warn_riskNoRisk score at or above which the decision becomes warn.
block_riskNoRisk score at or above which the decision becomes block.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate read-only, idempotent, and open-world hints. The description adds valuable detail: it resolves against the latest snapshot, ranks ExposurePaths by risk, and maps to a gate decision using thresholds. This explains the algorithm and usage of parameters like scan_id and thresholds.

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 well-structured with a summary, detailed Args section, Returns description, and usage note. Every sentence adds value. It is not overly long given the 6 parameters and output explanation.

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 input parameters, the internal process, and output structure. It explains the return JSON includes decision, risk score, and ranked paths. This is complete for a pre-deployment gate tool with an existing output schema.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning: it explains candidate can be a package, resource, CVE, node ID, or deployment label; tenant_id defaults to 'default'; scan_id omitted uses latest snapshot; limit bounds and defaults; warn_risk and block_risk thresholds. This goes beyond the schema 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 the tool returns an allow/warn/block deploy decision based on graph exposure risk. It specifies the verb 'Return', the resource 'deploy decision', and differentiates from sibling tools like exposure_paths or blast_radius by focusing on a pre-deployment gate verdict.

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 calls this a 'pre-deployment gate' and recommends using it to get a 'single machine-readable verdict instead of interpreting raw findings.' While it doesn't name specific sibling tools, it provides clear context for when to use this tool.

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

skill_scanSkill ScanA
Read-onlyIdempotent

Scan skill and instruction files for trust, findings, and provenance.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to a skill/instruction file or directory to scan..

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate read-only, non-destructive, idempotent, and open-world behavior. The description adds context about scanning for trust, findings, and provenance, which aligns with annotations but does not disclose additional behavioral traits 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 a single sentence that is front-loaded with the verb and resource. It contains no extraneous words or redundant information, making it highly efficient.

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

Completeness4/5

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

With a simple parameter set, full schema coverage, rich annotations, and an output schema, the description is largely complete. It covers the tool's purpose and scope, though it could briefly mention the scanning depth or what 'findings' encompass for greater clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 the single 'path' parameter with a description, achieving 100% coverage. The tool description does not add any further explanation about the parameter's usage or formatting, so it meets the baseline without enhancement.

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 scans skill and instruction files for trust, findings, and provenance. It uses a specific verb and resource, and differentiates from siblings like 'skill_trust' and 'skill_verify' by highlighting the comprehensive scanning purpose.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternative sibling tools such as 'skill_trust' or 'skill_verify'. It does not mention prerequisites, exclusions, or typical scenarios, leaving the agent without decision support.

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

skill_trustSkill Trust AssessmentA
Read-onlyIdempotent

Assess the trust level of a SKILL.md file using ClawHub-style categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_pathYesPath to a SKILL.md file (or any skill/instruction file) to assess.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, idempotent, and open-world traits. The description adds the methodology (ClawHub-style categories), which is complementary context 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?

The description is a single, well-structured sentence with no unnecessary words, front-loading the action and purpose.

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

Completeness5/5

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

For a tool with one parameter, full schema coverage, and comprehensive annotations, the description adequately covers the purpose and methodology, leaving no significant 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 schema provides 100% coverage for the single parameter 'skill_path', including a description. The tool description adds only minor clarification (SCILL.md vs any instruction file), so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it assesses the trust level of a SKILL.md file using ClawHub-style categories, specifying the verb, resource, and methodology, which distinguishes it from sibling tools like skill_scan or skill_verify.

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

Usage Guidelines3/5

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

The description implies the tool is used for trust assessment of SKILL.md files, but does not provide explicit guidance on when not to use it or suggest alternatives among siblings.

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

skill_verifySkill Provenance VerifyA
Read-onlyIdempotent

Verify Sigstore provenance for skill and instruction files.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to a skill/instruction file or directory to verify..

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate readOnly, idempotent, non-destructive. Description adds no extra behavioral context beyond confirming it's a verification 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?

Single sentence, no unnecessary words, front-loaded and efficient.

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

Completeness3/5

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

Output schema exists but description lacks context on what Sigstore provenance means or verification outcomes. Adequate given annotations and schema, but could add more detail.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter 'path'. Description does not add additional 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?

Description clearly states the verb 'Verify' and resource 'Sigstore provenance for skill and instruction files', which is specific and distinguishes from sibling tools like 'skill_scan' or 'verify'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. With many sibling tools, explicit context is needed but missing.

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

sync_ticket_statusSync ITSM Ticket StatusA
Destructive

Refresh a filed ticket's status from its ITSM through the connection.

    Requires an admin operator + ``ticketing:write`` scope. Resolves auth and
    endpoint from the stored connection only.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman audit reason for syncing status.
tenant_idNoTenant scope for the connection and audit logging.default
ticket_idNoagent-bom ticket link id returned by create_ticket.
operator_roleNoOperator role for this write action (audit).viewer
operator_scopesNoComma-separated operator scopes (audit).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds valuable context by stating that an admin operator + ticketing:write scope is required and that auth and endpoint are resolved from the stored connection only. This complements the annotations without contradiction, though it does not detail 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 two concise sentences, front-loaded with the main action and followed by necessary prerequisites. 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?

The tool has an output schema, and the description covers the core action and prerequisites. It does not fully explain the refresh behavior or side effects, but the annotations, schema, and output schema fill in the remaining details. Given the tool's simplicity, this is reasonably complete.

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

Parameters3/5

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

Schema description coverage is 100% for all 5 parameters, so the schema already provides clear semantics (e.g., ticket_id described as the link id from create_ticket). The description adds no per-parameter details, but the baseline of 3 applies because the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the specific action: 'Refresh a filed ticket's status from its ITSM through the connection.' This is a specific verb (refresh) + resource (ticket status) and distinguishes the tool from siblings like create_ticket, which creates a ticket rather than updating its status.

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: it requires an admin operator and ticketing:write scope, and it resolves auth/endpoint from the stored connection only. However, it does not explicitly mention alternatives or when not to use the tool, so it lacks exclusions but still gives useful prerequisites.

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

tool_risk_assessmentTool Capability RiskA
Destructive

Live-introspect MCP servers and score each tool's capability risk.

    Discovers configured MCP clients, connects to their servers, calls
    ``tools/list``, and classifies every exposed tool by capability
    (filesystem, network, code execution, credential access) to produce a
    per-tool and per-server risk score from what the servers actually
    advertise at runtime.

    Args:
        config_path: MCP client config directory to read; auto-discovers all
            supported clients when omitted.
        timeout: Per-server introspection timeout in seconds.
        allow_command_execution: Explicit opt-in required before launching
            discovered stdio server commands.

    Returns:
        JSON with per-server tool inventories, per-tool capability classes
        and risk levels, and an aggregate server risk rating.

    Use this to assess the blast radius of MCP servers an agent can reach
    before granting or trusting their tools.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoPer-server introspection timeout in seconds.
config_pathNoPath to MCP client config directory. Auto-discovers all if omitted.
allow_command_executionNoExplicitly allow launching unblocked stdio server commands. False only connects to HTTP/SSE servers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 destructive and open-world, and the description adds valuable behavior details: it connects to configured MCP clients, calls tools/list at runtime, classifies tools, and requires explicit opt-in before launching discovered stdio server commands. It does not contradict annotations, though it could more directly state the potential side effects of allowing command execution.

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 well-structured with a dense opener, compact Args/Returns sections, and a short usage sentence. Every part earns its place, and the main purpose and key constraint (allow_command_execution) are front-loaded without fluff.

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

Completeness5/5

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

Given the annotations, a rich output schema, and full schema parameter coverage, the description is complete. It explains the runtime behavior, the return shape, the opt-in requirement for potentially destructive command execution, and when to apply it—enough for an agent to select and invoke the tool correctly.

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

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 Args section mostly restates the schema descriptions (config_path, timeout, allow_command_execution) with only slight rephrasing like 'Explicit opt-in required,' which adds minimal meaning beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Live-introspect MCP servers and score each tool's capability risk.' It further defines the mechanism (calls tools/list, classifies by filesystem, network, code execution, credential access) and the resulting per-tool and per-server risk scores, making it clearly distinct from sibling scanning and inventory 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?

It gives a clear context for use: 'Use this to assess the blast radius of MCP servers an agent can reach before granting or trusting their tools.' However, it does not explicitly name alternative tools or state when not to use this tool, so it stops short of a full when/when-not/alternatives guide.

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

training_pipeline_scanTraining Pipeline ScanA
Read-onlyIdempotent

Scan a directory for ML training pipeline lineage and provenance.

ParametersJSON Schema
NameRequiredDescriptionDefault
directoryYesDirectory path to scan for training pipeline artifacts (MLflow, Kubeflow, W&B).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 destructiveHint=false. The description confirms the read-only scanning behavior but adds no further behavioral context (e.g., performance, file system access). It adds moderate 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?

Single sentence (12 words) that is front-loaded with action and resource. Every word adds value; 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 simple scanning tool with one parameter and output schema present, the description sufficiently covers the purpose. However, it omits any note about supported artifact formats or depth of scanning, but the schema and output likely fill those 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 includes a parameter description covering directory content (MLflow, Kubeflow, W&B artifacts). The tool description adds no additional parameter meaning beyond restating the schema. With 100% schema coverage, 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 action (scan), resource (directory), and specific purpose (ML training pipeline lineage and provenance). It distinguishes from sibling tools like code_scan or model_file_scan by focusing on training pipeline artifacts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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 (e.g., model_provenance_scan, dataset_card_scan). The description does not mention prerequisites or exclusions.

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

vector_db_scanVector DB ScanA
Read-onlyIdempotent

Scan for running vector databases and assess their security posture.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostsNoComma-separated hosts to probe (default: 127.0.0.1). Example: '127.0.0.1,10.0.0.5'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate read-only, non-destructive, idempotent, and open-world behavior. The description adds the notion of 'assess security posture' but does not disclose any additional behavioral traits such as potential impacts, rate limits, or required permissions.

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 of 10 words, front-loaded with the action and resource. Every word is necessary, no repetition or filler.

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

Completeness4/5

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

Given the tool's simplicity (1 optional parameter, good annotations, output schema exists), the description covers the core purpose effectively. However, it could be more complete by briefly explaining what 'security posture' assessment entails, though not strictly necessary with the output schema.

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

Parameters3/5

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

The input schema has 100% coverage, with the 'hosts' parameter clearly described via examples and defaults. The tool description does not add further parameter meaning, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool scans for running vector databases and assesses their security posture. It uses a specific verb ('scan') and resource ('running vector databases'), distinguishing it from siblings like 'scan' or 'ai_inventory_scan'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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. It does not mention any context, prerequisites, or exclusions, leaving the agent to infer appropriateness 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.

verifyPackage Integrity VerifyA
Read-onlyIdempotent

Verify package integrity and SLSA provenance against registries.

    Checks SHA-256/SRI hashes against npm/PyPI registries and looks up
    SLSA build provenance attestations to confirm the package was built
    from its claimed source repository.

    Returns:
        JSON with integrity verification (hash match, expected vs actual)
        and provenance status (SLSA level, source repo, build trigger).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
packageYesPackage name with optional version, e.g. 'express@4.18.2' or 'requests==2.31.0'.
ecosystemNoPackage ecosystem: 'npm' or 'pypi'.npm

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds behavioral details such as checking SHA-256/SRI hashes and SLSA provenance attestations, and it describes the return format. 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.

Conciseness4/5

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

The description is concise, with a clear opening sentence and a bullet-like return description. It efficiently conveys the tool's function and output without unnecessary 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?

Given the tool has only 2 parameters (one optional), full schema coverage, and an output schema referenced in the description, the description sufficiently explains the tool's behavior and return values. It is complete enough 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.

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents both parameters well. The description adds meaning by mentioning that the package can include a version string (e.g., 'express@4.18.2') and that ecosystems are 'npm' or 'pypi', which aligns with the schema defaults. It also explains the return value structure with hash match and provenance status, adding context beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: verifying package integrity and SLSA provenance against registries. It uses specific verbs ('Verify', 'Checks', 'looks up') and mentions the resource (package integrity, SLSA provenance) and scope (npm/PyPI registries). Among siblings, it stands out as a package-specific integrity check versus more general or different scans.

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 context for when to use the tool (verify integrity of npm/PyPI packages) and implicitly excludes other ecosystems or types of verification not related to registries. It does not explicitly mention when not to use or suggest alternatives, but the sibling list includes many other scanning tools, making the context clear enough.

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

whereDiscovery PathsA
Read-onlyIdempotent

Show all MCP discovery paths and which config files exist.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds that it shows 'all MCP discovery paths and which config files exist', which is consistent but not deeply detailed 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 sentence without any fluff, perfectly sized for the tool's simplicity.

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 tool with an output schema, the description is sufficient. It clearly states what the tool shows, and the context signals confirm no missing information.

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

Parameters4/5

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

No parameters exist, so baseline 4 applies. The description does not need to add parameter 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 uses specific verb 'Show' and resources 'MCP discovery paths' and 'config files', clearly distinguishing it from sibling tools which focus on scanning, auditing, or benchmarking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps 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. Even though it has no parameters, the description does not explain context or prerequisites.

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. Dates show when Glama detected each change.

  1. 1 tool updatev0.103.2
    • Changedruntime_evidence_ingest3 fields changed
      • removedInput schema / properties / operator_role
        Removed value: -{
        -  "default": "viewer",
        -  "description": "Operator role for this write action. Must be admin.",
        -  "title": "Operator Role",
        -  "type": "string"
        -}
      • removedInput schema / properties / operator_scopes
        Removed value: -{
        -  "default": "",
        -  "description": "Comma-separated operator scopes. Must include findings:write.",
        -  "title": "Operator Scopes",
        -  "type": "string"
        -}
      • removedInput schema / properties / reason
        Removed value: -{
        -  "default": "",
        -  "description": "Human audit reason for ingesting runtime evidence.",
        -  "title": "Reason",
        -  "type": "string"
        -}
  2. 5 tool updates
    • Addedgraph_correlate
    • Addedgraph_correlation_status
    • Changedinventory_list1 field changed
      • addedInput schema / properties / severity
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Filter by the asset's highest directly linked finding severity.",
        +  "title": "Severity"
        +}
    • Changedruntime_evidence_ingest3 fields changed
      • addedInput schema / properties / operator_role
        Added value: +{
        +  "default": "viewer",
        +  "description": "Operator role for this write action. Must be admin.",
        +  "title": "Operator Role",
        +  "type": "string"
        +}
      • addedInput schema / properties / operator_scopes
        Added value: +{
        +  "default": "",
        +  "description": "Comma-separated operator scopes. Must include findings:write.",
        +  "title": "Operator Scopes",
        +  "type": "string"
        +}
      • addedInput schema / properties / reason
        Added value: +{
        +  "default": "",
        +  "description": "Human audit reason for ingesting runtime evidence.",
        +  "title": "Reason",
        +  "type": "string"
        +}
    • Changedtool_risk_assessment3 fields changed
      • addedInput schema / properties / allow_command_execution
        Added value: +{
        +  "default": false,
        +  "description": "Explicitly allow launching unblocked stdio server commands. False only connects to HTTP/SSE servers.",
        +  "title": "Allow Command Execution",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / timeout / maximum
        Added value: +60
      • addedInput schema / properties / timeout / minimum
        Added value: +0.1
  3. 6 tool updatesv0.102.0
    • Addedapprove_exception
    • Changedcheck1 field changed
      • addedInput schema / properties / offline
        Added value: +{
        +  "default": false,
        +  "description": "Use only the local advisory database. An explicit version is required; registry resolution and publication checks are disabled.",
        +  "title": "Offline",
        +  "type": "boolean"
        +}
    • Changedgateway_status4 fields changed
      • addedInput schema / properties / activity_cursor
        Added value: +{
        +  "default": "",
        +  "description": "Opaque cursor from a prior gateway_status activity response.",
        +  "title": "Activity Cursor",
        +  "type": "string"
        +}
      • addedInput schema / properties / activity_limit
        Added value: +{
        +  "default": 100,
        +  "description": "Maximum activity events to return when include_activity is true.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Activity Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / include_activity
        Added value: +{
        +  "default": false,
        +  "description": "Include the durable, cursor-paged gateway activity feed.",
        +  "title": "Include Activity",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include_self_posture
        Added value: +{
        +  "default": false,
        +  "description": "Include this deployment's tenant-scoped operator self-posture evidence.",
        +  "title": "Include Self Posture",
        +  "type": "boolean"
        +}
    • Addedlist_exceptions
    • Addedrequest_exception
    • Changedscan2 fields changed
      • changedInput schema / properties / config_path / description
        Previous value: -"Local directory to scan — a project root or an MCP client config directory. Auto-discovers all installed MCP clients if omitted. Mutually exclusive with repo_url."New value: +"Local directory to scan — a project root or an MCP client config directory. Auto-discovers installed MCP clients if omitted unless no_discover=true. Mutually exclusive with repo_url."
      • addedInput schema / properties / no_discover
        Added value: +{
        +  "default": false,
        +  "description": "Disable ambient host MCP-client discovery. Explicit repo/config, image, SBOM, and package targets are still scanned; use this for deterministic CI.",
        +  "title": "No Discover",
        +  "type": "boolean"
        +}
  4. 6 tool updatesv0.101.0
    • Changedblast_radius2 fields changed
      • addedInput schema / properties / scan_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional persisted scan scope.",
        +  "title": "Scan Id"
        +}
      • addedInput schema / properties / tenant_id
        Added value: +{
        +  "default": "default",
        +  "description": "Tenant scope for persisted findings. Defaults to 'default'.",
        +  "title": "Tenant Id",
        +  "type": "string"
        +}
    • Changedcis_benchmark1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"AWS region (only for provider=aws). Defaults to us-east-1."New value: +"Optional AWS region scope. Omit to evaluate CIS across all enabled AWS regions."
    • Addedcloud_side_scan
    • Addedfindings_triage
    • Addedrisk_campaign_workflow
    • Addedyoucom_search
  5. 1 tool updatev0.99.0
    • Changedscan2 fields changed
      • addedInput schema / properties / ecosystem
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Ecosystem of ``package`` when the spec does not name a launcher: 'npm', 'pypi', 'go', 'cargo', 'maven', 'nuget', 'rubygems', 'composer', 'swift', 'pub', 'hex', 'conda', 'deb', 'apk', or 'rpm'. Omitted, the ecosystem is inferred from the spec (PEP 440 specifiers such as 'flask==0.12.2' are PyPI) and any assumption is reported in the result warnings.",
        +  "title": "Ecosystem"
        +}
      • changedInput schema / properties / package / description
        Previous value: -"Direct package or MCP launch command to scan, e.g. 'npx @modelcontextprotocol/server-filesystem@2025.1.14' or '@modelcontextprotocol/server-filesystem'."New value: +"Direct package or MCP launch command to scan, e.g. 'npx @modelcontextprotocol/server-filesystem@2025.1.14' or '@modelcontextprotocol/server-filesystem'. A bare 'name@version' spec is assumed to be npm — pass ``ecosystem`` for anything else."
  6. 5 tool updatesv0.98.3
    • Addedcreate_ticket
    • Changedingest_external_scan1 field changed
      • changedInput schema / properties / scan_json / description
        Previous value: -"JSON string from Trivy, Grype, or Syft scan output"New value: +"JSON string containing tool-agnostic SARIF, CycloneDX, SPDX, Trivy, Grype, or Syft evidence"
    • Addedkspm_cluster_posture
    • Addedruntime_evidence_ingest
    • Addedsync_ticket_status
  7. 4 tool updatesv0.96.2
    • Changedgenerate_sbom1 field changed
      • changedInput schema / properties / format / description
        Previous value: -"SBOM format: 'cyclonedx' (CycloneDX 1.6) or 'spdx' (SPDX 3.0)."New value: +"SBOM format: 'cyclonedx' (CycloneDX 1.7) or 'spdx' (SPDX 3.0)."
    • Addedinventory_asset
    • Addedinventory_list
    • Addedinventory_summary
  8. 2 tool updatesv0.93.0
    • Changedcheck1 field changed
      • addedInput schema / properties / version
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional package version when omitted from ``package`` (e.g. package='flask', version='0.12.2'). Prefer embedding in ``package`` as 'flask@0.12.2' or 'flask==0.12.2' when possible.",
        +  "title": "Version"
        +}
    • Changedingest_external_scan3 fields changed
      • addedInput schema / properties / parse_only
        Added value: +{
        +  "default": false,
        +  "description": "When true, parse locally only. When false, bulk-ingest to the control plane when AGENT_BOM_API_URL and credentials are configured.",
        +  "title": "Parse Only",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / reconcile_absent
        Added value: +{
        +  "default": false,
        +  "description": "When pushing, mark findings absent from this batch as resolved.",
        +  "title": "Reconcile Absent",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / source
        Added value: +{
        +  "default": "external_scan",
        +  "description": "Source label stored on ingested findings.",
        +  "title": "Source",
        +  "type": "string"
        +}
  9. 1 tool updatev0.90.0
    • Addedregistry_sweep_scan
  10. 15 tool updatesv0.89.2
    • Addedaccess_review
    • Addedanomaly_scan
    • Addedcloud_inventory
    • Addedcost_allocation
    • Addedcost_forecast
    • Addedcost_report
    • Addedcredential_expiry
    • Addeddrift_incidents
    • Addedidentity_grant_jit
    • Addedidentity_issue
    • Addedidentity_revoke
    • Addedidentity_revoke_jit
    • Addedidentity_rotate
    • Addednhi_discover
    • Changedscan2 fields changed
      • changedInput schema / properties / config_path / description
        Previous value: -"Path to MCP client config directory. Auto-discovers all if omitted."New value: +"Local directory to scan — a project root or an MCP client config directory. Auto-discovers all installed MCP clients if omitted. Mutually exclusive with repo_url."
      • addedInput schema / properties / repo_url
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Public git repository URL to clone and scan, e.g. 'https://github.com/org/repo'. Maps the repo's dependencies, project structure, secrets, IaC, and AI/MCP usage into an AI-BOM. Static and read-only: the repository is shallow-cloned into a temporary directory, scanned without ever executing its code, then deleted. The fastest way to point this tool at a target — no local checkout required.",
        +  "title": "Repo Url"
        +}
  11. 55 tool updatesv0.88.4
    • Addedai_inventory_scan
    • Addedaisvs_benchmark
    • Addedanalytics_query
    • Addedaudit_integrity
    • Addedaudit_query
    • Addedblast_radius
    • Addedbrowser_extension_scan
    • Addedcheck
    • Addedcis_benchmark
    • Addedcode_scan
    • Addedcompliance
    • Addedcontext_graph
    • Addeddataset_card_scan
    • Addeddiff
    • Addedexposure_paths
    • Addedfirewall_check
    • Addedfleet_scan
    • Addedgateway_status
    • Addedgenerate_sbom
    • Addedgpu_infra_scan
    • Addedgraph_export
    • Addedingest_external_scan
    • Addedintel_daily_brief
    • Addedintel_lookup
    • Addedintel_match
    • Addedintel_sources
    • Addedinventory
    • Addedlicense_compliance_scan
    • Addedmarketplace_check
    • Addedmodel_file_scan
    • Addedmodel_provenance_scan
    • Addedpolicy_check
    • Addedprompt_scan
    • Addedproxy_alerts
    • Addedproxy_status
    • Addedregistry_lookup
    • Addedremediate
    • Addedruntime_blueprint_drift
    • Addedruntime_blueprints
    • Addedruntime_correlate
    • Addedruntime_production_index
    • Addedscan
    • Addedshield_break_glass
    • Addedshield_start
    • Addedshield_status
    • Addedshield_unblock
    • Addedshould_i_deploy
    • Addedskill_scan
    • Addedskill_trust
    • Addedskill_verify
    • Addedtool_risk_assessment
    • Addedtraining_pipeline_scan
    • Addedvector_db_scan
    • Addedverify
    • Addedwhere
  12. 41 tool updatesv0.88.1
    • Removedai_inventory_scan
    • Removedaisvs_benchmark
    • Removedanalytics_query
    • Removedblast_radius
    • Removedbrowser_extension_scan
    • Removedcheck
    • Removedcis_benchmark
    • Removedcode_scan
    • Removedcompliance
    • Removedcontext_graph
    • Removeddataset_card_scan
    • Removeddiff
    • Removedexposure_paths
    • Removedfleet_scan
    • Removedgenerate_sbom
    • Removedgpu_infra_scan
    • Removedgraph_export
    • Removedingest_external_scan
    • Removedintel_lookup
    • Removedintel_match
    • Removedintel_sources
    • Removedinventory
    • Removedlicense_compliance_scan
    • Removedmarketplace_check
    • Removedmodel_file_scan
    • Removedmodel_provenance_scan
    • Removedpolicy_check
    • Removedprompt_scan
    • Removedregistry_lookup
    • Removedremediate
    • Removedruntime_correlate
    • Removedscan
    • Removedshould_i_deploy
    • Removedskill_scan
    • Removedskill_trust
    • Removedskill_verify
    • Removedtool_risk_assessment
    • Removedtraining_pipeline_scan
    • Removedvector_db_scan
    • Removedverify
    • Removedwhere

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct targets and clear descriptions, but there is some overlap in the scanning family (e.g., model_file_scan vs. model_provenance_scan) and the inventory tools (inventory_summary, inventory_list, inventory_asset, inventory) could cause misselection without careful reading.

Naming Consistency4/5

Naming is predominantly snake_case with descriptive domain prefixes (e.g., runtime_blueprint_drift, identity_rotate), but a few single-word tools (scan, check, verify, diff, where, inventory) break the pattern and create slight inconsistency.

Tool Count1/5

With 84 tools, this is an extreme count for any server. Even for a comprehensive security platform, it exceeds reasonable scope and would be better split into multiple focused servers, making the surface overwhelming and difficult to navigate.

Completeness4/5

The tool surface covers a wide range of security functions—scanning, governance, runtime monitoring, cloud assessments, and compliance—with few obvious dead ends. Minor gaps exist (e.g., no update/delete for tickets or exceptions), but agents can work around them using the available lifecycle tools.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A security scanner that evaluates installed MCP servers for vulnerabilities by aggregating findings from 16 scanning engines into detailed trust scores. It enables users to scan their local AI agent configurations or specific repository URLs for potential security risks.
    4
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Security scanner for MCP servers. Detects prompt injection, command injection, auth bypass, and excessive permissions across tools, resources, and prompts.
    26
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/msaad00/agent-bom'

If you have feedback or need assistance with the MCP directory API, please join our Discord server