Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TODOX_URLYesBase URL of the todox instance (e.g. https://todox-omega.vercel.app).
TODOX_TOKENYesPer-user token for authenticating with the todox API. Obtain from the Account page.

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

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_projectsA

Projects that hold a task or a note, newest activity first, with counts and paths. Empty ones are left out (empty_projects_omitted) but still resolve by slug or path.

create_projectA

Register a project by name. Usually unnecessary: get_context and create_task register one from cwd.

update_projectB

Set name, root_path, repo_url or summary. Right after a project is registered, a one-paragraph summary and repo_url are what make it legible from another machine.

delete_projectA

Removes a project and everything under it. Not recoverable; confirm must be its slug. Ask the human first.

merge_projectsA

Fold a duplicate project into the real one, keeping both sides' tasks, entries, notes and paths -- for the same repository registered twice (todox and todox-2). from stops existing; confirm must be its slug. Not undoable: ask the human first, then set repo_url on the survivor.

get_contextA

The session-start briefing: standing rules, decisions, dead ends, open questions, open tasks with their linked files and the last handoff. Call it first, with cwd. Capped: fifty open tasks, three entries per kind per task (one handoff), and a byte budget on every body -- notes, task bodies and log entries -- smaller with a focus. Nothing is truncated: every record keeps its id and head (first line), and a body of null means the budget was already spent, never that the record is empty -- get_task and get_context_note read the rest. open_tasks_omitted/log_omitted count records NOT here; context_omitted/task_bodies_omitted/log_bodies_omitted count records here without a body. focus (one sentence on what this session is for) spends the budget on what is relevant instead of what is newest; context_ranked_by/log_ranked_by say which you got. Open tasks untouched for 14+ days come back head-only in idle_tasks -- title, status, days idle, last handoff head -- and cost no budget. summary_missing: true means nobody has said what this repository is: update_project with one or two sentences once you know.

get_file_contextA

Everything todox has recorded against a file: the tasks that touched it with their dead ends and decisions, and the context notes attached to it in full. Ask before editing a file you have not seen this session — a dead end costs nothing to read and an afternoon to rediscover. The path may be absolute or relative to the repository root; both fold to the same answer, so a note linked on one machine is found from another. Pass cwd or project to say which repository is being asked about.

session_statusA

Call before finishing. yours: the tasks you changed or wrote on in this project within hours (default 12), any status, each with whether a handoff was written since the last thing you did there. stale: tasks 'doing' for 7+ days with nothing logged, by anyone. Ids, titles, dates and one boolean -- small on purpose. Empty lists mean nothing is owed. hint says what to do about each list.

list_tasksC

Tasks in a project, filtered by status.

get_taskB

One task, its whole log (newest 200; entries_omitted if more) and its linked files marked fresh/changed/missing.

create_taskA

Capture work that will not finish this session. Pass cwd and todox picks the project; registering a new one needs repo_root or repo_url too. Put the goal and the definition of done in body.

update_taskA

Change title, body, status or priority. 'doing' starts the clock, 'done' stops it; that is where report durations come from.

log_entryA

Append one entry: 'decision', 'dead_end', 'question', 'note' or 'handoff'. First line is the headline the briefing shows; keep the body to a screen. Settling an earlier question? Pass its id as answers_entry_id -- nothing else closes one.

delete_entryA

For an entry that was wrong when written (wrong task, a decision never made). An entry overtaken by later work is history, not wrong: append instead. Not for tidying.

link_filesA

Attach file paths to a task (task_id) or a note (context_id), one or the other -- the files the work touches, and the plan it follows, wherever that lives: a path outside the repository is fine and a URL (a claude.ai artifact, say) is kept as written. todox can then warn when a linked file changes, and get_file_context can find the task or note from the path.

unlink_fileA

Remove a link whose file was deleted, renamed or attached by mistake. Nothing on disk is touched.

accept_file_changeA

Clear the stale warning on a linked file once you have read the change and the note still holds (report its current hash first; hosted, via report_file_hashes). If the note no longer holds, fix the note instead.

get_context_noteA

The whole body of one context note -- for a note the briefing's budget did not reach (body null, never empty) or a search snippet you need the rest of. Entries are read with get_task.

add_contextC

Knowledge that outlives a task: decision, convention, gotcha, preference. Omit project and cwd to make it account-wide.

update_contextA

Rewrite a note that is wrong or out of date; body replaces the whole thing. Correct rather than add a second note that disagrees.

delete_contextB

For a note that should never have been written (wrong project, or so superseded it misleads). Merely out of date: update_context.

searchA

Full-text search over tasks, log entries and notes across ALL your projects, ranked by relevance. Ask in words -- 'why did we choose scrypt over bcrypt' -- terms match independently and more matches rank higher; quote a phrase to require it. Stemmed in English and Turkish, with a substring match underneath so 'FileSync' finds readFileSync. Each hit carries a snippet from the matching part. Filters narrow, never search: kinds (['dead_end'] = has this been tried?, ['decision'] = why is it like this?; tasks have no kind), project (account-wide notes still come back). Leave both out unless the question has a shape. Not searched: file paths, project names. At most limit hits (default 30). Ask in the language the log is written in -- a Turkish note is found by a Turkish question -- and if a sentence finds nothing, retry with only the distinctive identifiers (3+ characters; shorter ones match as whole words only).

activity_reportA

What got done in a window, from the log: tasks completed and opened, time in 'doing' and lead time, models, decisions, dead ends, open questions. format:'markdown' to hand on, 'json' to reason over. Prefer a named period to 'all'.

Prompts

Interactive templates invoked by user choice

NameDescription
start_sessionRead what previous sessions established before doing anything else — decisions, dead ends, open questions and the last handoff.
wrap_upWrite down what a fresh session would need to continue: state, decisions, dead ends, and what to watch out for.
standupA report built from the log rather than from commits: durations, decisions, dead ends and open questions.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 23 tools

Disambiguation4/5

Most tools target a distinct resource and action, and the descriptions explicitly cross-reference alternatives (e.g., delete_context vs update_context). Some overlap remains between add_context and log_entry for recording decisions, and between get_context and get_context_note, so an agent may still need to read carefully.

Naming Consistency4/5

Nearly all tools use snake_case verb_noun names (create_task, update_project, delete_entry, link_files). A few exceptions (session_status, activity_report, search, log_entry) break the verb_noun pattern but are still readable and consistent in casing.

Tool Count3/5

At 23 tools, the set is in the heavy 16-25 range, and a few specialized tools (merge_projects, accept_file_change, session_status) could make discovery harder. Still, the breadth reflects a genuinely large domain, so it is borderline rather than excessive.

Completeness3/5

Core CRUD is strong for projects, context notes, and log entries, and tasks have create/get/list/update. However, there is no delete_task despite delete operations existing for notes and entries, and no clear get_project for retrieving project summary/repo_url, leaving notable lifecycle gaps.

Maintenance

ActivityActive
ResponsivenessWithin a week