Security assessment tools for documents and questionnaires with support for stdio and Streamable HTTP transports
DocSentinel MCP server exhibits significant definition quality gaps. The source code provided is severely truncated, the critical app/mcp_server.py file is cut off after the first import statement, preventing verification of actual tool definitions, schemas, and error handling. Based on the tool metadata visible in the evaluation header, 4 of 5 tools lack input parameter descriptions in their visible schemas. Naming is verb-first (good), but descriptions are minimal (under 100 chars each, approaching the lower bound). No output schemas, no error guidance, no parameter validation rules visible. The server appears to expose sensitive operations (submit_document_assessment, assess_document) as WRITE-risk tools but with no visible confirmation, dry-run, or permission-gate patterns. Tool composition shows overlap (submit_document_assessment + assess_document both perform assessment), suggesting a potential single-responsibility violation.
Compatibility tool that waits for the submitted assessment draft.
Return enabled protocols, access mode, and exposed capabilities.
Get the current state and available report for an assessment task.
Query approved chunks in the internal security knowledge base.
Submit an approved local document for an asynchronous security assessment.
Source code truncated: app/mcp_server.py cuts off after first import. Cannot verify actual tool registration, error handling, output schemas, or response shaping.
Duplicate/overlapping tool responsibility: submit_document_assessment and assess_document both perform document assessment. Naming and purpose distinction is unclear to LLMs.
WRITE-risk tools (submit_document_assessment, assess_document) show no confirmation, dry-run, or explicit permission-gate patterns in visible metadata. Irreversible operations lack safeguards.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
Parameter descriptions missing or minimal. 'file_path', 'scenario_id', 'query', 'top_k' have trivial descriptions (10-30 chars). LLMs cannot infer constraints (format, range, enum values).
No output schemas visible. LLMs cannot plan downstream tool calls or extract required fields. 'get_assessment_status' likely returns task state and reports, but structure is undocumented.
Tool description for 'assess_document' states it 'waits for the submitted assessment draft', unclear semantics. Does it block? Return immediately? What triggers completion? Error guidance missing.
Parameter 'top_k' in query_knowledge_base has no min/max constraint visible. Unbounded integers risk LLM passing absurd values (top_k=1000000).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible. Protocol Readiness feature shows toolAnnotations=false.