AgentAudit
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AgentAuditscan https://github.com/example/repo"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ก๏ธ AgentAudit
Security scanner for AI agent packages โ CLI + MCP server
Scan MCP servers, AI skills, and packages for vulnerabilities, prompt injection, and supply chain attacks. Powered by regex static analysis and deep LLM audits.
๐ Table of Contents
Related MCP server: MCPAmpel
What is AgentAudit?
AgentAudit is a security scanner purpose-built for the AI package ecosystem. It works in two modes:
CLI tool โ Run
agentauditin your terminal to discover and scan MCP servers installed in your AI editorsMCP server โ Add to Claude Desktop, Cursor, or Windsurf so your AI agent can audit packages on your behalf
It checks packages against the AgentAudit Trust Registry โ a shared, community-driven database of security findings โ and can perform local scans ranging from fast regex analysis to deep LLM-powered 3-pass audits.
๐ Quick Start
Option A: CLI (recommended)
# Install globally (or use npx agentaudit)
npm install -g agentaudit
# Discover MCP servers configured in your AI editors
agentaudit
# Quick scan โ clones repo, checks code with regex patterns (~2s)
agentaudit scan https://github.com/owner/repo
# Deep audit โ clones repo, sends code to LLM for 3-pass analysis (~30s)
agentaudit audit https://github.com/owner/repo
# Registry lookup โ check if a package has been audited before (no cloning)
agentaudit lookup fastmcpExample output:
โ AgentAudit v3.13.4 โ my-scanner ยท #3 ยท 280pts ยท 19 audits
Discovering MCP servers in your AI editors...
โข Scanning Cursor ~/.cursor/mcp.json found 3 servers
โโโ tool supabase-mcp โ ok
โ SAFE Risk 0 https://agentaudit.dev/packages/supabase-mcp
โโโ tool browser-tools-mcp โ ok
โ โ not audited Run: agentaudit audit https://github.com/nichochar/browser-tools-mcp
โโโ tool filesystem โ ok
โ SAFE Risk 0 https://agentaudit.dev/packages/filesystem
Looking for general package scanning? Try `pip audit` or `npm audit`.Enhanced banner: When logged in, the banner shows your agent name, rank, points, and audit count. Run
agentaudit setupto create an account.
Option B: MCP Server in your AI editor
Add AgentAudit as an MCP server โ your AI agent can then discover, scan, and audit packages using its own LLM. No extra API key needed.
{
"mcpServers": {
"agentaudit": {
"command": "npx",
"args": ["-y", "agentaudit", "--stdio"]
}
}
}{
"mcpServers": {
"agentaudit": {
"command": "npx",
"args": ["-y", "agentaudit", "--stdio"]
}
}
}{
"mcpServers": {
"agentaudit": {
"command": "npx",
"args": ["-y", "agentaudit", "--stdio"]
}
}
}{
"servers": {
"agentaudit": {
"command": "npx",
"args": ["-y", "agentaudit", "--stdio"]
}
}
}Add to the mcpServers section of your existing config:
{
"mcpServers": [
{
"name": "agentaudit",
"command": "npx",
"args": ["-y", "agentaudit", "--stdio"]
}
]
}{
"context_servers": {
"agentaudit": {
"command": {
"path": "npx",
"args": ["-y", "agentaudit", "--stdio"]
}
}
}
}Then ask your agent: "Check which MCP servers I have installed and audit any unaudited ones."
๐ Commands Reference
Scan & Audit
Command | Description | Example |
| Discover MCP servers (default, same as |
|
| Find MCP servers in Cursor, Claude, VS Code, Windsurf |
|
| Discover + auto-scan all servers |
|
| Discover + interactively select servers to deep-audit |
|
| Quick regex-based static scan (~2s) |
|
| Deep audit (same as |
|
| Deep LLM-powered 3-pass audit (~30s) |
|
| Audit + adversarial verification pass (reduces false positives) |
|
| Server-side scan via agentaudit.dev (no LLM key needed, 3/day free) |
|
| Cross-model consensus view for a package |
|
| Look up package in trust registry |
|
| Show local audit history |
|
Community
Command | Alias | Description |
|
| Interactive full-screen TUI with 5 tabs (Overview, Leaderboard, Benchmark, Activity, Search) |
|
| Top contributors ranking (pipe-friendly) |
|
| LLM model audit performance comparison |
|
| Your recent audits & findings |
|
| Search packages in the registry by name, ASF-ID, or hash |
Configuration
Command | Alias | Description |
| โ | Interactive LLM provider + model configuration |
|
| Sign in with GitHub OAuth or paste API key manually |
|
| Show current config, API keys, and personal stats |
Global Flags
Flag | Description |
| Output machine-readable JSON to stdout |
| Suppress banner and decorative output |
| Disable ANSI colors (also respects |
| Override LLM model for this run |
| Multi-model audit (parallel calls, consensus comparison) |
| Adversarial verification: |
| Skip verification even if configured |
| Use agentaudit.dev server for scan (no local LLM key needed) |
| Skip uploading report to registry |
| Export audit payload as markdown |
| Show raw LLM response on parse errors |
| Show help text |
| Show version |
Exit Codes
Code | Meaning |
| Clean โ no findings detected, or successful lookup |
| Findings detected |
| Error (clone failed, network error, invalid args) |
โ๏ธ Quick Scan vs Deep Audit
Quick Scan ( | Deep Audit ( | |
Speed | ~2 seconds | ~30 seconds |
Method | Regex pattern matching | LLM-powered 3-pass analysis |
API key needed | No | Yes (Anthropic, OpenAI, or OpenRouter) |
False positives | Higher (regex limitations) | Very low (context-aware) |
Detects | Common patterns (injection, secrets, eval) | Complex attack chains, AI-specific threats, obfuscation |
Best for | Quick triage, CI pipelines | Critical packages, pre-production review |
Tip: Use agentaudit scan <url> --deep to run a deep audit via the scan command.
๐ MCP Server
When running as an MCP server, AgentAudit exposes the following tools to your AI agent:
Tool | Description |
| Deep LLM-powered audit of a repository |
| Look up a package in the trust registry |
| Upload audit findings to the registry |
| Find MCP servers in local editor configs |
| Cross-model consensus view for a package |
| Search packages in the registry by name, ASF-ID, or hash |
| Detect tool poisoning in MCP tool descriptions |
Workflow
User asks agent to install a package
โ
โผ
Agent calls check_registry(package_name)
โ
โโโโโโดโโโโโ
โ โ
Found Not Found
โ โ
โผ โผ
Return Agent calls audit_package(repo_url)
score โ
โผ
LLM analyzes code (3-pass)
โ
โผ
Agent calls submit_report(findings)
โ
โผ
Return findings + risk score๐ฏ What It Detects
Core Security
AI-Specific
MCP-Specific
Persistence & Obfuscation
๐ง How the 3-Pass Audit Works
The deep audit (agentaudit audit) uses a structured 3-phase LLM analysis โ not a single-shot prompt, but a rigorous multi-pass process:
Phase | Name | What Happens |
1 | ๐ UNDERSTAND | Read all files and build a Package Profile: purpose, category, expected behaviors, trust boundaries. No scanning yet โ the goal is to understand what the package should do before looking for what it shouldn't. |
2 | ๐ฏ DETECT | Evidence collection against 50+ detection patterns across 8 categories (AI-specific, MCP, persistence, obfuscation, cross-file correlation). Only facts are recorded โ no severity judgments yet. |
3 | โ๏ธ CLASSIFY | Every finding goes through a Mandatory Self-Check (5 questions), Exploitability Assessment, and Confidence Gating. HIGH/CRITICAL findings must survive a Devil's Advocate challenge and include a full Reasoning Chain. |
Why 3 passes? Single-pass analysis is the #1 cause of false positives. By separating understanding โ detection โ classification:
Phase 1 prevents flagging core functionality as suspicious (e.g., SQL execution in a database tool)
Phase 2 ensures evidence is collected without severity bias
Phase 3 catches false positives before they reach the report
This architecture achieved 0% false positives on our 11-package test set, down from 42% in v2.
Adversarial Verification Pass (v3.13+)
After the 3-pass audit, an optional verification pass re-examines each finding against the actual source code:
agentaudit audit https://github.com/owner/repo --verify selfEach finding goes through a 5-point checklist:
Code Existence โ Does the cited code actually exist in the file?
Context Accuracy โ Is the code used in the way described?
Execution Model โ Can an attacker actually trigger this?
Severity Calibration โ Is the severity appropriate?
Fabrication Check โ Are there hallucinated details?
Verdicts: verified (confirmed real), demoted (severity reduced), rejected (false positive removed).
Model Accuracy (Real-World Data)
We benchmarked multiple LLMs on the Top 20 most popular MCP servers (62+ reports):
Model | Findings on Top 20 | Precision | Assessment |
Claude Opus 4.6 | 0 findings (all clean) | N/A | Very conservative โ ideal for avoiding false positives |
Gemini 2.5 Flash | Many findings | ~30% strict | High false positive rate โ not recommended for production audits |
Key insight: Model choice dramatically affects audit quality. We recommend Claude Opus 4 or Claude Sonnet 4 for production audits. Use
--modelsto run multiple models and compare results viaconsensus.
๐ CI/CD Integration
AgentAudit is designed for CI pipelines with proper exit codes and JSON output:
# GitHub Actions example
- name: Scan MCP servers
run: |
npx agentaudit scan https://github.com/org/mcp-server --json --quiet > results.json
# Exit code 1 = findings detected โ fail the build# Shell scripting
agentaudit scan https://github.com/owner/repo --json --quiet 2>/dev/null
if [ $? -eq 1 ]; then
echo "Security findings detected!"
exit 1
fiJSON Output Examples
# Scan with JSON output
agentaudit scan https://github.com/owner/repo --json{
"slug": "repo",
"url": "https://github.com/owner/repo",
"findings": [
{
"severity": "high",
"title": "Command injection risk",
"file": "src/handler.js",
"line": 42,
"snippet": "exec(`git ${userInput}`)"
}
],
"fileCount": 15,
"duration": "1.8s"
}# Registry lookup with JSON
agentaudit lookup fastmcp --jsonComing soon:
--fail-on <severity>flag to set minimum severity threshold for non-zero exit (e.g.,--fail-on highignores low/medium findings).
๐ Dashboard & Community
AgentAudit includes a full-screen interactive dashboard and standalone community commands.
Interactive Dashboard
agentaudit dashboard # or: agentaudit dash5-tab TUI with keyboard navigation (โโ tabs, โโ scroll, 1-5 jump, q quit). Overview tab includes interactive Quick Actions โ select and launch audits, consensus views, or remote scans directly from the dashboard:
Tab | Content |
[1] Overview | Your profile + registry stats + interactive Quick Actions (press a/v/r/c or Enter) |
[2] Leaderboard | Top contributors with medal rankings and bar charts |
[3] Benchmark | LLM model audit performance comparison |
[4] Activity | Your recent audits and findings |
[5] Search | Interactive package search (type to search, Enter to submit) |
Standalone Commands
All community commands work without the dashboard (pipe-friendly, supports --json):
agentaudit leaderboard # Top contributors
agentaudit leaderboard --tab monthly --json # Monthly rankings as JSON
agentaudit benchmark # Model comparison
agentaudit activity # Your recent audits & findings
agentaudit search fastmcp # Search registry by name/ASF-ID
agentaudit search fastmcp --json # Machine-readable search resultsโ๏ธ Configuration
Credentials
AgentAudit stores credentials in ~/.config/agentaudit/credentials.json (or $XDG_CONFIG_HOME/agentaudit/credentials.json).
Run agentaudit setup to sign in with GitHub or paste an API key, or set via environment:
export AGENTAUDIT_API_KEY=asf_your_key_hereLLM Providers (13 supported)
AgentAudit supports 13 LLM providers for deep audits. Set one API key โ the CLI auto-detects it. Use agentaudit model to choose provider + model interactively, or agentaudit status to check your setup.
Variable | Provider | Default Model |
| Anthropic (Claude) |
|
| Google (Gemini) |
|
| OpenAI (GPT-4o) |
|
| DeepSeek |
|
| Mistral |
|
| Groq |
|
| xAI (Grok) |
|
| Together AI |
|
| Fireworks AI |
|
| Cerebras |
|
| Zhipu AI (GLM) |
|
| OpenRouter |
|
Other Environment Variables
Variable | Description |
| API key for registry uploads (or use |
| Override LLM model (same as |
| Disable ANSI colors (no-color.org) |
Provider priority: Set
preferred_providerviaagentaudit model, or the CLI picks the first available key. Override per-run with--model <name>.
๐ฆ Requirements
Node.js โฅ 18.0.0
Git (for cloning repositories during scan/audit)
โ FAQ
How do I set up AgentAudit?
npm install -g agentaudit
agentaudit setupOr use without installing: npx agentaudit
Do I need an API key?
Quick scan (
scan): No API key needed โ runs locally with regexDeep audit (
audit): Needs an LLM API key (see below)Registry lookup (
lookup): No key needed for reading; key needed for uploading reportsMCP server: No extra key needed โ uses the host editor's LLM
Setting up your LLM key for deep audits
The audit command supports 13 LLM providers. Set one API key and AgentAudit auto-detects it:
# Set any one of these (Anthropic recommended)
export ANTHROPIC_API_KEY=sk-ant-...
export OPENAI_API_KEY=sk-...
export GEMINI_API_KEY=...
export DEEPSEEK_API_KEY=...
# ... or any of the 13 supported providers (see Configuration section)Interactive setup:
agentaudit model # 2-step menu: pick provider โ pick model
agentaudit status # check which keys are set + current configOverride per-run:
agentaudit audit https://github.com/owner/repo --model gpt-4oTroubleshooting: If you see API error: Incorrect API key, double-check your key is valid and has credits. Use --debug to see the full API response.
What data is sent externally?
Registry lookups: Package name/slug is sent to
agentaudit.devto check for existing auditsReport uploads: Audit findings are uploaded to the public registry (requires API key)
Deep audits: Source code is sent to Anthropic or OpenAI for LLM analysis
Quick scans: Everything stays local โ no data leaves your machine
Can I use it offline?
Quick scans (agentaudit scan) work fully offline after cloning. Registry lookups and deep audits require network access.
Can I use it as an MCP server without the CLI?
Yes! npx agentaudit starts the MCP server when invoked by an editor. The CLI and MCP server are the same package โ behavior is determined by how it's called.
How does discover know which editors I use?
It checks standard config file locations for Claude Desktop, Cursor, VS Code, and Windsurf. It also checks the current working directory for project-level .cursor/mcp.json and .vscode/mcp.json.
๐ Related
Project | Description | |
๐ | Trust Registry -- browse packages, findings, leaderboard | |
๐ก๏ธ | Agent Skill -- pre-install security gate for Claude Code, Cursor, Windsurf | |
โก | GitHub Action -- CI/CD security scanning | |
๐ | This repo -- CLI + MCP server source | |
๐ | Bug reports and feature requests |
๐ License
AGPL-3.0 โ Free for open source use. Commercial license available for proprietary integrations.
Protect your AI stack. Scan before you trust.
Available Tools
7 toolsaudit_packageA
Deep security audit of a Git repository. Clones the repo and returns source code with a 3-pass audit methodology (UNDERSTAND โ DETECT โ CLASSIFY). You then analyze the code and call submit_report with findings. Use check_package FIRST to see if an audit already exists โ only use this for unaudited packages or when a fresh audit is requested.
| Name | Required | Description | Default |
|---|---|---|---|
| source_url | Yes | Git repository URL to audit (e.g., https://github.com/owner/repo) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that it clones the repo, returns source code, and mentions a 3-pass methodology. However, it is slightly ambiguous whether the methodology is executed by the tool or is a guide for the agent, and it does not mention side effects like repository size limits or auth needs. Still, the core behavior is transparent.
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 three sentences, each serving a purpose: the first defines the core action, the second describes the workflow, and the third provides usage guidance. It is concise, front-loaded, and free of fluff.
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?
The description covers the tool's purpose, when to use it, and the follow-up action, which is sufficient for a one-parameter tool with no output schema. However, it leaves some details ambiguous, such as the exact output format and how the 3-pass methodology manifests, but overall the context is well covered.
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?
The schema fully documents the single parameter 'source_url' with a description and example. The tool description does not add specific parameter-level details beyond what the schema already provides, so the baseline of 3 applies.
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 clearly states the tool performs a 'deep security audit of a Git repository' with a specific verb and resource. It distinguishes itself from siblings by explicitly mentioning check_package and submit_report, positioning this tool as the core auditing step.
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 gives explicit guidance: 'Use check_package FIRST to see if an audit already exists โ only use this for unaudited packages or when a fresh audit is requested.' It also instructs to call submit_report with findings after analysis, clearly defining when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_packageA
Look up a package in the AgentAudit security registry. USE THIS FIRST whenever the user wants to install, add, evaluate, or learn about a specific MCP server or package. Returns risk score, findings, and official audit status if available. If the package is not yet in the registry, suggests running an audit. This is the go-to tool for any "is this safe?" or "should I install this?" question.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | Package name or slug to look up (e.g., "fastmcp", "mongodb-mcp-server") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on the transparency burden. It discloses the tool's output (risk score, findings, status) and its not-found behavior (suggesting an audit), adding valuable behavioral context. However, it does not explicitly confirm that the operation is read-only or mention any side effects, though 'look up' strongly implies a non-destructive query.
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 efficiently structured with the key purpose and usage priority up front. It delivers useful information in every sentence, though there is slight redundancy between 'USE THIS FIRST' and 'go-to tool' that could be tightened.
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 lookup tool with one parameter and no output schema, the description covers all essential aspects: purpose, return values, usage timing, and fallback behavior. It is contextually complete for an agent to decide when and how to invoke it.
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?
The input schema fully documents the single parameter package_name with a helpful description and examples (100% coverage). The tool description adds context about the package being an MCP server or package but does not provide additional parameter-specific semantics beyond the schema. A baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('look up a package'), the resource ('AgentAudit security registry'), and the expected return info (risk score, findings, audit status). It also explicitly distinguishes itself from audit_package by positioning itself as the first-stop lookup tool, making it a clear purpose.
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 explicitly states when to use this tool ('USE THIS FIRST whenever the user wants to install, add, evaluate, or learn about a specific MCP server or package') and frames it as the go-to for safety questions. It also implies an alternative by noting that if the package isn't found, it suggests running an audit, which indirectly points to audit_package.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consensus_analysisA
Get multi-auditor consensus analysis for a package. Shows how many different auditors and models have scanned the package, their agreement on findings, and the overall consensus risk level. Useful for getting a second opinion on any package's security posture.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | Package name or slug to look up consensus for (e.g., "fastmcp", "mongodb-mcp-server") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. The verbs 'Get' and 'Shows' imply a read-only operation, but the description does not explicitly state that it avoids side effects, permissions, or rate limits. It partially discloses behavior by describing the output, but lacks a clear safety guarantee.
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 two concise sentences. The first sentence immediately states the core function, and the second adds useful details about what is shown and a usage hint. There is no redundant or filler content.
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 tool with one parameter and no output schema, the description adequately explains the return content: number of auditors/models, agreement, and consensus risk level. It lacks details about edge cases or how to interpret risk levels, but overall it is sufficiently complete for an agent to invoke correctly.
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?
The schema covers 100% of parameter descriptions, including an example ('fastmcp', 'mongodb-mcp-server'). The tool description adds minimal extra meaning beyond mentioning 'package' and the context of security posture. Since the schema already does the heavy lifting, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource: 'Get multi-auditor consensus analysis for a package.' It clearly explains what the tool does and distinguishes itself from single-audit tools by emphasizing 'multi-auditor' and 'consensus.' The additional detail about showing counts, agreement, and risk level makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'Useful for getting a second opinion on any package's security posture.' This signals when to use the tool, particularly as a cross-check on findings. However, it does not explicitly mention alternatives or state when not to use this tool, so it misses the highest bar for sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_serversA
Scan local config files to list ALREADY INSTALLED MCP servers (Claude Desktop, Cursor, Windsurf, VS Code). Use ONLY when the user wants to review/list their existing servers. Do NOT use this when the user wants to install, evaluate, or look up a specific package โ use check_package for that instead.
| Name | Required | Description | Default |
|---|---|---|---|
| check_registry | No | If true, also check each discovered server against the AgentAudit registry (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly implies a read-only operation by using 'scan' and 'list', and specifies the source as local config files. It does not explicitly state 'read-only' or mention any side effects, but the verbs make the passive nature clear. Lacks detail on what happens after scanning (e.g., output format), but the core behavior is transparent.
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?
Two tightly packed sentences: the first states the tool's purpose and scope, the second provides usage boundaries. No fluff or redundancy. Front-loaded with the primary action.
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?
The tool is simple (one optional parameter, no output schema, no annotations). The description fully covers what the tool does, when to use it, and when not to. It even names the alternative. The lack of an output schema is mitigated by the description's 'list' wording, which implies the return type.
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% (the single parameter check_registry is described in the schema). The description adds no additional semantics about the parameter, but the baseline is 3 when schema coverage is high, and the parameter's purpose is clear from the 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 ('list') and resource ('ALREADY INSTALLED MCP servers') with explicit sources (Claude Desktop, Cursor, Windsurf, VS Code). It clearly distinguishes from sibling tools by instructing to use check_package for install/evaluate/lookup tasks.
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?
Provides explicit when-to-use ('Use ONLY when the user wants to review/list their existing servers') and when-not-to-use ('Do NOT use this when the user wants to install, evaluate, or look up a specific package'), and names the alternative tool (check_package). This is exemplary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_tool_poisoningA
Scan MCP tool definitions for hidden instructions, unicode tricks, obfuscated payloads, and manipulation patterns. Use this to check if a server's tools contain poisoning indicators (prompt injection in descriptions, zero-width characters, cross-tool manipulation, homoglyph attacks). Provide tool definitions directly OR a source_url to extract them from code.
| Name | Required | Description | Default |
|---|---|---|---|
| source_url | No | Git repository URL. If provided (and no tool_definitions), will clone the repo and attempt to statically extract tool definitions from source code. | |
| server_name | No | Name of the MCP server being scanned (for reporting purposes). | |
| tool_definitions | No | Array of tool definition objects to scan. Each object should have: name (string), description (string), inputSchema (object, optional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions scanning and extraction from code but omits important behaviors such as network access/repo cloning (only mentioned in the schema's source_url parameter description), potential side effects, and what the output format is. This is a significant gap for a tool that may clone external repositories.
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 two sentences, front-loaded with the main action, and contains no redundant words. It efficiently conveys the purpose, usage context, and input methods.
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?
The description covers the purpose and inputs well, but it lacks information about the output format and edge cases (e.g., what happens if neither tool_definitions nor source_url is provided). With no output schema to compensate, this leaves some gaps, though the core functionality is adequately described.
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 baseline is 3. The description adds value by clarifying the OR relationship between tool_definitions and source_url, which is not explicit in the schema. However, it doesn't add further semantics beyond that, so a 3 is appropriate.
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 uses a specific verb ('scan'), a clear resource ('MCP tool definitions'), and a detailed scope (hidden instructions, unicode tricks, obfuscated payloads, manipulation patterns). This clearly distinguishes the tool from siblings like discover_servers or audit_package.
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 explicitly states 'Use this to check if a server's tools contain poisoning indicators', providing a clear context for when to use it. It also explains the two input modes (tool_definitions or source_url). It doesn't mention exclusions or alternatives, but the sibling tools serve different purposes, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_packagesA
Search the AgentAudit security registry for packages. Returns matching packages with their risk scores and audit status. Use this when you need to find a package but don't know the exact name.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g., "fastmcp", "database", "slack") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose the return content (matching packages with risk scores and audit status), but it omits details like result ordering, pagination, or whether the search is fuzzy/exact. This is sufficient but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences. The first sentence front-loads the action and result, and the second provides usage guidance. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool with no output schema, the description is nearly complete: it explains the purpose, the return content, and when to use it. The only minor gap is not discussing result ordering or limit behavior, but these are not essential for basic usage.
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?
The schema already fully describes the single 'query' parameter with examples, so the description adds little new meaning about the parameter itself. It reinforces that the query targets packages but does not go beyond the schema, matching the baseline for high schema coverage.
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 uses a specific verb 'Search' with a clear resource ('AgentAudit security registry for packages') and states what is returned (risk scores and audit status). This effectively differentiates it from sibling tools like audit_package or check_package, which imply checking a known package rather than searching by name.
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 explicitly states when to use this tool: 'when you need to find a package but don't know the exact name.' It provides clear context but does not name specific alternative tools or when not to use it, so it falls just short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_reportA
Submit a completed security audit report to the AgentAudit registry (agentaudit.dev). Call this after you have analyzed the code from audit_package. The report becomes publicly available and helps other agents make install decisions.
| Name | Required | Description | Default |
|---|---|---|---|
| report | Yes | The audit report JSON object. Required fields: skill_slug, source_url, risk_score (0-100), result (safe|caution|unsafe), findings (array), findings_count, max_severity, package_type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavioral traits. It clearly states that 'The report becomes publicly available,' which is a critical irreversible side effect. However, it does not mention whether the submission is permanent or if any authentication is required, though the public-availability disclosure is the most important trait.
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 three sentences, each earning its place: purpose, when to use, and why it matters. There is no redundancy or fluff, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple interface (one parameter, fully documented) and no output schema, the description covers the essential context: the action, prerequisite, and public impact. It doesn't mention error handling or return values, but these are not required when the schema is self-sufficient. Minor gaps like potential validation or failure modes prevent a perfect score.
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?
The schema already provides 100% coverage of the 'report' parameter, including required fields and their types. The description adds the concept of 'completed' and ties the report to the output of audit_package, but does not add further syntactic or structural detail. This aligns with the baseline of 3 for high schema coverage.
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 uses the specific verb 'Submit' with a clear resource: 'completed security audit report to the AgentAudit registry (agentaudit.dev)'. This distinguishes it from sibling tools like audit_package and check_package, which are about analysis rather than submission. The mention of being 'after audit_package' further clarifies its role.
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 gives an explicit when-to-use instruction: 'Call this after you have analyzed the code from audit_package.' This is a clear prerequisite that helps the agent choose the correct timing. It also implies not to call before an audit is complete, effectively excluding premature use.
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.
7 tool updates
v3.14.0- First observed
audit_package - First observed
check_package - First observed
consensus_analysis - First observed
discover_servers - First observed
scan_tool_poisoning - First observed
search_packages - First observed
submit_report
TDQS
Most tools have clearly distinct purposes: discover_servers is for listing installed servers, audit_package for deep code audits, check_package for registry lookups, etc. However, check_package and consensus_analysis both relate to registry lookups and could be confused, though descriptions clarify that one is for initial checks and the other for multi-auditor consensus.
Six of the seven tools follow a consistent verb_noun pattern (discover_servers, audit_package, submit_report, check_package, search_packages, scan_tool_poisoning). The one deviation is 'consensus_analysis', which uses a noun phrase instead of a verb_noun form, creating a minor inconsistency.
With 7 tools, the set is well-scoped for the security-audit domain. Each tool serves a distinct stage (discovery, lookup, search, audit, submission, consensus, poisoning scan), fitting comfortably within the ideal 3-15 range without bloat or deficiency.
The toolset covers the full workflow from discovering installed servers to auditing, submitting reports, and obtaining consensus. While there is no tool to edit or delete submitted reports, this is a minor gap and the core lifecycle is complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
Security firewall for AI agents โ scans MCP calls for injection, secrets, and risks.
Scan agent skills and MCP servers for malicious patterns before you load them
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP security scanner for AI agents - detects prompt injection, secrets, PII, and vets MCP servers before installationApache 2.0
- AlicenseAqualityDmaintenanceA 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.42Apache 2.0
- AlicenseAqualityFmaintenanceSecurity scanner for AI agent packages that enables AI agents to audit MCP servers and packages for vulnerabilities, prompt injection, and supply chain attacks.5293AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceEnables scanning of AI agent code for security vulnerabilities such as prompt injection, tool abuse, and data exfiltration, directly from MCP-compatible clients like Claude Code.1LGPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/agentaudit-dev/agentaudit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server