Policy, approval, redaction, timeout, and audit middleware for MCP server tools.
This is a policy/middleware framework, not a traditional MCP server with user-facing tools. The three example tools (run_command, read_file, fetch_url) are minimal reference implementations. All three have extremely brief descriptions (10-15 chars), no visible input parameter descriptions in schemas, and no documented output schemas. Tool definitions appear inferred from file paths rather than explicitly registered with full schemas. The framework itself is well-engineered for policy enforcement, but the example tools lack production-grade documentation.
Fetch content from URLs with domain-based access control
Read file contents with path-based access control
Execute shell commands with policy enforcement
Tool descriptions are critically short (10-15 chars). 'Execute shell commands with policy enforcement' and 'Read file contents with path-based access control' lack context on WHEN to use each tool, what it returns, or prerequisites. Rubric baseline: 194 chars average, 10-1024 char range required.
Input parameter descriptions are missing. Schema shows 'command' and 'path' and 'url' as strings but provides no guidance on format, constraints, or examples. Rubric requires: 'Every parameter needs a description explaining what it controls.' 100% of A+ tools have param descriptions.
Output schemas are not documented. LLMs cannot plan downstream calls or extract data without knowing what fields to expect. Rubric: '100% of A+ tools have documented return types.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | 2025-06-18+ | v2 |
run_command is destructive but lacks confirmation/dry-run pattern. Rubric: 'Irreversible operations (delete, send, publish) should support a dry-run or confirmation step.' No evidence of pre-execution approval flow in example.
No error handling guidance visible. Tools should return actionable errors (e.g. 'File not found. Check path syntax: /absolute/path or ~/relative/path') not raw exceptions. Rubric: 'Error responses must tell the LLM what to do next.'