Hosted receiver for deos-mcpd — append-only MCP governance audit trail over HTTPS.
Server exposes 4 tools with HTTP transport and clear audit-trail semantics. All tools have descriptions (10 - 200 chars) and input schemas with typed parameters. However, schemas lack depth: parameter descriptions are minimal or missing (e.g., 'limit' in list_sessions has no range guidance), output schemas are undocumented, and error handling provides no recovery guidance. Tool naming is verb-forward (health, ingest_records, list_sessions, list_records) and unambiguous. No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles. Composition is sound, each tool has one responsibility, but output chaining is weak (e.g., list_sessions returns session IDs but list_records requires explicit session filter; no cursor/pagination guidance).
Health check endpoint returning 'ok' status
Ingest MCP audit records (permit, receipt, denial, approval_requested, approval_resolved) into the append-only audit trail. Accepts up to 1000 records per batch. Returns count of accepted and skipped records.
List audit records for the authenticated organization, optionally filtered by session and/or record kind. Returns full record payloads ordered by most recent timestamp.
List audit sessions for the authenticated organization, ordered by most recent activity. Returns session ID, upstream identifier, start time, last seen time, and record count per session.
Output schemas undocumented. LLMs cannot infer what fields list_sessions and list_records return, forcing guesswork about downstream tool chaining.
Parameter descriptions lack constraints. 'limit' in list_sessions (default 100, clamped 1 - 500) and list_records (default 500, clamped 1 - 2000) are described but lack min/max guidance in schema. LLMs may pass invalid values.
No tool annotations. ingest_records is destructive (WRITE risk) and list_* are read-only, but no readOnlyHint or destructiveHint metadata. Agents cannot infer safety profile.
Error handling provides no recovery guidance. ingest_records validates batch size (max 1000) and required fields but returns generic ApiError. LLMs receive no hint to retry, adjust batch size, or call a discovery tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Pagination guidance missing. list_records accepts 'limit' but no cursor/offset or next_token. Large result sets risk context window exhaustion; no guidance on how to iterate.