MCP server for session lifecycle tracking, context notes, transcripts, and gated memory promotion
Strong foundation with 20 well-named tools, comprehensive schemas, and detailed descriptions. All tools have clear verb-noun naming (list_, create_, get_, set_, append_, etc.) and input schemas with type definitions. Descriptions average ~150 chars and explain WHAT, WHEN, and side effects. However, output schemas are not documented, LLMs cannot predict response structure. Error handling lacks recovery guidance (no 'try X instead' patterns). Some parameter descriptions could be more prescriptive about formats/constraints. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications.
Advance to the next plan step in an architect-mode session. When the last step is reached, transitions phase to completed. Rejected for closed/archived sessions.
Append markdown text to session context.md. Rejected for closed/archived sessions.
Append a user event to the session transcript.jsonl. Rejected for closed/archived sessions. Event type is user-supplied; reserved system event types are rejected.
Archive or unarchive a session. Reversible and idempotent. Archived sessions are hidden from default listings and reject writes.
Close stale active sessions with an explicit blocked|cancelled status. Idempotent per session. Appends one auditable event per closed session.
Close a session with a terminal status (completed|blocked|cancelled). Idempotent for an identical close; a conflicting close is rejected. Appends one auditable event.
Output schemas not documented. LLMs cannot predict response structure for any tool. Responses are returned as JSON text blobs without schema hints, forcing LLMs to parse unstructured output and guess field names for downstream tool calls.
Error handling lacks recovery guidance. Tool descriptions state what can fail (e.g., 'Rejected for closed/archived sessions') but do not guide LLMs on next steps. No 'try X instead' or 'check Y first' hints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Create a new session. Types: ask (read-only), plan (outputs plan), build (edit/verify), architect (plan then build with phase tracking). Optional metadata is validated/normalized: task_ids:string[], parent_session_id:string|null, owner:string, next_action:string, verification_status:verified|partial|unverified, source_systems_checked:string[], tags:string[]; additional keys are preserved. Task IDs are references only.
Export a session (state, context, transcript) as a JSON bundle. Read-only; works on closed/archived sessions.
Get the full context.md for a session.
Get current state of a session by ID.
Get the full transcript.jsonl for a session, optionally filtered by event type.
List all available session types and their descriptions.
List sessions, most recently updated first. Default includes active+closed, excludes archived. Date filters are inclusive (>= after, <= before).
Promote session context and transcript to a memory candidate for wiki ingestion. Produces an UNVERIFIED candidate in the promotion queue; nothing is auto-trusted. Rejected for closed/archived sessions.
Report stale sessions: active, non-archived sessions whose updated_at is older than stale_after_days. Read-only.
Resume a previous session. Returns state, context, and transcript count. Without an ID, resumes the newest active non-archived session. Explicitly resuming a closed/archived session returns context read-only with a warning and does not reopen it.
Change the session type of an active session. Rejected for closed/archived sessions.
Set the phase for an architect-mode session (planning|building|completed). Rejected for closed/archived sessions.
Set plan steps for an architect-mode session. Resets current_step to 0. Rejected for closed/archived sessions.
Patch session metadata (shallow per-key merge). Reserved top-level state fields are rejected; typed fields are validated. Appends one auditable event.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are classified by Risk (READ_ONLY, WRITE, REVERSIBLE, WRITE) in metadata but not exposed via MCP tool annotations. LLMs cannot infer safety properties from tool definitions alone.
Parameter descriptions lack prescriptive format guidance. E.g., 'workspace_root' says 'Workspace root path for file operations' but does not specify absolute vs relative, platform conventions, or validation rules. 'text' in append_context lacks length limits or markdown constraints.
Pagination in list_sessions is well-designed (limit, offset, total count implied) but other list-like tools (list_modes) lack pagination parameters. If modes list grows, responses could exceed context limits.