MCP server for Limitless API - Connect your Pendant data to Claude and other LLMs
Server has 8 tools with mostly complete schemas and descriptions, but significant gaps reduce quality. All tools have descriptions (10-50 chars baseline met), and input schemas are visible with type definitions. However, parameter descriptions are sparse or missing for many fields (e.g., 'limit' in list_lifelogs has null description). Output schemas are not documented, LLMs cannot predict response structure. Error handling exists but lacks recovery guidance. Tool naming is clear and verb-prefixed, but composition issues exist: list_lifelogs, get_paged_lifelogs, and get_lifelog overlap significantly, forcing LLMs to reason about which to call. manage_cache is a utility tool that doesn't fit the domain. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications in metadata.
Topic extraction from lifelogs
Get a specific lifelog by ID with optional field selection
Get only metadata for a lifelog
Pagination support for lifelogs with selective field retrieval
List lifelogs with enhanced filtering options and selective field retrieval
Tool to manage cache settings and data
Single lifelog summarization tool
Output schemas not documented. LLMs cannot predict response structure for any tool. Responses are returned as {content: [{type: 'text', text: '...'}]} but downstream tool chaining requirements are unclear.
Parameter descriptions incomplete or null. 'limit' in list_lifelogs has null description. 'fields' array lacks guidance on valid field names. LLMs cannot infer constraints or valid values.
Tool composition overlap. list_lifelogs, get_paged_lifelogs, and get_lifelog all retrieve lifelogs but with different pagination strategies. LLMs must reason about which to call, wasting tokens and inviting wrong selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Multi-lifelog summarization tool
No tool annotations despite clear risk metadata. Tools marked READ_ONLY or WRITE in metadata but not exposed via readOnlyHint/destructiveHint in schema. Agents cannot determine safety without parsing comments.
Error handling lacks recovery guidance. Code throws McpError with messages like 'Lifelog with ID {id} not found' but does not suggest alternatives (e.g., 'Try list_lifelogs to find available IDs'). Agents cannot self-correct.