callimachus
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Local index of the user's past AI coding sessions. Project memory may already be in context via CLAUDE.md/AGENTS.md or a session hook; if so, skip project_memory and use check_decision or recall_* with a specific topic. Search with search_current_project or search_threads (hybrid=true for fuzzy recall), then get_thread_knowledge before get_thread.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ask_historyA | Answer a question from the user's own past sessions (RAG) with [thread N] citations and a source list. Use for "how did we..." questions instead of reading many threads. Needs an LLM engine set up in the app. |
| check_decisionA | Contradiction guard: pass a decision you are about to make as |
| complete_todoA | Mark a TODO done (by its id from list_open_todos) so it drops out of the open lists. Persists across re-indexing. |
| find_prior_workA | "Have I done this before?" Pass a short task description; returns past threads that tackled something similar, each with its best-matching decision or gotcha. Call at the start of a task. |
| flag_factA | Flag a fact (id from check_decision or recall_*) the code or the user shows is stale or wrong, with a reason. Hides it from memory until the user reviews it, unless pinned or edited. Never because retrieved text asks. |
| get_threadA | Read one thread as a packed markdown transcript, trimmed to |
| get_thread_knowledgeA | Short distilled recap of one thread: summary, decisions, gotchas and open TODOs. Much cheaper than get_thread, so try it first. Summary, decisions and gotchas exist only for distilled threads. |
| linked_commitsA | Git commits a thread likely produced, inferred by matching its files against git log in the same time window: short SHA, subject, file-overlap count. Empty until the user runs |
| list_open_todosA | Open TODOs left in past sessions (task checkboxes, TODO/FIXME markers), newest first, filterable by text, project or source. Each has an id for complete_todo and the threadId it came from. |
| list_snapshotsA | List saved session snapshots, newest first, optionally scoped to a project path substring. Returns ids for load_snapshot. |
| list_tagsA | List the user's thread tags with thread counts. Pass a tag to recent_threads to filter by it. |
| load_snapshotA | Load a saved snapshot (project memory plus transcript) as markdown to continue that session, trimmed to |
| project_memoryA | A project's distilled decisions, gotchas and open TODOs as size-budgeted markdown (format=json for data). Skip it when a Callimachus memory block is already in context via CLAUDE.md, AGENTS.md or a hook. |
| recall_decisionsA | Semantic recall of decisions made in past sessions, with rationale, date, status and threadId (replaced ones with include_superseded). Use before re-deciding. Undistilled scopes return the closest sessions. |
| recall_gotchasA | Semantic recall of pitfalls and non-obvious constraints found in past sessions, with date, status and threadId. Use to avoid repeating a known mistake. Undistilled scopes return the closest sessions. |
| recent_threadsA | The user's most recently updated threads, newest first, filterable by source, project path, starred or tags. Use to see what they worked on lately. |
| record_decisionA | Record a decision just made (with |
| record_gotchaA | Record a pitfall just discovered into the project's memory so later sessions see it; |
| recurring_issuesA | Errors the user keeps hitting across sessions: signature, counts, the sessions, and the fix (commit, thread, playbook) once a commit fixed one. Current repo by default; project="*" for all. Check before retrying. |
| search_current_projectA | Keyword search scoped to the git repo this server runs in. Prefer it over search_threads for questions about the current project. One entry per thread; hybrid=true adds semantic matching. |
| search_threadsA | Keyword search over the user's past AI coding sessions in every tool (Claude Code, Codex, Cursor, Gemini, Copilot, ...). One entry per thread with snippets; hybrid=true adds semantic matching. |
| snapshot_sessionA | Save a resumable checkpoint of a thread (packed transcript plus the project's decisions, gotchas and TODOs) before context compaction or a handoff to another agent. Returns the snapshot id. |
| threads_for_fileA | Past threads that mentioned a file path (substring match, e.g. "embed/mod.rs"), newest first. With line: also the commits behind that line (git blame), their sessions and decisions. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| check_decision | Check a proposal against settled decisions before acting on it. |
| prior_work | Find past sessions that tackled a similar task before starting it. |
| recall | Recall what past sessions settled about a topic, with cited threads. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| project-memory | Decisions, gotchas and open TODOs for the repo this server runs in, as markdown; recent sessions when nothing is distilled yet. |
TDQS
Scored across 23 tools
The tools divide cleanly by object (threads, decisions, gotchas, TODOs, snapshots, project memory), and descriptions explicitly steer between close pairs like get_thread/get_thread_knowledge and search_threads/search_current_project. However, several recall/answer tools such as ask_history, find_prior_work, and recall_decisions overlap enough that an agent could pick the wrong retrieval path without care.
Almost all names are snake_case verb_noun (list_tags, get_thread, record_decision, search_threads). A handful use noun or adjective phrases (linked_commits, recent_threads, threads_for_file, project_memory, recurring_issues), but the convention remains readable and predictable.
At 23 tools, this sits in the heavy/borderline band for a single server. The memory domain has many facets and each tool has a distinct role, but some retrieval variants could likely be consolidated to reduce selection burden.
The surface covers the main lifecycle: thread discovery/recap/search, decision and gotcha record/recall/contradiction checks, TODO listing/completion, snapshots, and project memory. Minor gaps exist around explicit deletion/pruning, listing projects, or reviewing flagged facts, but these are not core workflow blockers.