MCP (Model Context Protocol) server for browsing a local Signal Desktop database. Exposes read-only query functionality via stdio transport.
Five read-only tools with reasonable naming (verb_noun pattern) and moderate descriptions. All tools have input schemas with typed parameters and descriptions. However, descriptions are brief (avg ~80 chars, below the 194-char baseline), lack WHEN-to-use guidance, and omit error recovery hints. Output schemas are not documented. No tool annotations (readOnlyHint, idempotentHint). Parameter descriptions are functional but sparse. Error handling is absent from tool definitions. The server is competent but falls short of production-grade polish.
Get recent Signal call history.
List or search Signal conversations. Without a query, lists recent conversations. With a query, searches by name/phone/ID.
Retrieve a single Signal message by its ID, including full body text.
Search and filter Signal messages. Supports full-text search, conversation filter, unread/unanswered filters, date ranges (ISO or relative like 5h/3d), and direction filters.
Look up phone numbers by contact name.
Tool descriptions lack WHEN-to-use context and error recovery guidance. Descriptions are 50 - 80 chars; baseline is 194 chars. LLMs cannot determine when to select get_calls vs get_messages without explicit differentiation.
Output schemas are not documented. Tool definitions state what inputs are accepted but do not specify what fields are returned. LLMs cannot plan downstream calls or extract required data without knowing response structure.
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only and safe to retry, but this is not declared in the schema. Agents cannot infer safety properties without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Parameter descriptions are minimal. E.g., 'limit' lacks min/max bounds; 'search' does not explain the OR/AND/prefix syntax clearly enough for LLM to construct valid queries without trial-and-error.
No error handling guidance in tool definitions. If a conversation is not found or a search returns no results, the tool definition does not explain what the LLM should do next (retry, ask user, try alternative search).