Casefile
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CASEFILE_AUTO_UPDATE | No | Set to false to turn off auto-update. Default is true. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/skills": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_taskA | Returns everything about one task in a single call: card, parent and children, links from both sides, computed features, latest summary, open questions, unresolved remarks, case index and transition targets.
The summary covers the case up to its own A remark in
|
| search_tasksA | Searches tasks by a query language string, by separate conditions, or by both. Conditions from both sources combine with An unknown field, operator or value is refused with |
| create_taskA | Creates a task in With A child task takes a part of the parent's work when the parent's output falls into separate results, its checks cannot all pass in one pass, the work does not fit one pass, or it depends on something that does not exist yet. These signs appear on entry into the parent and after each attempt. The response carries the key issued by the tracker. An empty title or
description is refused with |
| update_taskA | Changes the given fields of a task; fields left out stay as they are. Title, description and sections are fixed from Each changed field files |
| transitionA | Moves a task to another status along the fixed transition table. Refusals: leaving The tracker never moves a task into or out of
The response names the new status and version and the number of the filed
|
| close_taskA | Closes a task: files the given entries, then the verdicts, then the final
summary, and moves the task to A refusal of any part files nothing and leaves the status as it was. The exit
conditions are checked after filing: a passing latest verdict on every review
check within the current pass ( For a parent task the final summary covers the whole work: the children's results are in their own closing summaries. Tasks this one blocked ( |
| move_taskA | Moves a task to another project, recording the move, both keys and the reason
as a The task gets the next number of the new project, or its own earlier key there
when it returns to a project it has been in: a task holds at most one key per
project. The key it leaves goes to Moving into or out of a frozen project fails with A list of keys moves each task on its own, in list order, so new numbers follow
that order; each moved task gets its own |
| read_entriesA | Returns entry bodies of one task's case, with payload, in number order. Filters combine with Entries of many cases in one stream, with a wait for new ones, come from
|
| add_summaryA | Files a summary: the handover note of a case, in four parts, none of them empty
( A significant step is a decision made, a finished part of the work, a failure that changes the plan, or any point where a colleague would need an explanation of where the work stands. Its index title is the first line of |
| add_entryA | Files an entry without payload: a decision, attempt, finding, artifact, remark or note. Entries are immutable: no call edits or deletes one, and a mistaken entry is
corrected by a new entry that references it in An empty title is refused with |
| askA | Files a question to registry participants. The tracker delivers nothing: an addressee sees the question when reading the feed or their inbox. A question stays open until an What the cases of the parent, its ancestors and sibling tasks already record is
readable through |
| answerA | Answers a question of the same task. Any holder of a The first answer closes the question and later ones add to it; neither a question nor an answer changes the task status. The tracker builds the title from the question reference. |
| resolveA | Resolves a remark on a task: its outcome and where the work went. Any outcome resolves the remark, |
| add_verdictA | Files the outcome of one review check, as run by the task's assignee within the current pass. A pass starts with each entry into |
| read_project_entriesA | Returns the bodies of a project's case entries, payload included, ordered by entry number. The project's case holds decisions, findings, artifacts and notes about the
project, and the tracker's own entries about its card. Filters combine with
|
| add_project_entryA | Files an entry in a project's case: a decision, finding, artifact or note that concerns the project rather than one of its tasks. The entry number counts inside the project, and An empty title, or a reference to a missing entry, task or project, returns
|
| linkA | Links two tasks and files
An open blocker raises the A closed task ( |
| unlinkA | Removes a link and files A link is removed from either side and under either name of its kind: |
| get_projectA | Returns one project by its key: key, title, description, current attribute values and the index of the project's case. The keys of the installation's projects are listed by |
| list_projectsA | Lists the installation's projects, one page at a time: key, title and archive
time. A project's description is returned by |
| list_participantsA | Lists the participant registry: humans and permanent agents, the possible addressees of a question. Temporary agents are not registered and are absent from it. |
| create_projectB | Creates a project with a key, a title and a description. Only a |
| update_projectA | Changes a project's title and description; a field left out stays. Only a |
| archive_projectA | Archives a project with a reason and files an The project and its tasks freeze as they are: statuses stay, open tasks need no
closing. From then on any change in the project or its tasks — a new task, an
entry, a transition, an edit, an attribute, a new link — is refused with
An already archived project is refused with |
| restore_projectA | Brings an archived project back: files a A project that is not archived is refused with |
| set_attributeA | Sets the value of a project attribute: a reference fact of the project such as its repository or main branch. One call both creates and changes; which entry it files follows from the attribute's state.
The name keeps the spelling it was created with; another spelling addresses the
same attribute and does not rename it. Attributes carry no types and no search:
the tracker stores the text and acts on none of it. A |
| remove_attributeA | Removes a project attribute and files an A name that matches no attribute of the project is refused with
|
| register_participantA | Registers a human or a permanent agent. Only a |
| update_participantA | Changes a participant's description. Only a |
| wait_journalA | Returns journal entries after the sequence number The journal is every case entry of the installation in one stream, task cases
and project cases alike, in Entries already filed in one case, by number, are returned by |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| casefile | Connecting an agent harness (Claude Code, Codex, Hermes or another MCP client) to a Casefile task tracker installation over MCP, either one installed on the same machine or a shared one running on a server, recovering when the casefile MCP server refuses a call with 401, watching the tracker journal for news between agent sessions, and installing or updating this skill as a plugin. Applies when Casefile is being installed or connected, when an agent joins an installation that runs on a server, when the casefile server is missing from the harness or answers 401 unauthorized, when answers and remarks in the tracker have to reach an agent with no open session, and when this skill was read from the server and is not yet installed in the harness. The working rules of the tracker itself arrive with the MCP server, in its instructions and tool descriptions, and are not part of this skill. |
TDQS
Scored across 30 tools
Most tools target clearly distinct resource+action pairs, and descriptions explicitly delineate entry types (summary, verdict, question, answer, resolution, generic entry). A couple of near-overlaps exist: transition (status change) vs move_task (project move), and add_entry vs add_project_entry share the same action on different scopes, which could cause occasional misselection.
The dominant pattern is consistent snake_case verb_noun (read_project_entries, create_task, update_task, close_task, add_verdict, etc.). A handful of tools break it with bare verbs (link, unlink, ask, answer, resolve, transition), and the get_/read_ prefix usage is not perfectly uniform, but everything remains readable and lowercase.
30 tools is above the comfortable range and feels heavy, but the domain is genuinely broad (projects, tasks, entries, links, participants, attributes, journal). Each tool maps to a distinct operation, yet the surface could likely be consolidated (e.g. entry-creation variants).
Full lifecycle coverage: project create/update/archive/restore/list/get, task create/update/move/transition/close/get/search, entry add/read, links link/unlink, participant register/update/list, attributes set/remove, and a journal stream. Entries are intentionally immutable and projects archived rather than deleted, so no obvious dead ends.