A Python-based compliance verification server that checks documents against regulatory frameworks for compliance violations
This server exposes a single tool 'verify_compliance' with significant definition quality gaps. The tool name starts with a verb (verify) which is correct, but the implementation reveals fundamental issues: (1) The input schema is present but minimal, document_payload is typed as 'dict' with only a generic description 'A dictionary containing document properties', which provides almost no guidance on what keys/values are required. (2) The description is adequate at ~130 chars but lacks critical context: it does not state when to use this tool vs alternatives, does not clarify what 'violations' means or how to interpret results, and does not explain the regulatory_framework parameter's role or impact. (3) Parameters lack proper constraints: 'regulatory_framework' defaults to 'ISO-27001' but no enum of valid frameworks is provided, LLMs will hallucinate invalid framework names. (4) Output schema is never documented: the response {'compliance_status': '...', 'violations': [...]} is inferred from code, not declared in any schema annotation. (5) Error handling is absent: the tool returns violations silently with no actionable recovery guidance if violations are detected. The implementation is a bare Python class method with no MCP server scaffolding visible, tool registration, schema declaration, and error handling are all missing or inferred from code inspection rather than explicit tool metadata.
Verifies compliance of a document payload against a specified regulatory framework, checking for violations such as missing data-at-rest encryption specification
Input schema for 'document_payload' is underspecified. Typed as 'dict' with generic description 'A dictionary containing document properties'. No required keys, no nested schema, no constraints. LLMs cannot infer what 'encryption', 'project', or other expected fields are without trial-and-error.
'regulatory_framework' parameter lacks enumeration of valid values. Default is 'ISO-27001' but the code accepts any string, LLMs will pass invalid frameworks like 'ISO-27002' or 'GDPR-v2' and fail silently or confusingly.
Output schema is not documented. The tool returns {'compliance_status': 'COMPLIANT'|'NON_COMPLIANT', 'violations': [...]}, but no schema declaration is visible in the code. LLMs must infer structure from behavior, which is fragile and error-prone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 28 | 2026-07-28+ | v2 |
Tool description lacks LLM-optimized guidance. Current: 'Verifies compliance of a document payload against a specified regulatory framework, checking for violations such as missing data-at-rest encryption specification'. Missing: (1) When to call this tool vs alternatives? (2) What does 'violations' list contain? (3) What does compliance_status='NON_COMPLIANT' mean for the user? (4) Are there prerequisites (e.g. must call another tool first)?
No error handling or recovery guidance. If violations are detected, the tool returns a list but provides no actionable next steps. What should the LLM do if compliance_status='NON_COMPLIANT'? Retry? Ask the user? Escalate? No pattern provided.
No MCP server scaffolding visible in source. The repository contains a bare Python client class and example usage script, but no evidence of MCP transport, tool registration metadata, schema definitions, or error response formatting. Tool existence and behavior are inferred from code inspection, not explicit tool manifest.