Elimination-ledger MCP server — remembers what agents ruled out, not just what's true
elim-mcp demonstrates solid tool design with clear naming (verb_noun pattern), comprehensive parameter schemas using Zod, and well-structured descriptions. All 4 tools have explicit registrations with inputSchema definitions. Descriptions are domain-specific and actionable (avg ~150 chars). However, output schemas are not formally documented, responses are formatted as text rather than structured objects, limiting downstream tool chaining. Error handling returns text messages but lacks categorization (retryable vs fatal). No tool annotations (readOnlyHint/destructiveHint) despite clear read/write semantics.
Load the active/recent ledger thread for a chat, branch, or project. Use this when starting a new session or switching tools to pick up prior investigation state.
Search the elimination ledger by keyword (FTS5). Call this BEFORE proposing a fix or re-investigating a theory — it surfaces what was already ruled out or solved for a query.
Write a ledger record: a ruled-out theory, confirmed solution, decision, or note. Chain related steps with follows_from so trace() can reconstruct the investigation. Call this whenever you rule something out or confirm a cause.
Walk the follows_from chain backward from a record and return the full investigation history in order (oldest → newest). Pass the id of the latest record in a chain.
Output schemas not formally documented. Tools return formatted text strings rather than structured objects with typed fields. Downstream tools cannot reliably extract record IDs, timestamps, or metadata for chaining.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). 'remember' is clearly destructive (writes to ledger) and 'recall'/'get_current'/'trace' are read-only, but this is not declared in the schema.
Error handling returns plain text messages without categorization. Errors do not indicate whether they are retryable, user-fixable, or fatal, limiting agent recovery strategies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
'get_current' naming is vague. Does it return the current record, the current session state, or the most recent N records? Verb_noun pattern suggests 'get_ledger_current' or 'list_current_records' would be clearer.
No pagination support. 'recall' and 'get_current' return all matching records without limit or offset. Large ledgers could produce unbounded result sets, exhausting context windows.