Session intelligence for your coding agent. Tracks Claude Code sessions, plans, milestones, exchanges, and provides MCP tools for session search, retrieval, and analysis.
Keddy provides 12 well-named, read-only tools with clear descriptions and basic parameter documentation. Naming follows verb_noun convention consistently (keddy_search_*, keddy_get_*). All descriptions are present and substantive (100+ chars), exceeding the 10-char minimum. However, parameter documentation is incomplete: many optional parameters lack descriptions or constraints. Output schemas are not documented in the source, responses are formatted via helper functions (textResult, jsonResult) but the actual shape of returned data is not formally specified. No error handling guidance is visible (no recovery hints, retry classification, or validation error messages). Tool descriptions could be more specific about use cases and when to prefer one over another (e.g., when to use keddy_get_session_skeleton vs keddy_get_session). Security is sound (read-only semantics, no credentials), and composition is strong, tools chain well (search → get details → transcript). The codebase is production-grade (TypeScript, Zod for schema validation), but the tool definitions themselves lack the rigor expected of a 70+ score.
Get the generated daily analysis note for a specific date (if one was created). Returns daily synthesis and insights.
Get full project context: recent sessions, active plans, pending tasks, last milestones, and latest analysis notes. Designed for agent handoff at session start.
Get recent plans across all sessions, with status and version information. Helps agents understand active work and plan evolution.
Get the most recent sessions across all projects. Useful for understanding current work context. Returns summary metadata for each session.
Get everything about a session — full segments, plans, milestones, exchanges, activity groups, and token summary. Returns a large response (100KB+). Prefer keddy_get_session_skeleton for a lightweight overview first.
Get exchanges (user prompts and Claude responses) from a session in paginated ranges. Returns exchange details including tool calls, tokens, and timestamps.
Output schemas not documented. Tools return JSON via textResult() or jsonResult() helper, but the actual response structure (fields, types, nesting) is not formally specified. LLMs cannot plan downstream operations without knowing what data they will receive.
Parameter descriptions incomplete. Many optional parameters (project, days, limit, operation, status) have descriptions, but some lack guidance on valid ranges, defaults, or constraints. Example: 'limit' parameter has no min/max specified; LLMs could pass unbounded values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Get the generated analysis note for a session (if one was created by the analysis agent). Returns session summary, insights, and mermaid diagram if available.
Lightweight session overview — metadata, exchange count, plans, milestones, and markers. Use this first to decide if you need the full session via keddy_get_session.
Get the full transcript (all user prompts and responses) from a session. Returns formatted exchanges for reading the complete conversation flow.
Get system-wide statistics: total sessions, exchanges, files touched, error rates, and model distribution across all tracked projects.
Find sessions and exchanges where a specific file was read, written, or modified. Returns file operation details across sessions.
Search past sessions by keyword across user prompts and plan text. Returns session metadata with model, token counts, errors, and files touched.
No error handling guidance. Tool descriptions do not specify what errors can occur, how to recover, or whether errors are retryable. Example: keddy_search_sessions does not document what happens if the query is invalid or the project path does not exist.
Missing enumeration constraints. Parameters like operation ('read', 'write', 'edit', 'all') and status ('draft', 'active', 'completed') are described as free-form strings but should use enum constraints to guide LLM selection.
Tool disambiguation could be clearer. keddy_get_session and keddy_get_session_skeleton both retrieve session data. The descriptions explain the difference (full vs lightweight), but do not explicitly recommend calling skeleton first, agents may not optimize correctly.
Pagination parameters lack bounds. 'limit' parameters across multiple tools have no documented min/max. Example: keddy_search_sessions says 'default 20' but does not state if limit can be 0, 1, or 10,000. This invites unbounded requests.