SkillTriage
Server Details
Scan AI agent skills, MCP server packages and MCP configs before you install them. Static analysis.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
The four tools target distinct inputs: a catalogue query by name, a pasted config, a published package, and a single skill file. The main risk is lookup_verdict versus scan_package, since both are about a package, but the descriptions clearly separate a cached verdict lookup from a fresh download-and-scan.
All names follow a clean snake_case verb_noun pattern (lookup_verdict, scan_mcp_config, scan_package, scan_skill). The shared 'scan_' prefix for the three analysis tools reinforces the distinction between them and the lookup tool.
Four tools is on the lean side but each covers a genuinely different artifact (verdict catalogue, config, package, skill). Nothing feels redundant or bloated for a triage-focused server.
The surface covers the core triage paths: checking an existing verdict, scanning a package, a config, and a skill file, with a clear verdict taxonomy and permalinks. Minor gaps include no batch/multi-package scan or an explicit tool to fetch the reputation feed, though agents can work around these.
Available Tools
4 toolslookup_verdictLook up a published MCP server verdictARead-onlyIdempotentInspect
Look up the verdict the public catalogue has published for an MCP server package on npm or PyPI. Returns found:false when the catalogue has no published verdict for that name; that is not a clean result. Nothing is downloaded or scanned. This request names the package to the server; to match without naming it, download /api/reputation-feed.json and match on your side.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The package name | |
| version | No | Optional: the version you plan to install; the reply says whether the published verdict is for it | |
| ecosystem | Yes | The package registry |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only, idempotent, non-destructive annotations, the description discloses important behavior: found:false means no published verdict rather than a clean result, nothing is downloaded or scanned, and the request names the package to the server. That last point gives useful privacy/behavior context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the critical found:false caveat are front-loaded, and the alternative feed approach is relevant. The description is appropriately sized, though the final sentence is somewhat dense and could be split more cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with strong annotations and full schema coverage, the description covers the key semantics: what is looked up, what found:false means, and that no scanning occurs. It does not describe the shape of a positive verdict result, which is the main remaining gap in the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the package name, optional version, and ecosystem enum. The description reinforces that the request names a package but adds little parameter-level detail beyond the existing schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: looking up a published catalogue verdict for an MCP server package on npm or PyPI. It also distinguishes this from scanning by saying nothing is downloaded or scanned, which separates it from the scan_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the lookup context and gives an explicit alternative for matching without naming the package: downloading /api/reputation-feed.json. It also warns that found:false is not a clean result, but it does not explicitly name sibling tools or state all cases where a scan tool should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_mcp_configCheck an MCP client configARead-onlyIdempotentInspect
Check a pasted MCP client config (.mcp.json, claude_desktop_config.json, mcp.json, Codex config.toml). Reports each npm or PyPI launch by its position and how its version is pinned (exact, @latest, a tag or range, none), flags releases on the known-compromised list, and runs static analysis over the text. Server names, package names, arguments, env and header values are never returned or stored; remove secrets before sending anyway. Static analysis only; nothing is run or fetched. Returns a verdict (CLEAN, CAUTION, REVIEW, DO-NOT-INSTALL or NAME-NOT-PUBLISHED), the pinning advice and a permalink.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The config file's text | |
| filename | No | The config's filename, ending in .json or .toml (default .mcp.json) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds substantial context: what is never returned or stored (server names, package names, arguments, env and header values), that analysis is static with nothing fetched or run, and the exact verdict set it can return. That is exactly the value-add beyond structured fields the dimension rewards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded, leading with the check and its accepted inputs before the privacy and verdict details. A few clauses are packed tightly with semicolons, but every sentence carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming the verdict values and mentioning the pinning advice and permalink that come back. Combined with the two-parameter schema and full annotation coverage, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 goes beyond the schema by enumerating the recognized config filenames (.mcp.json, claude_desktop_config.json, mcp.json, config.toml) and by framing the text parameter around pasted config content, which helps the agent pick the right filename value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check a pasted MCP client config') and enumerates the concrete file types it accepts (.mcp.json, claude_desktop_config.json, mcp.json, Codex config.toml). This clearly separates it from scan_package, which deals with packages rather than config text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: paste config text, remove secrets first, and it is static-only so nothing is run or fetched. It does not explicitly name scan_package or lookup_verdict as alternatives or state when to prefer them, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_packageScan an MCP server or skill packageARead-onlyIdempotentInspect
Download one published package and run static analysis on its code with MoorAI's open-source engine. npm and PyPI packages also get ten MCP pre-install checks on their registry metadata, a reputation score and a known-compromised release check. Static analysis only: the package is never installed and the server is never run. Returns a verdict (CLEAN, CAUTION, REVIEW, DO-NOT-INSTALL or NAME-NOT-PUBLISHED), content-free findings (threat ids, categories, file paths, hashes; never file contents) and a permalink. The package name and version are sent to its registry. A completed analysis is reused for 24 hours; a new one can take a minute and runs one at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | npm:<name>[@version], pypi:<name>[==version] or github:<owner>/<repo>/<path>[@ref] (a folder, not a whole repository) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/openWorld annotations: it discloses that nothing is installed or run, that the package name and version are sent to its registry, that results are cached for 24 hours, that a fresh scan takes about a minute and runs one at a time, and that findings are content-free (ids, paths, hashes only).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then safety posture, return shape, external side effects, and caching. Every sentence carries distinct information with no restatement of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still enumerates the verdict values, the finding fields, and the permalink, and covers latency, rate limits, and data-sharing. An agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single ref parameter, so the schema already documents the accepted syntax. The description adds only the framing that the ref must resolve to a published package, which is useful but marginal against a fully documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: 'Download one published package and run static analysis on its code.' The ref formats (npm/pypi/github) and the phrase 'one published package' implicitly separate it from scan_skill and scan_mcp_config, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the described scope ('one published package', static analysis only), and the 24-hour reuse note hints at repeat-call behavior. However, the description never states when to prefer this over lookup_verdict or scan_skill, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_skillScan an agent skill fileARead-onlyIdempotentInspect
Scan one agent skill or instruction file (SKILL.md, AGENTS.md, a tool.json, any text file) with MoorAI's open-source engine. Static analysis only; nothing is run. The text is written to a temporary directory, scanned and deleted; only its hash, the verdict and content-free findings are kept. Returns a verdict (CLEAN, CAUTION, REVIEW, DO-NOT-INSTALL or NAME-NOT-PUBLISHED), the findings and a permalink.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The file's text | |
| filename | No | The file's name, which sets how it is analysed (default SKILL.md) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the 'readOnlyHint' by detailing the execution behavior, such as writing files to a temporary directory and deleting them after scanning. It also lists the specific possible verdicts, providing comprehensive 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely dense and efficient, successfully combining the tool's scope, operational mechanism, safety guarantees, and expected outcomes into a single, logical paragraph without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the output is not fully structured in a schema, the description provides all necessary context by detailing the expected return components: a verdict from a defined set (e.g., CLEAN, CAUTION), the findings, and a permalink.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 100%, the description adds crucial semantic meaning to the 'filename' parameter, clarifying that it 'sets how it is analysed (default SKILL.md)', which aids agent decision-making regarding optional arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The purpose is explicitly stated: to scan agent skill or instruction files. It clearly defines the resource (skill/instruction files) and its function (static analysis), making its distinction from package or configuration scanning tools immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides critical usage guidelines by stating that the analysis is 'Static analysis only; nothing is run.' It also specifies which file types are acceptable (e.g., SKILL.md, tool.json), which prevents misuse.
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.
4 tool updates
- First observed
lookup_verdict - First observed
scan_mcp_config - First observed
scan_package - First observed
scan_skill
Related MCP Connectors
Scan any MCP server for tool-poisoning, security, auth & license. Trust score before install.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Security scanner for MCP servers and skills: Unicode injection, patterns, secrets.
MCP server: static security scanner for MCP servers, agent skills & plugins. 17 attack patterns.
Related MCP Servers
- AlicenseAqualityAmaintenanceLocal-first security scanner for AI agent skills, plugins, hooks and MCP servers. Read-only, offline tools to scan a skill or MCP server before installing it, audit the installed setup and review proxy pins.5498 npmMIT
- AlicenseAqualityAmaintenanceSecurity scanner for third-party AI agent-skill files: SKILL.md manifests, hooks, and bundled scripts, exposed via an MCP tool.154 npm3Apache 2.0
- AlicenseNot gradedqualityBmaintenanceScans MCP servers, AI agent skills, and plugins for 68+ malicious patterns including credential exfiltration, prompt injection, and code execution.61 npm5MIT
- AlicenseAqualityDmaintenanceSecurity scanner for AI agent packages that enables AI agents to audit MCP servers and packages for vulnerabilities, prompt injection, and supply chain attacks.564 npm3AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.