Universal session & handoff layer for AI coding agents. Provides session management, context tracking, checkpoints, tasks, decisions, blockers, memory, and workspace state for multi-agent coding workflows.
Agent Session MCP demonstrates solid tool organization with 25 well-named tools following verb_noun conventions (session.get, context.update, memory.put). All tools have descriptions (avg ~80 chars, within baseline 34-392 range). Input schemas are present with type declarations and parameter descriptions. Tool annotations (readOnly, destructive, idempotent flags) are implemented via toolFlags map, supporting agent decision-making. However, output schemas are not documented in the source code, LLMs cannot predict response structure. Error handling is minimal; tools return raw errors without recovery guidance. Some parameter descriptions lack format constraints (e.g., 'depth' accepts 'summary|recent|full' but this is stated in description, not as enum). The context.get tool is marked idempotent but performs side effects (auto-checkpoint), creating semantic confusion. Overall: good naming and basic structure, but missing output documentation and error guidance expected of production tools.
Record a blocker that is preventing progress.
List all blockers in the current session.
Mark a blocker as resolved.
Get the current session context (summary, recent or full).
Read the session context without recording anything. Same output as context.get, but skips the file-change sync and the auto-checkpoint. Use this when the client runs read-only; prefer context.get otherwise so file changes stay recorded.
Ask the agent to summarize the session and store it via memory.put (uses the agent's own model, no external LLM).
Update a context field (task_title, task_status, next_action, session_title).
Output schemas not documented. LLMs cannot predict response structure or plan downstream tool calls. No documentation of return types, field names, or pagination.
Error handling lacks recovery guidance. Tools return raw errors without actionable next steps (e.g., 'need at least two checkpoints to diff' does not suggest how to create checkpoints).
Parameter 'depth' in context.get and context.read accepts enum values (summary|recent|full) but is not declared as enum in schema, only documented in description text. LLMs cannot parse constraints from descriptions alone.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Record a decision made during the session.
List all decisions made in the current session.
Append an event to the session event log.
Delete a memory item by key.
Retrieve a memory item by key.
Promote a memory item to higher priority.
Store a memory item (project knowledge, patterns, solutions, etc.).
Search memory items by query.
Create a checkpoint snapshot of the current work.
Show what changed between two checkpoints (defaults to the two latest).
Get the current session state.
Record work in one call: append an event, log a decision, set next_action, and optionally checkpoint. Prefer this over several separate calls.
Resume the latest session and mark it active.
Create a new task and set it as the current task.
Get the current task.
Update the current task (title or status).
Show the current workspace diff (uncommitted changes).
Get the current workspace status (git branch, commit, dirty state, changed files).
context.get marked idempotent but performs side effects (auto-checkpoint, file-change sync). Semantic mismatch: idempotent tools should produce identical results on repeated calls. This tool's behavior depends on workspace state.
List tools (decision.list, blocker.list, memory.search) lack pagination parameters (limit, offset, cursor). Large result sets will blow context windows without pagination support.