Safe allowlisted MCP tool gateway for AI agents. Minimal, non-offensive runtime with explicit allowlists, rate limiting, timeout protection, and audit logging.
Sentinel MCP provides clear, safety-focused tool definitions with explicit allowlisting and rate limiting. All 7 tools have descriptions (avg ~80 chars) and input schemas with type definitions. However, schemas lack depth: no enums for constrained inputs (e.g., record_type, HTTP method), minimal parameter descriptions, and no documented output schemas. Error handling is present but generic. Tool names are action-verb based (get_, run_, echo_) and follow verb_noun convention. The server prioritizes security (input sanitization, allowlists, audit logging) over LLM-friendly composition. Missing: pagination guidance, output field documentation, and recovery hints in error messages.
Echo a short message. Useful for verifying the MCP connection.
Return the current UTC timestamp from the server.
Check current rate limit status. Returns remaining calls in the current minute.
Hash text with a safe digest algorithm (no network, no shell).
HTTP/HTTPS request. Allowlisted targets only. No shell injection, no arbitrary headers.
DNS lookup (dig). Query allowlisted targets only.
WHOIS lookup. Query allowlisted targets only.
No output schemas documented. Tools return unstructured text (stdout/stderr) without field definitions. LLMs cannot plan downstream calls or extract structured data reliably.
Constrained inputs lack enums. 'record_type' (A, AAAA, MX, TXT, NS, SOA, CNAME) and 'method' (GET, POST, HEAD, PUT, DELETE, PATCH) accept free-form strings instead of enum constraints. LLMs may hallucinate invalid values.
Parameter descriptions are minimal (10-30 chars). 'Optional HTTP headers as key-value pairs. Keys and values must be safe strings.' lacks format guidance (JSON object structure, max size, allowed header names). LLMs cannot reliably construct valid requests.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | <=2025-11-25 | v2 |
Error messages are generic. Code shows 'PermissionError' and 'ValueError' but no guidance on recovery. E.g., 'Target not allowlisted' should suggest 'Update ALLOWED_TARGETS environment variable' or 'Contact admin to allowlist this target.'
No idempotency guarantees documented. Tools like run_curl with POST/PUT/PATCH could have side effects on retry. No mention of idempotent hints or confirmation patterns for destructive operations.