Terminal-native conversation extractor + MCP server for agent CLIs (Claude Code first). Normalizes to OpenAI Chat Completions format; paste-ready markdown output; OS-path rewriting.
Three tools with strong naming (verb-first: list_, get_, doctor) and comprehensive descriptions (194 - 380 chars, well above baseline 194 avg). All tools have detailed input schemas with type definitions and parameter descriptions. However, output schemas are not explicitly documented in the visible code, responses are inferred from implementation. Error handling is present but lacks recovery guidance (e.g., 'session not found' should suggest alternatives). Tool composition is sound: each does one thing. Security is good (read-only operations, no secrets in params). Minor gaps prevent A-grade: missing output schema documentation and no tool annotations (readOnlyHint).
Diagnose stale `sessions-index.json` files under ~/.claude/projects/. The `/resume` picker reads the index, which goes stale when Claude Code is ungracefully shut down or the index is corrupted by concurrent writes. This tool scans the corpus and reports mismatches: sessions in the index that no longer exist on disk, sessions on disk missing from the index, and index entries with invalid UUIDs or timestamps.
Load and render one session. Default format is paste-ready markdown. Path-rewrite transforms are opt-in. Pass `latest: true` (optionally with `workspace_toml`) to resolve to the most recent session in scope without a second call. NOTE: pconv only sees Claude Code conversations persisted to ~/.claude/projects/. If a session id isn't found, it may have been authored via another tool (Cursor, web claude.ai, continue.dev) or never persisted at all — pconv can't recover what Claude Code never wrote.
List Claude Code conversations discoverable on this machine. Returns SessionMeta entries with id, cwd, started_at, updated_at, message_count, source_path. NOTE: `updated_at` is the last-message-timestamp inside the JSONL (trustworthy). Do NOT cross-check against filesystem mtime under ~/.claude/projects/ — mtime drifts from metadata-only touches (backup tools, cloud-sync) without new conversation content. pconv only sees Claude Code sessions that were persisted; work done via other tools (Cursor, web claude.ai) or unpersisted sessions is invisible — cross-reference `git log` for coverage gaps.
Output schemas not documented. Tools return structured data (SessionMeta, markdown, JSON) but no explicit schema definitions visible in tool registration. LLMs cannot plan downstream calls without knowing response field names and types.
Error responses lack recovery guidance. When a session ID is not found, the tool description mentions it but no error message suggests alternatives (e.g., 'Call list_conversations to find available sessions'). Agents cannot self-correct.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint declared. All three tools are read-only and safe to retry, but this is not formally signaled to clients.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
'doctor' tool has vague name. 'doctor' is a generic action; 'diagnose_sessions_index' or 'validate_sessions_index' would be clearer. LLMs may not recognize it as a diagnostic/repair tool.
Parameter 'workspace_toml' accepts magic string 'auto' but this is not documented as an enum. LLMs may not discover this option without explicit constraint.