An MCP server providing durable namespaced JSON state storage backed by SQLite
StatePocket provides 8 well-structured tools with complete input schemas and descriptions. Tool names follow verb_noun convention (set_value, get_value, delete_value, patch_value). All parameters have type definitions and descriptions. However, output schemas are not documented in the source code, the rubric requires explicit documentation of what fields are returned. Error handling is structured (ToolErrorException hierarchy with kind, message, retryable fields) but lacks recovery guidance in tool descriptions. Descriptions are adequate (50-150 chars) but could be more prescriptive about when to use each tool vs. alternatives. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are visible in the schema definitions.
Delete a JSON value from a namespace by key
Get a JSON value from a namespace by key
Get multiple JSON values from a namespace by key pattern
List all keys in a namespace matching an optional pattern
List all namespaces that contain stored values
Apply a JSON Patch to a stored JSON value
Query JSON values from a namespace using JSON Pointer paths and optional filtering
Set a JSON value in a namespace with optional TTL, compare-and-set, and if-absent semantics
Output schemas not documented. Tool descriptions do not specify what fields are returned (e.g., does get_value return {value, revision, timestamp}?). LLMs cannot plan downstream tool calls without knowing response structure.
Tool descriptions lack recovery guidance. Error cases (e.g., 'key not found', 'revision conflict') are not mentioned in tool descriptions. LLMs cannot infer when to retry, what to try next, or whether the error is user-fixable.
No tool annotations visible. Input schemas do not include readOnlyHint, destructiveHint, or idempotentHint. Clients cannot determine which tools are safe to retry or which modify state without parsing the tool name.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2025-06-18+ | v2 |
Descriptions for discovery tools (list_namespaces, list_keys) are minimal. They do not explain when to call them, what structure they reveal, or how they enable downstream operations.
No pagination or result-limiting guidance. get_values and query_values accept glob patterns that could match thousands of keys. Descriptions do not mention limits, pagination, or how to handle large result sets.