Heuristic checker for CLAUDE.md-style autonomous-agent constitution files — 10 checks against operational-guardrail patterns (authority order, spend limit, injection defense, secrets handling, escalation, ledger discipline, self-modification guard, honest reporting, session ritual, referenced-state-files). Pattern-matching, not comprehension.
Single tool 'lint_constitution' has a well-written description (186 chars, within 10-1024 baseline) explaining what it does and when to use it. Input schema is present with proper JSON Schema structure and a single required parameter 'content' with type string and description. However, the tool name lacks a clear action verb (lint is weak; 'check_constitution' or 'validate_constitution' would be stronger). No output schema is documented, the response structure is not visible in the source, making it impossible for LLMs to plan downstream actions. Error handling is not evident in the provided code. The tool is READ_ONLY (good security posture) but lacks tool annotations (readOnlyHint) to declare this formally. Overall, the tool is functional but incomplete by production standards.
Heuristic checker for CLAUDE.md-style autonomous-agent constitution files — 10 checks against operational-guardrail patterns (authority order, spend limit, injection defense, secrets handling, escalation, ledger discipline, self-modification guard, honest reporting, session ritual, referenced-state-files). Pattern-matching, not comprehension.
No output schema documented. LLMs cannot infer response structure (fields, types, pagination). Prevents downstream tool chaining and forces LLMs to guess at result format.
Tool name 'lint_constitution' lacks a strong action verb. 'lint' is domain-specific jargon; 'check_constitution' or 'validate_constitution' would be clearer for LLM intent inference.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) declared. Tool is READ_ONLY but this is not formally signaled to the MCP client.
Error handling strategy not visible. No guidance on what happens if input is malformed, file is empty, or parsing fails. LLMs need recovery hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Single parameter 'content' accepts unbounded markdown text. No length limit, encoding validation, or size constraints documented. Could cause memory issues or timeouts on very large files.