A security gateway that puts a policy, injection-scanning, and audit layer in front of any MCP server.
Four tools with basic descriptions and minimal parameter documentation. All tools have input schemas with type definitions, but descriptions are terse (10-60 chars, well below the 194-char baseline). Parameter descriptions exist but lack actionable constraints, format guidance, or dependency hints. No output schemas documented. Error handling is absent, no recovery guidance, categorization, or actionable error messages. Security concerns: send_email accepts free-form recipient and body with no injection scanning visible in the tool definition itself (gateway claims to handle it, but tool definition does not document this). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Composition is reasonable (four distinct tools), but descriptions do not explain WHEN to use each tool or what to expect in return.
Fetch an approved web page through the security gateway.
Run a read-only SQL query through the security gateway.
Read a company file through the security gateway.
Send an email through the security gateway (egress; secrets blocked).
Descriptions are too short (10-60 chars vs. 194-char baseline). 'Read a company file through the security gateway' lacks WHEN to use it, what it returns, or prerequisites. LLMs cannot distinguish read_file from fetch_url without richer context.
No output schemas documented. Callers do not know what fields to expect (e.g., does read_file return {content: string} or {path, content, size}?). This forces LLMs to guess and breaks downstream tool chaining.
Parameter descriptions lack actionable constraints. 'path' and 'url' have no format guidance, length limits, or examples of valid values. 'sql' has no hint that it must be read-only. LLMs cannot validate inputs before calling.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
No error handling guidance. Tool definitions do not explain what errors are possible, whether they are retryable, or what the LLM should do next. A failed read_file call returns nothing actionable.
send_email accepts 'to' and 'body' as free-form strings with no validation hints. Tool description claims 'secrets blocked' but does not document the mechanism or what happens if a secret is detected. LLMs cannot reason about failure modes.