MCPShield exposes 13 tools across CLI and HTTP API. Most tools have descriptions (10-150 chars) and input schemas with typed parameters and enums. However, several critical gaps reduce quality: (1) CLI tools (scan, scan-url, version) lack explicit schema registration in source, tool definitions are inferred from CLI argument parsing, not explicit MCP tool registration. (2) HTTP endpoints are exposed as tools but lack output schema documentation, responses are not formally specified. (3) Auth/billing tools (signup, login, checkout, webhook) mix security-sensitive operations with insufficient error guidance. (4) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications in metadata. (5) Parameter descriptions are present but often generic (e.g., 'Output format' without explaining what each format contains). Baseline: 549 production tools average 194 chars for descriptions and 72 chars for params; MCPShield averages ~80 chars for descriptions and ~50 chars for params, below median.
Get current user profile.
Return available plans with pricing (public endpoint).
Create a Stripe Billing Portal session for the current user.
Health check endpoint.
Log in to an existing account.
Create a new account.
Create a Stripe Checkout session for the requested paid plan.
Handle incoming Stripe webhook events.
CLI tools (scan, scan-url, version) lack explicit MCP tool registration. Tool definitions are inferred from CLI argument parsing in typer/click, not registered via explicit MCP tool schemas. Per HARD SCORING RULE, inferred tools cap at 50.
No output schemas documented for any tool. HTTP endpoints return responses (ScanResponse, HealthResponse, etc. defined in schemas.py) but these are not exposed in tool definitions. LLMs cannot plan downstream calls or extract required fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Scan an MCP config JSON for security issues.
Scan a remote MCP server by URL.
Scan an MCP config file for security issues.
Scan a remote MCP server by URL.
Show mcpshield version.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications in metadata. Auth signup/login and billing checkout/webhook are WRITE operations that should be marked destructiveHint=true or idempotentHint=false to guide agent retry logic.
Passwords exposed as tool parameters in signup/login tools. Per pattern:secret-injection, credentials must never appear as parameters, use server-side secret injection. Agent traces log all parameters; secrets leak into logs and prompt history.
Error handling lacks recovery guidance. No tool description explains what to do on failure (e.g., 'If scan fails, check config format' or 'If auth fails, verify email exists'). Errors should categorize as retryable, user-fixable, or fatal.