Public engineering companion to MESS (mess.fyi) — setup docs, served hooks, disclosure mirror, REST client for the MESS ledger API.
Four tools with complete schemas and descriptions. Naming follows verb_noun pattern (list, search, log, update). Descriptions are clear and action-oriented (avg ~100 chars). All parameters have types and descriptions. However, output schemas are not documented in the MCP tool definitions, only visible in the TypeScript client types. Error handling is minimal; no recovery guidance or actionable error messages. Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk profiles. No pagination support despite listAccounts potentially returning large ledgers.
The whole ledger for this workspace, with its health metadata.
Log an account. Idempotent on name + instance_name: re-logging the same account updates the row instead of duplicating it (created: false), and project labels merge into the existing list.
Find accounts — the orientation call when picking a project back up.
Correct a row by id. null on a nullable field CLEARS it — a wrong value is worse than a blank; clearing shows the honest gap. project ADDs labels, project_remove takes labels away; only null clears the whole list.
Output schemas not documented in MCP tool definitions. Only visible in TypeScript client types (Account, SearchResult, AccountList, LogResult). LLMs cannot infer response structure from tool definitions alone.
Missing tool annotations. logAccount and updateAccount are WRITE operations; listAccounts and searchAccounts are READ_ONLY. No readOnlyHint or destructiveHint in tool definitions to signal this to agents.
No pagination support. listAccounts returns entire ledger with no limit, offset, or cursor parameters. Large workspaces will blow context windows. searchAccounts also lacks pagination.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. No documented error responses, no actionable messages, no categorization (retryable vs user-fixable vs fatal). Agents cannot self-correct on failures.
logAccount idempotency documented in description but not in tool annotation. updateAccount has complex semantics (null clears, project adds/removes) that need explicit documentation in schema or annotation.