Skip to main content
Glama

Scan Tool Definitions

scan_tool_definitions
Read-only

Scan pasted tools/list JSON for tool-poisoning indicators, including hidden Unicode, instruction-like phrasing, encoded blobs, exfiltration language, and duplicate names.

Instructions

Check a server's tool definitions (a tools/list snapshot) for poisoning indicators: hidden Unicode, instruction-like phrasing aimed at the model, references to other tools, exfiltration phrasing, encoded blobs, overlong descriptions, free-text parameters that invite conversation content, and duplicate names (TD001-TD008).

Use when: the user has a server's tool list (pasted JSON) and wants it checked. Prefer another tool when: the user only has a package or registry name, or wants a full check of a server (audit_server, which also takes the snapshot).

Takes pasted JSON text only (an object is rejected), never a path; nothing is fetched. Findings are indicators, not verdicts, and a report with no findings is not proof of safety. coverage lists the checks that ran and those skipped, with reasons.

Input Schema

NameRequiredDescriptionDefault
snapshotYesA tools/list result, {"tools": [...]}, as JSON text (not an object). Max 1 MiB, nesting depth 64.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint annotations, it discloses that nothing is fetched, that only pasted JSON text is accepted (an object is rejected, never a path), and that findings are indicators rather than verdicts with a no-findings result not constituting proof of safety. The coverage field behavior (checks run vs. skipped, with reasons) is also described, which the output schema alone would not make meaningful.

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

Conciseness5/5

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

Purpose and scope are front-loaded, then the when/when-not routing is presented in a scannable parallel structure, followed by input constraints and result caveats. The enumerated indicator list is long but every item is a concrete check name, so no sentence is filler.

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

Completeness5/5

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

With a single required parameter, an output schema, and annotations covering the safety profile, the remaining burden is input format and interpretation of results, both of which are addressed. An agent has everything needed to call this correctly and to caveat its findings appropriately.

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

Parameters4/5

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

Schema coverage is 100% and the schema already states the JSON-text-not-object constraint plus the 1 MiB / depth-64 limits, so most of the description's input guidance is reinforcement. It does add the operationally useful fact that a path is never accepted and nothing is fetched, which the schema does not say.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Check a server's tool definitions (a tools/list snapshot)') and enumerates the exact indicator classes scanned (hidden Unicode, instruction-like phrasing, exfiltration phrasing, encoded blobs, duplicate names, TD001-TD008). This is clearly distinguishable from siblings like audit_package or check_typosquat, which operate on different inputs.

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

Usage Guidelines5/5

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

It gives an explicit 'Use when' condition (user has pasted a tools/list JSON) and an explicit 'Prefer another tool when' condition (only a package or registry name, or a full server check), naming audit_server as the alternative and explaining the differentiator. Nothing about tool selection is left to inference.

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