CALM (Council of Algorithms) as an MCP server — three-voice craft-discipline tools (IveStandard scan + critique) for Claude-running agents.
calm-mcp exposes 2 tools with clear, domain-specific descriptions (194 - 250 chars each, within baseline 34 - 392 range). Both tools have documented return types and parameter descriptions. However, input schemas lack formal JSON Schema type declarations visible in the code, parameters are inferred from Python type hints only. The calm_critique tool is a stub returning templated responses, limiting practical utility. Error handling is minimal; no recovery guidance or validation feedback. Naming is clear (verb_noun pattern) but generic enough that tool selection is straightforward.
Run CALM's three-voice critique on a block of text. v1 returns a templated response that names the requested voice and walks the caller through the doctrine that voice operates under. v1.1 will wire this to the Anthropic API (caller's own API key, no central compute) for the full Council critique.
Run CALM's IveStandard mechanical scan on a block of text. Flags vague jargon nouns, filler phrases, passive voice, and adjective stacks. Returns a 0-5 score and a list of issues with line/column/suggestion. Free: no LLM call, runs in under 10ms per page.
Input schemas not formally declared in JSON Schema format. Parameters rely on Python type hints (str, bool, Literal) without explicit JSON Schema type/description objects visible in tool registration.
calm_critique is a stub returning templated responses ('Stub critique. Wire to Anthropic API in v1.1'). Tool is non-functional for its stated purpose, reducing practical value for agents.
No error handling or recovery guidance. If scan() fails or critique() receives invalid voice, no actionable error message guides the agent to retry or correct input.
calm_ive_scan description does not document output schema structure. Docstring mentions 'Returns a 0-5 score and a list of issues' but does not specify Issue field names (line, col, type, severity, snippet, suggestion).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
No input validation. calm_ive_scan accepts unbounded text length; calm_critique accepts any string for voice parameter despite enum constraint in code. No validation error messages.