BackendMax
Click 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., "@BackendMaxanalyze the payment routes for security gaps and validation"
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.
╔══════════════════════════════════════════════════════════════╗
║ ║
║ ██████╗ █████╗ ██████╗██╗ ██╗███████╗███╗ ██╗██████╗ ║
║ ██╔══██╗██╔══██╗██╔════╝██║ ██╔╝██╔════╝████╗ ██║██╔══██╗║
║ ██████╔╝███████║██║ █████╔╝ █████╗ ██╔██╗ ██║██║ ██║║
║ ██╔══██╗██╔══██║██║ ██╔═██╗ ██╔══╝ ██║╚██╗██║██║ ██║║
║ ██████╔╝██║ ██║╚██████╗██║ ██╗███████╗██║ ╚████║██████╔╝║
║ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝╚═════╝║
║ ║
║ ███╗ ███╗ █████╗ ██╗ ██╗ ║
║ ████╗ ████║██╔══██╗╚██╗██╔╝ ║
║ ██╔████╔██║███████║ ╚███╔╝ ║
║ ██║╚██╔╝██║██╔══██║ ██╔██╗ ║
║ ██║ ╚═╝ ██║██║ ██║██╔╝ ██╗ ║
║ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ║
║ ║
╚══════════════════════════════════════════════════════════════╝🩺 AI-Powered Backend Diagnostics for Claude Code
The backend bugs your linter can't see. The contract drift your tests don't cover. Caught before deploy.
Quick Start · Features · Tools · Roadmap
🤔 What Is This?
Backend Max is a Model Context Protocol (MCP) server that gives Claude deep diagnostic vision into your backend. It statically analyzes your codebase — both frontend and backend — to surface bugs, contract drift, missing validation, security gaps, and performance anti-patterns that no other single tool catches.
Think of it as a senior backend engineer that reviews every route, checks every contract, and never goes on vacation.
Related MCP server: checkyourself
🔭 How It Works
┌─────────────────────────────────────────────────────────────────────┐
│ │
│ 📂 Your Codebase 🩺 Backend Max 📋 Report │
│ │
│ ┌───────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Frontend │────────▶ │ Cross- │ │ Health │ │
│ │ API Calls │ │ Boundary │──────▶ │ Score │ │
│ └───────────┘ │ Analysis │ ├───────────┤ │
│ │ │ │ Issues │ │
│ ┌───────────┐ │ ┌──────────┐ │ ├───────────┤ │
│ │ Backend │────────▶ │ │ 6 Audit │ │──────▶ │ API Docs │ │
│ │ Routes │ │ │ Engines │ │ ├───────────┤ │
│ └───────────┘ │ └──────────┘ │ │ Fixes │ │
│ │ │ │ Guide │ │
│ ┌───────────┐ │ ┌──────────┐ │ └───────────┘ │
│ │ Config │────────▶ │ │ Intent │ │ │
│ │ & Env │ │ │ Engine │ │ │
│ └───────────┘ │ └──────────┘ │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘⚡ Why Backend Max?
Existing tools catch syntax errors and type mismatches. Backend Max catches the bugs that ship to production.
Bug Category | TypeScript | ESLint | Jest/Vitest | Backend Max |
Frontend calls | ❌ | ❌ | ❌ | ✅ |
Frontend sends | ❌ | ❌ | ❌ | ✅ |
Route handler missing try/catch | ❌ | ❌ | ❌ | ✅ |
Zod schema missing on POST route | ❌ | ❌ | ❌ | ✅ |
| ❌ | ❌ | ❌ | ✅ |
Auth middleware missing on sensitive route | ❌ | ❌ | ❌ | ✅ |
N+1 query in a loop | ❌ | ❌ | ❌ | ✅ |
API docs out of date | ❌ | ❌ | ❌ | ✅ |
💡 Backend Max doesn't replace your existing tools. It catches what they architecturally cannot — cross-boundary issues that require understanding both sides of the stack.
🚀 Quick Start
Install with your MCP client
claude mcp add backend-max -- npx -y backend-maxDone. Open any project and type /backendmax run a full diagnosis.
Add to your claude_desktop_config.json:
{
"mcpServers": {
"backend-max": {
"command": "npx",
"args": ["-y", "backend-max"]
}
}
}Add to .vscode/settings.json:
{
"mcp.servers": {
"backend-max": {
"command": "npx",
"args": ["-y", "backend-max"]
}
}
}Add to your MCP config:
{
"mcpServers": {
"backend-max": {
"command": "npx",
"args": ["-y", "backend-max"]
}
}
}git clone https://github.com/rish-e/backend-max.git
cd backend-max
npm install && npm run buildThen add to your MCP client config:
{
"command": "node",
"args": ["/path/to/backend-max/dist/server.js"]
}Run Your First Diagnosis
Open your MCP client in any project and ask:
/backendmax run a full diagnosis on my projectThat's it. Backend Max will analyze your project and return a full diagnostic report with health score, issues, and fix suggestions.
4. CI/CD Mode (Optional)
Run diagnostics from the command line or GitHub Actions:
# Basic diagnosis
npx backend-max-cli diagnose ./my-project
# CI mode — fail if health score drops below 75 or critical issues found
npx backend-max-cli diagnose ./my-project --ci --min-score 75 --fail-on critical
# Output formats
npx backend-max-cli diagnose ./my-project --format markdown # PR comments
npx backend-max-cli diagnose ./my-project --format sarif # GitHub Code Scanning
npx backend-max-cli diagnose ./my-project --format json # Raw data🔬 Features Deep Dive
🆕 v2.4 — External Audit Suite (Black-Box Testing)
Audit any website with just a URL — no source code, no credentials, no access needed.
Tool | Description |
🔒 | HTTP security header analysis with A-F grading. Deep CSP parsing (unsafe-inline/eval, wildcards), HSTS validation (max-age, preload), COEP/COOP/CORP checks |
🌐 | CORS misconfiguration detection. Tests origin reflection, wildcard + credentials conflicts, overly permissive methods, missing preflight cache |
🔐 | TLS/certificate analysis. Chain validation, expiry warnings, protocol version check (TLS 1.2+), cipher grading, HTTP→HTTPS redirect |
🍪 | Cookie security flags audit. Checks Secure, HttpOnly, SameSite on all cookies. Detects exposed session tokens |
🌍 | DNS & infrastructure fingerprinting. CDN detection, SPF/DMARC/CAA records, email security posture |
💥 | Error response probing. Tests for stack trace leakage, framework disclosure, database errors, debug mode exposure |
🔑 | Authentication surface analysis. Discovers login endpoints, detects auth mechanisms, tests rate limiting, checks account enumeration |
🔍 | API surface discovery. Extracts endpoints from frontend JS bundles, maps auth requirements, finds unprotected APIs |
# Audit any website — no source code needed
Use audit_headers on https://example.com
Use scan_public_api on https://example.comv2.2 — Tier 2 Feature Drop
Feature | Description |
⚡ Fastify Support | Full route analysis with built-in JSON Schema validation detection, error handler checks, param extraction |
🔥 Hono Support | Route analysis with basePath resolution, zValidator detection, middleware arg parsing |
🚦 Rate Limiting Audit | Detects rate limiting packages/patterns, flags unprotected auth endpoints, checks caching coverage |
📐 API Versioning | Detects path/header versioning, finds version gaps, flags inconsistent versioning |
🔗 Middleware Visualization | Maps global/inline middleware chains per route, checks ordering, generates markdown visualization |
🔍 Multi-Layer Type Tracing | Traces types across frontend → route → service → repository → DB, finds cross-layer mismatches |
v2.1 — Tier 1 Feature Drop
Feature | Description |
🔧 Auto-Fix Engine | Generates real unified diff patches for common issues — try/catch wrapping, Zod validation, auth guards, pagination. Apply with |
👁️ Watch Mode | Incremental analysis — shows new issues, fixed issues, and health score delta since last run. No full re-scan needed |
🔀 tRPC Support | Full router analysis — procedures, input validation, protected/public, queries vs mutations. 3 tRPC-specific checks |
🕸️ GraphQL Analysis | Resolver scanning for Apollo, Yoga, Mercurius, type-graphql, NestJS. N+1 detection, auth checks, input validation |
📦 Dependency Scanner | Built-in vulnerability database (12+ packages), deprecated package detection, lock file checks, npm audit integration |
v2.0 Features
Feature | Description |
🗄️ Prisma Schema Integration | Parses your |
🔍 Deep Type Flow Analysis | Traces frontend response variables to check property access against backend return types — catches |
⚡ Server Actions | Full audit of Next.js Server Actions ( |
🚀 CI/CD Mode | CLI entry point with |
🟢 Express.js Support | Route scanning, middleware detection, Express-specific checks (error middleware, 404, helmet/CORS) |
📄 Pages Router | Next.js Pages Router API routes ( |
🧪 Live Testing | Optional HTTP endpoint testing against running dev server (GET-only, safety-first) |
🕸️ API Graph | Queryable relationship graph — ask "unprotected routes" or "routes writing to users" |
📊 Pattern Learning | Local cross-project pattern tracking — identifies the most common issues across your projects |
📋 SARIF Output | GitHub Code Scanning integration via SARIF format |
🔗 Cross-Boundary Contract Verification
The #1 feature. No other tool does this.
Backend Max reads your frontend fetch/axios calls and your backend route handlers, then cross-references them to find:
URL mismatches — frontend calls
/api/user, backend serves/api/usersMethod mismatches — frontend sends
POST, backend expectsPUTPayload drift — frontend sends
{ name, email }, backend expects{ username, email }Response shape drift — frontend destructures
data.items, backend returnsdata.results
// Frontend: lib/api.ts
const user = await fetch('/api/user', { // ← "/user" (singular)
method: 'POST',
body: JSON.stringify({ name: 'Alice' }) // ← sends "name"
});
// Backend: app/api/users/route.ts // ← "/users" (plural)
export async function POST(req: Request) {
const { username } = await req.json(); // ← expects "username"
// ...
}⚠️ CONTRACT DRIFT DETECTED
Route Mismatch:
Frontend calls → /api/user (POST)
Backend serves → /api/users (POST)
Payload Mismatch:
Frontend sends → { name: string }
Backend expects → { username: string }🧠 Intent-Aware Diagnosis
Backend Max doesn't just scan code — it understands what you're building. By analyzing your project structure, route names, and data models, it builds an intent map:
Identifies your domains (auth, billing, users, etc.)
Understands relationships between entities
Flags issues that are contextually wrong, not just syntactically wrong
🎯 "This route handles payments but doesn't validate the amount field" is more useful than "missing validation on line 47".
🛡️ Pre-Deploy Safety Net
Six audit engines run in parallel, each targeting a category of bugs that commonly ship to production:
# | Audit Engine | What It Catches |
1 | 🔗 API Contract Drift | Frontend↔backend URL, method, payload, and response mismatches |
2 | 🚨 Error Handling | Missing try/catch, inconsistent error response formats, unhandled promise rejections |
3 | ✅ Input Validation | Routes without Zod schemas, raw |
4 | 🔑 Environment Variables | Undefined refs, missing |
5 | 🔒 Security | Auth middleware gaps, permissive CORS, SQL/NoSQL injection patterns, exposed secrets |
6 | ⚡ Performance | N+1 queries, unbounded |
Each issue includes:
Severity —
critical·warning·infoLocation — exact file and line number
Explanation — what's wrong and why it matters
Fix suggestion — actionable code-level guidance
📖 Living API Documentation
Backend Max auto-generates API documentation by reading your actual route handlers. No annotations needed. No Swagger decorators. Just your code.
## POST /api/auth/login
Authentication endpoint for user login.
**Request Body:**
| Field | Type | Required | Validation |
|----------|--------|----------|------------------|
| email | string | ✅ | Valid email |
| password | string | ✅ | Min 8 characters |
**Response (200):**
| Field | Type |
|-------|--------|
| token | string |
| user | object |
**Error Responses:** 401, 422, 500The docs update every time you run a diagnosis. They can never go stale.
📒 Issue Lifecycle Tracking
Every issue is tracked through its full lifecycle:
Found → Acknowledged → Fixed → Verified → (Regressed?)Backend Max maintains a ledger in .backend-doctor/history/ so you can:
See what was fixed and when
Detect regressions (issues that come back)
Track your backend health score over time
Review historical audit reports
💯 Health Score
A single number, 0–100, representing your backend's overall health:
╔══════════════════════════════════════╗
║ Backend Health Score: 73/100 📊 ║
╠══════════════════════════════════════╣
║ Contracts ████████░░ 80% ║
║ Error Handling ██████░░░░ 60% ║
║ Validation ███████░░░ 70% ║
║ Env Vars █████████░ 90% ║
║ Security ██████░░░░ 60% ║
║ Performance ████████░░ 80% ║
╚══════════════════════════════════════╝Track it over time to see your backend getting healthier with every commit.
🛠️ Available Tools
All tools are exposed via MCP and available directly in Claude Code:
Tool | Description |
| Full diagnostic pipeline — scans routes, checks contracts, runs all audits, generates docs, calculates health score |
| Incremental analysis — compares against last report, shows new/fixed issues and health delta |
| Quick check — shows changed files since last diagnosis without re-running analysis |
| Analyze project structure, identify domains, frameworks, and architecture |
| Cross-reference frontend API calls against backend routes |
| Discover all API routes/endpoints across all supported frameworks |
| Check error handling — try/catch coverage, consistent error formats |
| Verify environment variables — missing refs, prefix misuse |
| Security scan — auth gaps, CORS, injection patterns |
| Performance anti-patterns — N+1 queries, unbounded queries, missing pagination |
| Prisma schema cross-referencing — nonexistent models/fields, missing indexes |
| Next.js Server Actions audit — validation, auth, error handling |
| Dependency vulnerability scanner — known CVEs, deprecated packages, lock file checks |
| Generate a unified diff patch for a specific issue |
| Batch-generate patches for all open issues |
| Auto-generated living API documentation |
| Full issue lifecycle ledger — filter by status, severity, category |
| Optional HTTP endpoint testing (GET-only, localhost-only, safety-first) |
| Query the API relationship graph — "unprotected routes", "routes writing to users" |
| Cross-project pattern insights — most common issues by framework |
| Rate limiting & caching audit — detects packages, code patterns, flags unprotected auth endpoints |
| API versioning detection — path/header versioning, version gaps, consistency checks |
| Middleware chain visualization — maps execution order, checks ordering, markdown output |
| Multi-layer type tracing — traces types across frontend → route → service → DB layers |
| Validate project safety constraints before diagnosis |
Tool Usage Examples
// In Claude Code, these are called automatically.
// Direct MCP usage:
// Full diagnosis (the /doctor command runs this)
await client.callTool('diagnose', { projectPath: '.' });
// Just check contracts
await client.callTool('verify_contracts', { projectPath: '.' });
// Generate fresh API docs
await client.callTool('generate_docs', { projectPath: '.', outputFormat: 'markdown' });🩺 The /doctor Command
The simplest way to use Backend Max. Just type /doctor in Claude Code.
What it does:
🧠 Scans your project to understand its intent and architecture
🔗 Verifies all frontend↔backend contracts
🔍 Runs all 6 audit engines
📖 Generates/updates API documentation
💯 Calculates your health score
📋 Returns a prioritized report
Example Output
🩺 Backend Max Diagnosis Complete
═══════════════════════════════════
📊 Health Score: 73/100 (↑ 5 from last run)
🚨 Critical Issues (2)
├─ AUTH_GAP: /api/billing/charge has no auth middleware
│ → app/api/billing/charge/route.ts:1
│
└─ CONTRACT_DRIFT: Frontend calls DELETE /api/user/:id
but backend only exposes GET, POST on /api/users
→ lib/api/users.ts:45 ↔ app/api/users/route.ts
⚠️ Warnings (5)
├─ VALIDATION: POST /api/posts missing input validation
├─ ERROR_FORMAT: 3 routes return inconsistent error shapes
├─ ENV_VAR: DATABASE_URL referenced but not in .env.example
├─ PERFORMANCE: N+1 query pattern in /api/users (line 23)
└─ SECURITY: CORS allows * in production config
ℹ️ Info (3)
├─ 2 routes could benefit from response caching
├─ API docs regenerated (12 endpoints documented)
└─ 1 previously fixed issue verified as resolved ✓
📖 API docs updated: .backend-doctor/api-docs.md
📒 Issue ledger updated: .backend-doctor/history/📁 Project Structure
Backend Max creates a .backend-doctor/ directory in your project root:
.backend-doctor/
├── project-intent.json # Understanding of your project's purpose & domains
├── api-docs.md # Auto-generated API documentation
├── health-score.json # Current & historical health scores
├── issues/
│ ├── current.json # Active issues from latest run
│ └── ledger.json # Full issue lifecycle history
├── contracts/
│ ├── frontend-calls.json # Extracted frontend API calls
│ └── backend-routes.json # Extracted backend route definitions
└── history/
└── 2026-03-27.json # Historical audit snapshots📌 Add
.backend-doctor/to your.gitignoreor commit it — your choice. Committing it gives your team shared visibility into backend health.
⚙️ Configuration
Create a backend-max.config.json in your project root to customize behavior:
{
// Which audit engines to run (default: all)
"audits": {
"contracts": true,
"errorHandling": true,
"validation": true,
"envVars": true,
"security": true,
"performance": true
},
// Paths to scan (globs)
"include": ["app/api/**", "src/routes/**"],
// Paths to ignore
"exclude": ["**/*.test.ts", "**/__mocks__/**"],
// Frontend paths for contract verification
"frontendPaths": ["app/**", "components/**", "lib/**"],
// Minimum severity to report: "info" | "warning" | "critical"
"minSeverity": "info",
// Custom environment variable file paths
"envFiles": [".env", ".env.local", ".env.production"]
}🛡️ Safety & Security
Backend Max is built with a safety-first philosophy. Every operation — from file scanning to report generation — passes through multiple safety layers. Your code is never executed, your secrets are never stored, and all output is sanitized before it touches disk. Backend Max is designed so that even in the worst case, it cannot leak sensitive data or damage your project.
Safety Systems
System | What It Does | Default |
Path Guardian | Validates project paths, blocks sensitive directories (.ssh, .aws, .gnupg), prevents path traversal attacks | Always on |
Output Sanitizer | Detects and redacts secrets in reports — AWS keys, GitHub tokens, Stripe keys, JWTs, connection strings, private keys, Slack tokens, and 12+ more patterns | Always on |
Scope Limiter | Caps file count (5,000), file size (1MB), scan depth (15 levels). Prevents memory exhaustion on large monorepos | Configurable |
Auto-Gitignore | Automatically adds | On by default |
Report Pruning | Auto-deletes diagnosis reports older than 30 days | Configurable |
Env Value Stripping | Environment variable VALUES are never read or stored — only variable NAMES. Impossible to leak secrets through reports | Always on |
Write Protection | Fix engine validates every write target: must be a source file, must be in project, must not be generated/config/lock files | Always on |
Security Guarantees
✅ Backend Max NEVER reads environment variable values — only names
✅ Backend Max NEVER executes your code — pure static analysis
✅ Backend Max NEVER sends data externally — everything stays local
✅ All diagnostic output is scrubbed for 15+ secret patterns before writing to disk
✅
.backend-doctor/is auto-gitignored to prevent accidental commits✅ File writes (fix engine) are sandboxed to source files within the project only
Configuration
Safety limits can be tuned via backend-max.config.json:
{
"maxFiles": 5000,
"maxFileSizeBytes": 1048576,
"maxScanDepth": 15,
"reportRetentionDays": 30,
"autoGitignore": true
}🗺️ Roadmap
Phase 1 — Foundation ✅
MCP server with stdio transport
Next.js App Router support
6 core audit engines
Cross-boundary contract verification
Auto-generated API documentation
Health score calculation
Issue lifecycle tracking
/doctorslash command
Phase 2 — Expansion ✅
Safety & sandboxing
Express.js support
CI/CD integration (GitHub Actions via SARIF)
Watch mode / incremental analysis
Auto-fix engine with code patches
tRPC support
GraphQL resolver analysis
Dependency vulnerability scanning
Phase 3 — Intelligence 🚧
Fastify + Hono framework support
Multi-layer type tracing (frontend → route → service → DB)
API versioning analysis
Rate limiting & caching audit
Middleware chain visualization
OpenAPI/Swagger spec generation
Dead code detection (unused routes/exports)
Test coverage mapping
Phase 4 — Ecosystem 🔮
VS Code extension — inline diagnostics
Monorepo support (Turborepo/Nx)
Database query complexity analyzer
API changelog between commits
Webhook/event auditor
Multi-service contract verification (microservices)
🤝 Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines.
Quick summary:
Fork & clone
npm install && npm run buildCreate a feature branch
Write your code (TypeScript strict, ESM, JSDoc comments)
Open a PR
📄 License
MIT © 2026 Rishi Kolisetty
Built with 🩺 by Rishi Kolisetty
Backend Max sees what your linter can't.
Available Tools
41 toolsaudit_auth_flowARead-onlyIdempotent
Authentication surface analysis. Discovers login endpoints, detects auth mechanisms (password, OAuth, OTP), checks for CSRF tokens, tests rate limiting on auth endpoints, and probes for account enumeration. No source code needed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to audit (e.g., https://example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare safe, read-only, idempotent behavior. The description adds that it performs multiple checks without source code, complementing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that front-load the purpose and elaborate concisely. Every word adds value.
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 single parameter and no output schema, the description is fairly complete. It could mention what the tool returns, but the listed actions imply output of findings.
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 covers 100% with a single 'url' parameter described. The description adds minimal value beyond confirming no source code is needed, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs 'Authentication surface analysis' and lists specific actions like discovering login endpoints and detecting auth mechanisms. It distinguishes itself from siblings by focusing solely on authentication.
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 implies usage for auditing authentication flows and notes that no source code is needed. It does not explicitly state when not to use or mention alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_breaking_changesAIdempotent
Compare current API routes against a saved baseline to detect breaking changes: removed endpoints, removed methods, changed parameters, removed validation or auth. Saves a baseline on first run.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory | |
| saveBaseline | No | If true, saves the current state as the new baseline after comparison |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent (idempotentHint=true) and not destructive (destructiveHint=false). Description adds that it saves a baseline on first run, but does not detail side effects (e.g., file system changes, location of baseline). No permission requirements mentioned. Additional context is minimal 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action and specific change types. No unnecessary words; every sentence adds value.
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 and description does not explain what the tool returns (e.g., a list of changes, a report, or just success/failure). Also missing details like baseline file naming or location. This is a significant gap for a tool that saves state.
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?
Input schema has 100% coverage with descriptions for both parameters (projectPath, saveBaseline). Description repeats the saveBaseline functionality but adds no new meaning beyond what the schema already provides. Baseline is appropriate since schema carries the burden.
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?
Description clearly states the tool compares current API routes against a saved baseline to detect specific breaking changes (removed endpoints, methods, etc.). It distinguishes from sibling audit tools like audit_migrations or audit_auth_flow by focusing on baseline comparison.
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 implies usage (first run saves baseline, subsequent runs detect changes) but does not explicitly state when to use this tool versus other audit tools. No 'when not to use' or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_cookiesARead-onlyIdempotent
Cookie security audit. Checks Secure, HttpOnly, SameSite flags on all cookies. Detects session tokens without HttpOnly, SameSite=None without Secure, overly broad cookie scopes. No source code needed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to audit (e.g., https://example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, idempotentHint=true, so the agent knows this is a safe, non-destructive operation. The description adds minor behavioral context (url-based, no code needed) but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding value: purpose, specific checks, and a note on usage. No filler words; information is front-loaded and efficient.
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 parameter (url), no output schema, and supportive annotations, the description fully covers what the tool does, what it checks, and that no source code is needed. No obvious gaps.
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 already provides a full description for the single parameter 'url'. The tool description does not add any extra semantic detail beyond what the schema offers.
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 specific verbs ('audit', 'checks', 'detects') and precisely states the resource ('cookies') and the security flags examined (Secure, HttpOnly, SameSite). It clearly distinguishes from sibling audit_* tools by focusing solely on cookie security.
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 no guidance on when to use this tool versus alternatives like audit_security, audit_headers, etc. It only mentions 'No source code needed' but does not compare or exclude other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_corsARead-onlyIdempotent
CORS misconfiguration detection. Tests preflight requests, origin reflection, wildcard + credentials conflicts, overly permissive methods, and missing max-age. Catches the exact issue found on coach.tetr.com. No source code needed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to audit (e.g., https://example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, non-destructive. Description adds specifics about what tests are performed (preflight, origin reflection, etc.) and that no source code is needed, providing useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second lists tests and notes. No redundant words, front-loaded with core function, highly efficient.
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 single well-described parameter and no output schema, description covers the tool's scope adequately with specific test examples. Slightly more clarity on return format could improve, but not essential for selection.
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?
Only one parameter (url) with full schema description. Description adds no extra meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool detects CORS misconfiguration and lists specific checks (preflight, origin reflection, etc.), using specific verbs and resource. It distinguishes from sibling audit tools by focusing solely on CORS.
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?
Mentions 'No source code needed,' implying external URL testing, but lacks explicit guidance on when to use versus alternatives like audit_headers or audit_security. Provides a concrete example but no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_dnsARead-onlyIdempotent
DNS and infrastructure analysis. Resolves A/AAAA/CNAME/MX/NS/TXT records, detects CDN provider, checks SPF/DMARC/CAA records for email and certificate security. No source code needed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to audit (e.g., https://example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by detailing specific behaviors: resolving various record types, detecting CDN provider, and checking email/certificate security. This provides richer 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the core purpose ('DNS and infrastructure analysis'). Every sentence adds useful information without 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?
Given the tool's complexity (multiple record types, CDN detection, security checks) and absence of an output schema, the description should ideally describe the return format or what the agent can expect. It currently lacks output details, making it slightly incomplete.
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% with a single parameter 'url' described as 'The URL to audit'. The description does not add further meaning beyond the schema, so it earns the baseline score.
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 'DNS and infrastructure analysis' and lists specific record types (A/AAAA/CNAME/MX/NS/TXT) and checks (CDN, SPF/DMARC/CAA). This distinguishes it from sibling audit tools focused on other areas like security, SSL, or headers.
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 context ('DNS and infrastructure analysis') and notes 'No source code needed', implying passive analysis. However, it does not explicitly state when to use this tool versus alternatives like audit_security or audit_ssl, nor does it mention 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.
audit_envARead-onlyIdempotent
Scan environment variable usage. Cross-references process.env references against .env files, checks for missing NEXT_PUBLIC_ prefixes, and detects undefined variables.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint, so the safety profile is clear. The description adds behavioral specifics (cross-referencing, prefix checking), but does not disclose return format or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently lists three distinct checks. It is front-loaded with the main verb. Minor length could be trimmed, but overall concise.
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 tool's simplicity (one parameter, no output schema, clear annotations), the description covers the main functionality. It might lack return value specifics, but that is acceptable without 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 coverage is 100% and the single parameter 'projectPath' is well-described in the schema. The description does not add further semantic details beyond what the schema provides.
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 specific verbs ('scan', 'cross-references', 'checks', 'detects') and clearly identifies the resource (environment variable usage). It distinguishes from sibling tools that audit other concerns (e.g., auth, security).
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 implies usage for auditing environment variable usage, but it does not explicitly state when to use this tool vs alternatives, nor does it provide when-not-to-use guidance or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_errorsARead-onlyIdempotent
Audit error handling across all API routes. Checks for try/catch coverage, consistent error response formats, unhandled promise rejections, and missing global error handlers.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds specific behavioral context (what checks are performed) beyond annotations, without contradictions.
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 a single sentence that efficiently conveys the main purpose and specific checks, with no wasted words. It is front-loaded and well-structured.
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 tool with one parameter and no output schema, the description is complete enough to inform an agent about its behavior and scope. Could mention output format but not essential.
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% and the schema already describes the single parameter. The description adds no additional parameter semantics, so baseline 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 states the tool audits error handling across all API routes, listing specific checks like try/catch coverage and error response formats. This distinguishes it from sibling audit tools.
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 implies usage when auditing error handling but does not explicitly state when to use or what alternatives exist (e.g., probe_error_handling). No exclusions or guidance on 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.
audit_externalARead-onlyIdempotent
Audit a deployed website or API from the outside — checks security headers (HSTS, CSP, X-Frame-Options, etc.), server information leakage, caching configuration, HTTPS redirect, error page information disclosure, and response time. No source code needed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to audit (e.g., https://example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. Description adds concrete behavioral details (what is checked: HSTS, CSP, XFO, etc.) and confirms no source interaction. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. Front-loaded with purpose, then lists checks and key usage note. Every sentence adds value.
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 no output schema, description covers what the tool does comprehensively for an external audit. Slightly lacking on how results are returned, but adequate for selection and invocation.
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?
Only one parameter 'url' with 100% schema coverage. Description provides an example URL format, adding value beyond the schema. Baseline 3 is exceeded by the practical example.
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?
Clearly states it audits a deployed website or API from the outside and lists specific checks (security headers, server info, caching, etc.). Distinguishes from siblings like audit_headers or audit_security by the external, comprehensive nature.
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?
Explicitly says 'No source code needed,' guiding when to use this external audit vs. tools that require source access. Could more explicitly list when to use alternatives, but the context provides sufficient sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_graphqlARead-onlyIdempotent
Deep GraphQL security audit — checks for introspection exposure, missing query depth/complexity limits, N+1 query patterns (DataLoader absence), missing field-level authorization, and batching attack vectors. Supports Apollo, Yoga, Mercurius, NestJS, and Pothos.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context by detailing the specific security checks performed and supported frameworks, enriching transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every word adds value. There is no redundancy or wasted space.
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 tool's single parameter, no output schema, and clear annotations, the description fully covers the purpose, checks, and supported frameworks. It is complete for an agent to understand and invoke the tool 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?
Schema covers 100% of the single parameter (projectPath) with a clear description. The tool description does not add additional parameter-specific meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a 'deep GraphQL security audit' and lists seven specific checks (introspection exposure, missing query depth/complexity limits, N+1 patterns, missing field-level authorization, batching attacks) and supported frameworks (Apollo, Yoga, etc.), providing a clear and distinct purpose 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states what the tool does but does not explicitly specify when to use it versus alternatives or when not to use it. It implies usage for GraphQL security auditing, but lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_headersARead-onlyIdempotent
Deep HTTP security header analysis with A-F letter grading. Checks CSP (unsafe-inline/eval, wildcards), HSTS (max-age, includeSubDomains, preload), COEP, COOP, CORP, Permissions-Policy, and more. No source code needed — just a URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to audit (e.g., https://example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly, idempotent, and non-destructive. The description adds context beyond annotations: depth of analysis, grading system, and that no source code is needed. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first captures the core function, the second adds detail. No wasted words.
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?
While the description covers the what and how, it lacks explanation of the return format (e.g., how the A-F grade is presented, whether a full report is returned). Without an output schema, more detail would be helpful.
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 'url' parameter. The description reinforces that only a URL is needed, adding value beyond the schema by emphasizing 'no source code needed.'
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 explicitly states the tool's function: deep HTTP security header analysis with A-F grading. It lists specific headers checked (CSP, HSTS, etc.), clearly distinguishing it from sibling tools like audit_security or audit_cors.
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 implies the tool is for analyzing HTTP security headers with just a URL, but lacks explicit guidance on when to use it over alternatives or when not to use it. No comparisons to sibling tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_migrationsARead-onlyIdempotent
Audit database migration files for destructive operations (DROP TABLE, DROP COLUMN, type changes), missing rollback/down migrations, and schema drift. Supports Prisma, Knex, Drizzle, TypeORM, and raw SQL.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a safe read-only operation (readOnlyHint=true, destructiveHint=false). The description adds value by detailing the specific behavioral aspects: what types of destructive operations are detected, missing rollbacks, and schema drift, as well as framework support. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant words. The first sentence front-loads the core purpose and specifics; the second lists supported frameworks concisely. Every part earns its place.
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 required parameter and no output schema, the description is fully complete. It covers what the tool checks (destructive ops, rollbacks, drift), the frameworks supported, and the nature of the analysis. No additional information is needed.
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 only parameter 'projectPath' is fully described in the schema with an 'Absolute path to the project root directory' description. The tool description does not add extra context beyond the schema, and schema coverage is 100%, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'audit', the resource 'database migration files', and the exact checks performed (destructive operations, missing rollbacks, schema drift). It also lists supported frameworks, distinguishing it from sibling audit tools like 'audit_prisma' which are more narrow.
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 implies usage for auditing migration safety and supports multiple frameworks, but does not explicitly state when to use this tool versus alternatives (e.g., 'audit_breaking_changes' or 'audit_prisma'). No exclusions or 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.
audit_performanceARead-onlyIdempotent
Detect performance anti-patterns. Finds N+1 queries, unbounded database calls, missing pagination, and payload bloat (backend returns more data than frontend uses).
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false, so the description adds value by enumerating specific anti-patterns detected (N+1 queries, etc.). No contradictions; the description complements the annotations well.
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 concise sentences, no wasted words. The core purpose is front-loaded, and every sentence serves a purpose.
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 single parameter and absence of output schema, the description sufficiently explains what the tool does. It could mention the return format, but the provided information is adequate for an audit tool.
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% and the single parameter projectPath has a clear description in the schema. The tool description does not add additional meaning or usage context for the parameter, so baseline score 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 detects performance anti-patterns, with specific examples like N+1 queries, unbounded calls, missing pagination, and payload bloat. This verb+resource combination is distinct from sibling tools such as audit_security or audit_prisma.
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 implies the tool is for performance auditing but does not explicitly state when to use it or provide alternatives. No exclusion criteria or comparative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_prismaARead-onlyIdempotent
Audit Prisma schema and database usage. Parses schema.prisma, cross-references database calls against the schema to find nonexistent models/fields, suggests missing indexes, and checks for migration drift.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds behavioral detail that the tool analyzes (parses, cross-references, suggests, checks) without contradicting annotations. This provides useful extra context about the tool's non-destructive analysis.
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 a single sentence that efficiently lists all key actions. It is front-loaded with the main purpose and contains no redundant words. Every part is necessary.
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 tool (1 param, no output schema, good annotations), the description covers the core functionality well. It could mention the output format (e.g., suggestions or report), but the current description is still fairly complete for agent use.
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% with a single parameter 'projectPath' having a clear description. The tool description does not add additional meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it audits Prisma schema and database usage, with specific actions like parsing schema.prisma, cross-referencing calls, finding missing models/fields, suggesting indexes, and checking migration drift. This clearly distinguishes it from sibling tools like audit_migrations or audit_auth_flow.
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 clearly states the tool's purpose and scope (Prisma schema and database auditing), providing implicit context for when to use it. It does not explicitly list alternatives or when-not scenarios, but the context is sufficient for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_rate_limitingARead-onlyIdempotent
Audit rate limiting and caching patterns. Detects rate limiting packages and code patterns, finds auth endpoints without rate limiting, identifies GET endpoints with DB calls but no caching, and flags cacheable endpoints missing Cache-Control headers.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and idempotentHint=true, which the description aligns with by using verbs like 'detects' and 'identifies.' The description adds context on what is audited but does not disclose additional behavioral traits such as permissions, error conditions, or limitations.
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 primary action, and each sentence adds distinct information without redundancy. It is concise and well-structured.
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 parameter set and rich annotations, the description adequately covers what the tool does. However, it lacks details about the output format (e.g., list of findings, JSON report), which is not provided by 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?
The sole parameter 'projectPath' is fully described in the schema as 'Absolute path to the project root directory.' The description adds no further meaning or constraints beyond the schema, meeting the baseline for full 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 clearly states the tool's function: 'Audit rate limiting and caching patterns.' It then enumerates specific audits (e.g., detecting rate limiting packages, GET endpoints without caching), making the purpose distinct from sibling audit tools.
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?
No explicit guidance on when to use this tool versus other audit tools (e.g., audit_auth_flow, audit_performance). The description implies its focus on rate limiting and caching, but does not provide criteria for selection or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_secretsARead-onlyIdempotent
Scan codebase for hardcoded API keys, tokens, passwords, private keys, and connection strings. Uses pattern matching for 25+ provider-specific secret formats (AWS, Stripe, GitHub, OpenAI, Anthropic, etc.) and checks .gitignore for env file exclusion.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
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 useful context about pattern matching and .gitignore checking, enhancing transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the core action, the second provides key details. Every sentence is valuable and there is 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?
With a single parameter, good annotations, and no output schema, the description covers the tool's function well. It could briefly mention the return format (e.g., list of findings) but overall is sufficiently complete for an agent.
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 only parameter 'projectPath' is fully described in the schema (100% coverage). The description does not add additional parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans codebases for hardcoded secrets (API keys, tokens, etc.) using pattern matching for 25+ formats. It distinguishes from sibling audit tools by focusing specifically on secrets and credential leaks.
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 implies usage for secret detection but does not explicitly state when to use it over alternatives like 'audit_security' or 'audit_auth_flow'. No exclusions or 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.
audit_securityBRead-onlyIdempotent
Check security posture. Detects auth middleware gaps, CORS misconfigurations, missing input validation, and known vulnerability patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, confirming safe, non-destructive behavior. Description adds meaningful context about what specific issues are detected, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences. Every phrase adds value. Could incorporate more guidance without sacrificing brevity.
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?
Lacks description of output format, return value, or performance implications. Given the tool's complexity and many sibling tools, more context about what the result looks like is needed for complete understanding.
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 covers parameter projectPath fully with description. Tool description does not add additional semantics, so baseline score 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?
Clearly states the tool checks security posture and lists specific detections (auth middleware, CORS, input validation, vulnerabilities). Differentiates from siblings like audit_cors and audit_auth_flow by being more comprehensive, though not explicitly stating scope.
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?
No guidance on when to use this tool versus alternatives like scan_public_api or audit_cors. Does not specify prerequisites, exclusions, or the appropriate context for invoking this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_server_actionsARead-onlyIdempotent
Audit Next.js Server Actions. Finds all 'use server' functions and checks for missing validation, error handling, auth checks, and unprotected database calls.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds specific behavioral context about what is checked (validation, error handling, etc.), consistent with annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 purpose without wasted words.
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?
While the description explains what the tool does, it does not mention the output format or return value. Since there is no output schema, this omission reduces completeness for an agent deciding whether to use 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 only parameter 'projectPath' is fully described in the schema (100% coverage). The tool description does not add any additional meaning beyond what the schema provides, so baseline score 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 audits Next.js Server Actions, specifying the resource and the checks it performs (validation, error handling, auth, etc.). It is distinct from sibling audit tools that 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context for auditing server actions but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_sslARead-onlyIdempotent
TLS/certificate analysis. Checks certificate chain, expiry (warns at 30 days, critical at 7), protocol version (TLS 1.2+), cipher strength, HTTP→HTTPS redirect, and HSTS preload. No source code needed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to audit (e.g., https://example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral details beyond annotations: expiry thresholds (30 days warning, 7 days critical), TLS 1.2+ requirement, and 'No source code needed'. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence front-loading purpose; every word adds value. 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?
Detailed on checks but lacks description of return value or output format, which is important given no 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 coverage is 100% with one parameter 'url'; description adds context (expects HTTPS URL) and ties to specific audit checks, enhancing meaning.
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?
Description clearly states 'TLS/certificate analysis' with specific checks (certificate chain, expiry thresholds, protocol, cipher, redirect, HSTS preload), differentiating from other audit 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?
Implies usage for SSL/TLS audits but lacks explicit guidance on when to vs. when not to use (e.g., other security tools like audit_security, audit_headers).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_versioningARead-onlyIdempotent
Detect and audit API versioning patterns. Finds path-based (/v1/, /v2/) and header-based (X-API-Version) versioning, identifies version gaps (routes in v1 but not v2), and flags inconsistent versioning across endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value by detailing what the tool analyzes (patterns, gaps, inconsistencies), going 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action verb, no wasted words. Highly concise and structured effectively.
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 low complexity (single parameter, no output schema) and rich annotations, the description is sufficiently complete. It covers the tool's purpose and what it produces.
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% with one parameter ('projectPath') already described. The description does not need to add more parameter semantics; baseline 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 states the tool detects and audits API versioning patterns, specifies what it finds (path-based, header-based, version gaps, inconsistencies), and distinguishes it from sibling tools like audit_breaking_changes or scan_public_api.
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 implies usage for versioning audits but does not explicitly state when to use or avoid this tool, nor mention alternative tools. Given the context of many sibling tools, some guidance would be beneficial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_changesARead-onlyIdempotent
Quick check — shows which files changed since the last diagnosis and how long ago it ran. Does NOT re-run analysis. Use this to decide if a full re-run is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds useful context about what information is returned (file changes, time since last diagnosis) without contradicting annotations. No additional behavioral surprises needed.
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 concise sentences with no wasted words. The purpose is front-loaded, and the description is efficient and clear.
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 tool's simplicity (one parameter, read-only, idempotent, no output schema), the description fully covers what the tool does, what it returns, and when to use it. No gaps.
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?
Only one parameter ('projectPath') with schema description coverage at 100% (the schema includes a description). The tool description does not add extra parameter semantics beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'shows which files changed since the last diagnosis and how long ago it ran.' It uses a specific verb ('shows') and resource ('files changed'), and distinguishes from siblings like 'run_diagnosis' by explicitly noting it does not re-run analysis.
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 guidance: 'Use this to decide if a full re-run is needed.' Also clarifies what the tool does not do ('Does NOT re-run analysis'), helping the agent choose between this and related tools like 'run_diagnosis'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_contractsARead-onlyIdempotent
Verify frontend-backend contracts. Finds all API calls in frontend code and cross-references them against backend route definitions. Detects mismatches, dead endpoints, and phantom calls.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds behavioral detail about cross-referencing and detection of mismatches, dead endpoints, and phantom calls, which goes beyond annotations. However, it does not describe the output format or what the agent can expect as a result.
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 short sentences with no wasted words. It is front-loaded with the purpose and provides clear details in a concise manner.
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 single parameter, no output schema, and annotations present, the description covers the purpose and behavior well. It lacks explicit details about the output format or how to interpret results, but the overall context is sufficient for most use cases.
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%, and the schema already provides a clear description for the single parameter. The tool description does not add extra parameter semantics beyond what the schema offers, so baseline 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 states the verb 'Verify' and the resource 'frontend-backend contracts', and explains it finds API calls in frontend code and cross-references with backend routes. This distinguishes it from siblings like scan_routes or audit_breaking_changes.
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 implies usage for checking contract consistency but does not explicitly state when to use this tool versus alternatives among the many audit siblings. No when-not-to-use or alternative tool names are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_all_issuesAIdempotent
Generate code patches for all open issues in the ledger. Returns unified diffs that can be applied with git apply. Does NOT auto-apply — returns patches for review.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and readOnlyHint=false. The description adds that it returns patches for review without auto-applying, confirming no destructive write. It clarifies the read-like behavior despite readOnlyHint=false, providing necessary 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?
Two sentences, no filler, maximum clarity. Every word adds value. Front-loaded with the core 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?
Covers purpose, behavior (non-applying), and return format (unified diffs). Lacks mention of potential failure modes or prerequisites (e.g., git repository status), but sufficient for most uses.
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 already describes the single parameter (projectPath) with clear documentation. Description adds no additional parameter details. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates code patches for all open issues in the ledger. The verb 'generate' and resource 'code patches' combined with 'all open issues' make the action unambiguous. It distinguishes itself from the sibling 'fix_issue' by implying batch processing.
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 says it does NOT auto-apply, clarifying when to use (for review-first workflow). It does not mention alternatives like 'fix_issue' but provides clear context on output expectations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_issueAIdempotent
Apply a proposed fix for a specific issue. Only fixes backend code — never touches frontend files.
| Name | Required | Description | Default |
|---|---|---|---|
| issueId | Yes | The issue ID to fix (e.g., CTR-001) | |
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds the behavioral constraint that it only touches backend files, which is valuable. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the purpose and key constraint. No unnecessary words, highly efficient.
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 two parameters and no output schema, the description is adequate but lacks details on the source of the 'proposed fix' or how it is applied. More context about the fix application process would improve completeness.
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%, and the description does not add any extra meaning beyond the schema's parameter descriptions. It meets the baseline for high coverage but provides no additional parameter context.
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 'Apply a proposed fix' and resource 'issue', and explicitly restricts to 'backend code — never touches frontend files', distinguishing it from sibling tools like fix_all_issues and audit-only tools.
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 clearly states that the tool only fixes backend code, providing a usage constraint. However, it does not explicitly tell when to use it versus alternatives, such as when a proposed fix is available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_docsARead-onlyIdempotent
Get the auto-generated living API documentation for the project. Returns the full route map with request/response types, auth requirements, and frontend consumers.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read. The description adds that the docs are 'auto-generated' and 'living', implying they reflect current state, but does not disclose any additional behaviors like caching, response size, or authorization nuances. With annotations covering safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. First sentence states the primary purpose, second enumerates contents. Efficient and 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 tool's simplicity (one required parameter, no output schema, annotations covering safety), the description sufficiently informs about what is returned. However, it does not mention any prerequisites (e.g., project must be built or accessible) or possible limitations. For a read-only documentation tool, it is nearly complete.
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 only parameter 'projectPath' has schema description 'Absolute path to the project root directory'. The tool description does not add any further meaning or constraints beyond that. Since schema coverage is 100%, baseline of 3 is justified—the schema already documents it adequately.
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?
Description clearly states 'Get the auto-generated living API documentation' and enumerates specific contents (route map, request/response types, auth requirements, frontend consumers). It is a specific verb+resource, and distinct from siblings like scan_routes which likely perform different route-related actions.
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?
No explicit when-to-use or when-not-to-use guidance. It does not mention alternatives (e.g., scan_routes) or prerequisites. The description implies using it to obtain documentation, but lacks context for selecting this over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contextCRead-onlyIdempotent
Get the current project understanding.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds no additional behavioral context (e.g., what 'project understanding' comprises, side effects, or dependencies). It meets the baseline with annotations but does not enhance transparency.
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 concise (5 words), which is efficient. However, it sacrifices clarity and completeness. It earns a 4 for being front-loaded and non-redundant, but could benefit from slightly more detail.
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 absence of an output schema, the description should indicate what the tool returns. With numerous siblings, the tool's role remains unclear. The single-line description is insufficient for the complexity of the tool's context.
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% for the single parameter (projectPath). The description does not add further meaning, but the schema already provides clear semantics. A score of 3 is appropriate given 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 'Get the current project understanding' uses a generic verb and vague resource. It does not clearly distinguish from siblings like get_ledger, init_context, or update_context, leaving the tool's specific role ambiguous.
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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or conditions that would help an agent decide to invoke get_context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ledgerARead-onlyIdempotent
Get the issue ledger — tracks every issue from discovery through fix. Filter by status, severity, or category.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter criteria for ledger entries | |
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds context that the ledger tracks the full lifecycle of issues, which is useful but does not significantly expand 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. First sentence states purpose, second sentence specifies filtering capabilities.
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 parameter structure and absence of output schema, the description is fairly complete. It could mention the required projectPath parameter, but the schema already indicates 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?
Schema coverage is 100%, so baseline 3. Description mentions filtering by status, severity, or category, which aligns with the filter object properties, but does not add new details beyond 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?
Description clearly states the tool retrieves the issue ledger, tracking issues from discovery through fix. This distinguishes it from siblings that perform actions like fixing or auditing.
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?
Description implies usage for viewing and filtering issues, but does not explicitly state when to use this tool versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_patternsBRead-onlyIdempotent
Get common patterns across projects. Shows the most frequently encountered issues for a given framework. Data is stored locally only — never sent externally.
| Name | Required | Description | Default |
|---|---|---|---|
| framework | No | Framework to filter by (e.g., "nextjs", "express", or "all") | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds a privacy guarantee (local storage, no external send), which is useful but does not detail response format, error handling, or performance traits. With annotations covering safety, the description contributes moderate value.
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 long, front-loads the purpose, and adds a privacy note concisely. No unnecessary fluff, though it could briefly mention the nature of returned data.
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 query tool with one optional parameter and no output schema, the description is minimally adequate. It explains the core function and a safety trait, but omits details on return format, default behavior when framework is 'all', and what counts as a 'pattern'. Annotations fill part of the gap.
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 has 100% description coverage, so the baseline is 3. The description does not add further meaning to the 'framework' parameter beyond what the schema already provides.
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 retrieves common patterns across projects, specifically frequently encountered issues for a given framework. This verb+resource combination distinguishes it from sibling tools like fix_issue or audit tools.
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 does not provide guidance on when to use this tool versus alternatives. It lacks when-to-use or when-not-to-use context, and does not mention related tools for similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init_contextARead-onlyIdempotent
Analyze a project for the first time to understand what it does. Scans routes, package.json, database schema, and README to build a project understanding. Run this before any diagnosis.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
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 valuable context about what it scans (routes, package.json, database schema, README) and that it builds project understanding. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two sentences with zero wasted words. It front-loads the purpose and immediately specifies what it scans and when to use it.
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 tool with 1 parameter, no output schema, and good annotations, the description covers the purpose and inputs but does not describe the output format or the result of running it. Since it builds a 'project understanding', stating what is returned (e.g., a context object) would improve completeness.
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 already provides complete coverage (100%) for the single parameter projectPath, describing it as 'Absolute path to the project root directory'. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Analyze' and the resource 'project', and specifies the scope 'for the first time'. It distinguishes from sibling tools by emphasizing its role as an initial analysis, unlike other context tools like get_context or update_context.
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 instructs to run this before any diagnosis, providing clear context for when to use. However, it does not mention when not to use or name alternatives, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
live_testARead-only
Run live HTTP tests against discovered API endpoints. SAFETY: Only GET endpoints are tested. DELETE is never called. POST/PUT/PATCH are skipped (no safe payload generation). Only localhost URLs are accepted.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | If true, show what would be tested without making HTTP calls | |
| baseUrl | Yes | Base URL of the running server (e.g., "http://localhost:3000") | |
| timeout | No | Per-request timeout in milliseconds (default: 5000) | |
| includeAuth | No | Whether to test endpoints that require authentication | |
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, and the description adds crucial safety details: only GET, no destructive methods, localhost-only. This provides full behavioral 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver purpose and all key constraints without waste. First sentence is immediately informative.
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?
Covers safety and usage comprehensively for a testing tool with 5 parameters and no output schema. Could mention expected output format, but not critical given the simple read-only nature.
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 has 100% description coverage for all 5 parameters, so the description does not need to add detail. It does not elaborate further, but the schema already handles parameter semantics adequately.
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?
Description clearly states 'Run live HTTP tests against discovered API endpoints.' This is a specific verb+resource combination that distinguishes it from sibling tools like audit tools or get_ledger.
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?
Explicitly specifies only GET endpoints are tested, DELETE/POST/PUT/PATCH are skipped, and only localhost URLs are accepted. This clearly defines when and how to use the tool, with safety constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
probe_error_handlingARead-onlyIdempotent
Error response analysis. Probes with 404s, malformed input, long URLs, wrong content types, and SQL injection patterns to detect stack trace leakage, framework disclosure, database error exposure, and debug mode. No source code needed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to audit (e.g., https://example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate safe, read-only, idempotent behavior. The description adds that the tool sends various probe payloads and detects specific exposure types, which is valuable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first packs the core purpose and methodology, the second is a helpful note. No wasted words, 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?
While the description covers inputs and detection targets, it lacks information about the output format, result structure, or execution behavior (e.g., sequential vs parallel probes). Given no output schema, this gap reduces completeness.
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%, and the schema already describes the 'url' parameter. The description does not add new details about the parameter (e.g., format or constraints), so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Error response analysis' and lists specific probe types (404s, malformed input, etc.) and detections (stack trace leakage, framework disclosure, etc.), making the tool's purpose very clear and distinguishing it from siblings like 'audit_errors' which likely focus on existing error logs.
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 mentions 'No source code needed,' implying a use case when source is unavailable, but doesn't explicitly contrast with sibling tools or state when not to use this tool. Guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_apiARead-onlyIdempotent
Query the API graph with natural language. Builds a graph of routes, models, frontend components, and middleware, then queries it. Examples: "unprotected routes", "routes that write to users", "unused models".
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language query (e.g., "unprotected routes", "routes that write to users") | |
| rebuild | No | Force rebuild the API graph (default: use cache) | |
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating safe reads. The description adds that it builds a graph and queries it, but does not disclose details like caching behavior or error handling. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences plus examples, front-loading the main action. One could argue it could include a brief note on when to prefer over siblings, but it is not wasteful.
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?
Without an output schema, the description does not explain the return format (e.g., list of routes, JSON). Given complexity and sibling context, this is a minor gap. The description is functional but not fully complete.
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% and the description does not add significant meaning beyond schema. The examples illustrate valid queries but the parameter descriptions in the schema are already clear. Baseline score 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 queries an API graph with natural language, specifies that it builds a graph of routes, models, frontend components, and middleware, and provides concrete examples. This distinguishes it from siblings like scan_routes or audit_auth_flow which are more specific.
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 implies usage for ad-hoc queries but lacks explicit when-to-use guidance compared to siblings. It does not mention when not to use it or provide alternatives, leaving the agent to infer from examples and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_diagnosisBRead-onlyIdempotent
Run a full backend diagnosis — scans routes, checks contracts, audits errors, env vars, security, and performance. Generates documentation and updates the issue ledger. This is the main entry point.
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | Focus area for the diagnosis (default: all) | all |
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description claims to 'update the issue ledger' and 'generate documentation', which suggest write side effects. However, annotations declare readOnlyHint=true and destructiveHint=false, creating a direct contradiction. The description does not resolve this inconsistency.
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?
Three sentences with no filler: first sentence lists activities, second mentions outputs, third clarifies role. Every sentence adds value.
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 lacks details about the output format or what the 'documentation' and 'issue ledger' entail. The contradiction with annotations undermines trust. Given the complexity (many siblings, no output schema), more behavioral context is needed.
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?
Both parameters are documented in the schema with descriptions. The description adds context by listing some focus areas but does not fully cover the enum values. With 100% schema coverage, the baseline is 3.
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 'Run a full backend diagnosis' and lists specific activities (routes, contracts, errors, etc.). It positions itself as 'the main entry point', distinguishing it from sibling tools that focus on individual areas.
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 identifies this as 'the main entry point', implying it should be used first for a comprehensive overview. However, it does not explicitly state when to use more specific sibling tools instead or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_safety_checkARead-onlyIdempotent
Run safety validation on a project path. Validates the path is safe to scan, ensures .backend-doctor/ is in .gitignore, and prunes old reports. Call this before any diagnosis to verify the project is safe to analyze.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description claims it 'ensures .backend-doctor/ is in .gitignore', which implies modifying the .gitignore file, a side effect. However, annotations indicate readOnlyHint=true and destructiveHint=false, which contradicts a write operation. This is a serious inconsistency.
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?
Three sentences, front-loaded with main purpose, each sentence adds necessary detail. No 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?
Covers the tool's purpose, steps, and usage context. Could elaborate on what 'safety' means or the return value, but given no output schema, it's fairly complete.
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 description adds no extra meaning beyond the schema's parameter description. Baseline 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?
Description clearly states it runs safety validation on a project path, including specific actions (validate, ensure .gitignore, prune old reports). It distinguishes itself from sibling diagnosis tools by explicitly positioning itself as a prerequisite to diagnosis.
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?
Explicitly says 'Call this before any diagnosis', giving clear usage context. Does not explicitly mention when not to use, but the purpose is specific enough that the agent can infer appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_dependenciesARead-onlyIdempotent
Scan project dependencies for known vulnerabilities, deprecated packages, and security issues. Checks package.json against a built-in vulnerability database and optionally runs npm audit. No network required for basic checks.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
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 valuable context: uses a built-in vulnerability database, optionally runs npm audit, and no network required for basic checks. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero wasted words. First sentence states purpose, second adds key details. Concise and well-structured.
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 a simple one-parameter tool with thorough annotations, the description provides enough context for an agent to understand its behavior, constraints (no network required), and scope (project dependencies). Output format is not mentioned but is implied by the scan nature.
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 single parameter 'projectPath' is fully described in the schema (absolute path to project root). The description does not add additional parameter-specific meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans project dependencies for vulnerabilities, deprecated packages, and security issues. It specifies the resource (package.json) and verb (scan), and is distinct from siblings like 'audit_security' which may cover broader security concerns.
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 implies use when checking dependency security, and mentions no network required for basic checks. However, it does not explicitly state when to use this over alternative tools (e.g., audit_security, run_safety_check) 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.
scan_public_apiARead-onlyIdempotent
API surface discovery from frontend JavaScript. Crawls HTML for script tags, extracts API endpoint URLs from JS bundles, probes each endpoint to map auth requirements and response behavior. No source code needed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to audit (e.g., https://example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=true, etc., establishing it as a safe, non-destructive operation. The description adds behavioral detail: it extracts and probes endpoints to map auth requirements, implying network requests. This goes beyond what annotations alone convey, making the behavior 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, front-loading the core purpose in the first sentence. Each sentence adds necessary detail without redundancy. It is efficient and succinct, earning its length.
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 tool with one parameter and no output schema, the description provides a thorough overview of the process and outcome. It covers what the tool does, how it works, and a key constraint (no source code). Minor gap: the output format is not described, but the tool's purpose is clear enough for an AI agent to understand its use.
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 single parameter 'url' has a schema description: 'The URL to audit (e.g., https://example.com).' The tool description enhances this by explaining how the URL is used (crawling HTML, extracting JS). This adds semantic value beyond the schema, clarifying the input's role.
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 explicitly states the tool's function: 'API surface discovery from frontend JavaScript.' It details the process of crawling HTML for script tags, extracting API URLs from JS bundles, and probing endpoints. This clearly distinguishes it from sibling tools, none of which focus on frontend JS scanning.
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 implies usage context by noting 'No source code needed,' indicating it works purely from the frontend. However, it does not explicitly state when to avoid this tool or compare it to alternative audit tools (e.g., audit_security). The context is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_routesARead-onlyIdempotent
Scan and parse all API routes in a Next.js project. Returns the full API surface: endpoints, HTTP methods, parameters, and file locations.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds that it returns specific details (endpoints, methods, etc.) but no additional behavioral traits like performance impact or project requirements. Adequate but not extra value.
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 succinct sentences with no wasted words. Immediately conveys purpose and output.
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 tool with one simple input parameter and no output schema, the description adequately lists what is returned. Provides enough context for an agent to understand the tool's purpose and 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% with a clear description for projectPath. The tool description does not add any extra semantics or context beyond the schema, so baseline 3.
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?
Description clearly specifies the verb (Scan and parse), resource (all API routes), and context (Next.js project). It lists what is returned, distinguishing it from sibling audit tools that focus on other aspects like security or performance.
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?
No explicit when-to-use or when-not-to-use guidance. The context is implied by the description, but alternatives are not mentioned. Given the many sibling tools, guidance would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_tech_debtARead-onlyIdempotent
Calculate a technical debt score (0–100) from all audit findings. Estimates remediation effort in hours per category, assigns a letter grade (A+ to F), tracks score over time, and generates prioritized recommendations. Run after run_diagnosis for best results.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context beyond annotations: estimates remediation effort, assigns grade, tracks over time, generates recommendations. No contradiction with annotations (readOnlyHint, idempotentHint are consistent).
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 concise sentences: first covers purpose and outputs, second gives usage recommendation. No wasted words.
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?
Lacks output schema and description doesn't clarify return format for score, recommendations, or time tracking. However, it does list key outputs and usage context. Adequate but could be more complete.
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% with clear description for 'projectPath'. Description doesn't add extra meaning beyond what's in schema, meeting baseline expectation.
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?
Clear verb 'calculate' and resource 'technical debt score' with specific outputs (remediation hours, letter grade). Distinguishes from siblings by being a scoring tool that uses audit findings, and explicitly mentions running after run_diagnosis.
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?
Explicitly states 'Run after run_diagnosis for best results', providing clear when-to-use guidance. Could be improved by mentioning when not to use, but this is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trace_typesARead-onlyIdempotent
Trace types across application layers: frontend → route handler → service → repository → database. Finds type mismatches between layers, identifies routes accessing DB directly without service layer, and maps the full type chain for each endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly, idempotent, non-destructive. Description adds behavioral context: traces types, finds mismatches, maps chains. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with clear enumeration of functions. It is concise but could be structured as bullet points for easier parsing.
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 tool with one parameter, annotations, and no output schema, the description provides a complete picture of the tool's purpose and outputs.
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 parameter. Description adds context about the tool's operation but does not further clarify the parameter beyond 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 clearly states it traces types across application layers, identifies mismatches, and maps type chains. It distinguishes from sibling tools like audit_* by focusing on type tracing.
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 implies usage for debugging type mismatches and enforcing layered architecture. It does not explicitly state when not to use or mention alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contextBIdempotent
Update the project understanding with user-provided corrections or additions.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | Updates to apply to the project context | |
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate write operation (readOnlyHint false), idempotency (idempotentHint true), and non-destructive nature (destructiveHint false). The description adds no further behavioral details, such as whether updates are merged or overwritten, or any 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It delivers the core purpose directly and efficiently.
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 mutation tool without an output schema, the description does not explain what the agent can expect after invoking it (e.g., updated context representation, success indicator, or side effects). This leaves the agent uncertain about the outcome.
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%, with descriptions for both parameters. The description adds minimal extra meaning beyond the schema, essentially restating the purpose. 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?
Description clearly indicates the verb 'Update' and the resource 'project understanding' (context). It implicitly distinguishes from sibling tools like get_context (read) and init_context (initialize), though it could be more specific about what 'project understanding' includes.
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 implies usage when the user has corrections or additions to the project understanding. However, it lacks explicit guidance on when not to use or alternatives, leaving the agent to infer context from sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visualize_middlewareARead-onlyIdempotent
Visualize the middleware chain for all routes. Detects global middleware (app.use), Next.js middleware, and inline middleware. Shows execution order, identifies ordering issues (CORS before auth), and flags unprotected mutation endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating a safe read operation. The description adds value by disclosing that the tool 'detects... ordering issues' and 'flags unprotected mutation endpoints,' which are behavioral traits 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 description is two sentences with no redundancy. The first sentence states the primary purpose, and the second lists key detections. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (visualizing middleware chain and detecting issues), the description covers the main inputs and behaviors. However, it lacks details about the output format (e.g., graph, list), which is important since no output schema is provided.
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?
With 100% schema description coverage, the parameter 'projectPath' is already fully documented in the schema. The description does not add any additional meaning or constraints 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('visualize') and resource ('middleware chain for all routes'), and distinguishes from sibling audit tools by detailing what it detects: global middleware, Next.js middleware, inline middleware, ordering issues, and unprotected endpoints.
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 implies the tool's use for inspecting middleware chains and detecting issues, but does not explicitly state when to use it versus alternative audit tools like audit_security or audit_auth_flow. No exclusionary guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_diagnosisARead-onlyIdempotent
Run an incremental diagnosis — compares current state against the last saved report. Highlights new issues, fixed issues, and health score changes. Runs a full analysis but highlights what changed — new issues, fixed issues, and health score delta.
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | Focus area for the diagnosis (default: all) | all |
| projectPath | Yes | Absolute path to the project root directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true. Description adds behavioral context: it compares against saved reports, implying state persistence, which is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with clear front-loaded purpose. Slight repetition of highlights but overall efficient.
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 simple parameters and good annotations, the description is fairly complete. It explains incremental nature and return value highlights, though lacks details on 'last saved report' prerequisites.
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 baseline 3. The description does not add meaning beyond schema for parameters 'projectPath' and 'focus'.
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 it runs an incremental diagnosis comparing current state against the last saved report, highlighting changes. This distinguishes it from siblings like 'run_diagnosis' which likely performs a full analysis.
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 implies usage for incremental checks but provides no explicit guidance on when to use vs alternatives like 'run_diagnosis'. Exclusions or prerequisites are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, but some overlap exists (e.g., multiple audit tools for security, performance, etc.). Descriptions help differentiate, but an agent might still confuse similar-sounding tools like run_safety_check and run_diagnosis.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_ledger, fix_issue, scan_routes). No mixing of conventions, making it easy for an agent to predict tool names.
With 41 tools, the server feels overloaded despite covering a broad domain. While each tool has a rationale, the count exceeds typical well-scoped ranges (3-15), risking agent confusion and slow selection.
The tool set comprehensively covers backend auditing, diagnosis, testing, and contract checking. Minor gaps exist (e.g., no tool for monitoring or deployment audit), but core workflows are well-supported.
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
Monitor MCP servers, API contracts and AI outputs for schema drift. Alerts on breaking changes.
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
MCP server for AI access to Swagger by SmartBear.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Related MCP Servers
- AlicenseBqualityAmaintenanceLocal-first production-readiness MCP server for AI-built apps. It runs read-only checks, produces an evidence-based readiness score, and guides fixes before launch.95Apache 2.0
- FlicenseNot gradedqualityDmaintenanceMCP server that provides code validation rules and analysis for various stacks/frameworks, enabling automated code reviews and reporting directly from VS Code and other editors.
- AlicenseNot gradedqualityCmaintenanceCross-stack MCP server that scans frontend and backend code together, detects mismatches like phantom calls, dead endpoints, and field drift, and provides a full-stack health audit.121MIT
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/rish-e/BackendMax'
If you have feedback or need assistance with the MCP directory API, please join our Discord server