Skip to main content
Glama

HoldOn Todo (Cursor Plugin)

Manage HoldOn Todo from Cursor via MCP: list, create, complete, and update todos.

Install (Cursor Marketplace)

  1. Install holdon-todo from the Cursor Marketplace (or load this repo under ~/.cursor/plugins/local/holdon-todo for local testing).

  2. Open Plugins → Configure and set HoldOn PAT.

  3. Create a token: sign in / register at todo.holdon.ltd → sidebar Extensions & tokens → Create Cursor MCP token (todo:read / todo:write).

Related MCP server: Obsidian Tasks MCP Server

Manual MCP (mcp.json)

{
  "mcpServers": {
    "holdon-todo": {
      "command": "node",
      "args": ["/absolute/path/to/holdon-todo-mcp/dist/index.js"],
      "env": {
        "HOLDON_PAT": "holdon_pat_…"
      }
    }
  }
}

Optional: HOLDON_API_BASE (default https://api.holdon.ltd/api/v1).

Tools

Tool

Description

todo_groups_list

List groups

todo_list

List todos (status: 1 open / 2 done)

todo_create

Create a todo

todo_complete

Mark done

todo_update

Update content / status

Develop

npm install
npm run prepare-dist

Local plugin test: symlink this directory to ~/.cursor/plugins/local/holdon-todo, set HOLDON_PAT in plugin config, reload Cursor.

License

MIT. See PRIVACY.md.

Available Tools

5 tools
todo_completeA

Mark a HoldOn todo as done (status=2). Call todo_list first if uuid is unknown.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesTodo uuid

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the resulting state (status=2), but says nothing about reversibility, idempotency, permission requirements, or behavior on an already-completed or invalid uuid for what is a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the action and state transition front-loaded before the conditional uuid hint. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter status-change tool with no output schema, the description covers the action, the resulting status, and how to obtain the uuid. It falls short only on mutation-side details (already-done behavior, failure modes) that an agent would ideally know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single required uuid parameter already documented as 'Todo uuid'. The description adds a workflow hint (fetch via todo_list) but no format, source, or validation detail beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Mark ... as done') on a specific resource (a HoldOn todo), and the parenthetical 'status=2' pins down the exact state transition. This clearly separates it from siblings like todo_update (generic edit) and todo_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit prerequisite for the ambiguous case: 'Call todo_list first if uuid is unknown.' It does not, however, say when to prefer this over todo_update for closing out a todo, so the alternative-routing is only partially covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

todo_createA

Create a HoldOn todo. Use when the user asks to add a reminder or task. New items are ungrouped; use todo_list to verify.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesTodo text, max 500 characters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden, and it does add real behavioral context: new items are ungrouped, and todo_list is the verification path. It says nothing about what is returned (e.g., a created id), whether the call is idempotent, or any auth/permission requirement, which leaves meaningful gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the core action front-loaded and the usage condition and default state following immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter create tool with a fully documented schema and no output schema, the description covers action, trigger, default grouping state, and a verification path. The only omission is any statement about the result of a successful create, which is a minor gap at this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter (content, max 500 characters) is fully documented in the schema. The description adds no further parameter meaning, so the baseline of 3 applies for a schema that does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a HoldOn todo") that an agent can act on directly. It distinguishes the tool from todo_list by naming the verification role of the sibling, but it doesn't contrast with todo_update or todo_complete, so sibling differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when the user asks to add a reminder or task" gives an explicit triggering condition, and "use todo_list to verify" points to a complementary sibling. No exclusions or prerequisites (e.g., grouping requirements, duplicate handling) are given, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

todo_groups_listA

List HoldOn todo groups (for matching group uuids when organizing items).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'List' strongly implies a safe read operation, and the purpose note explains why groups are fetched. It adds no detail on return format, pagination, or ordering, but for a zero-param read tool the omission is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the action and resource come first. The parenthetical earns its place by explaining the output's role, though the sentence is very short and could carry slightly more context at no real cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description covers what it returns and why, which is enough for correct invocation. The absence of any note on result shape or count is acceptable given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the parenthetical does usefully frame what the result (group uuids) is for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (HoldOn todo groups), which clearly separates it from sibling todo_list that lists items rather than groups. The parenthetical clarifies the resource's role, though it doesn't explicitly name a sibling to contrast with since none lists groups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical implies the use case — fetching group uuids when organizing items — which gives an agent a reasonable trigger. However, it names no alternatives and states no when-not conditions, so usage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

todo_listB

List HoldOn todos. status: 1=open, 2=done; omit for all.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo1 open / 2 done

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does not meet it. It implies a read-only listing but says nothing about permissions, pagination, ordering, or what a todo record contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource, with the parameter semantics appended. Nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter list tool this covers the essentials of purpose and filtering, but with no annotations and no output schema the description never says what the returned list looks like or how large it can get. Adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, and the description earns credit above that by adding the omit-for-all default behavior, which the schema does not state. The 1=open/2=done mapping is repeated from the schema, so no additional credit there.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List HoldOn todos"), which is enough to separate it from todo_create/todo_complete/todo_update and from the differently-scoped todo_groups_list. It never explicitly contrasts itself with a sibling tool, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"omit for all" tells the agent how to get the unfiltered list, which is genuine usage guidance for the one optional param. There is no statement of when this tool should be preferred over the other todo_* siblings, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

todo_updateC

Update a HoldOn todo content or status. status: 1=open, 2=done.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYes
statusNo
contentNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden and mostly doesn't. It is a mutation tool yet says nothing about permissions, whether omitted fields are preserved or cleared, whether the update is reversible, or what happens on an invalid uuid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource, with the status mapping following. No filler, though the 'HoldOn' branding adds little for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin. Only the status codes are covered; the uuid parameter, update semantics, and error behavior are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there are no enums, so the description's 'status: 1=open, 2=done' mapping is genuinely additive value the schema lacks. However, uuid and content are entirely unexplained, leaving a third of the parameters undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (HoldOn todo) plus the two fields it can change (content, status). It does not distinguish itself from the sibling todo_complete, which likely covers the status=2 case, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of how it differs from todo_complete despite an apparent overlap when status=2 (done). The agent is left to guess which tool to call for marking a todo complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedtodo_complete
    • First observedtodo_create
    • First observedtodo_groups_list
    • First observedtodo_list
    • First observedtodo_update

TDQS

A3.6/5.0

Scored across 5 tools

Disambiguation4/5

Most tools target clearly distinct operations (list groups, list todos, create, update). However, todo_complete (mark done via status=2) substantially overlaps with todo_update, which can also set status=2, so an agent could reasonably reach for either when closing a task. Descriptions hint at the distinction but the boundary is not fully sharp.

Naming Consistency4/5

All names are snake_case and share a consistent 'todo' prefix, which is highly predictable. The one deviation is todo_groups_list, which puts the resource before the verb (noun_noun_verb) while every other tool follows todo_<verb>. Minor but noticeable pattern break.

Tool Count5/5

Five tools is a well-scoped surface for a todo server: listing groups, listing items, and create/update/complete cover the core interaction loop without redundancy or bloat. Each tool earns its place for the stated purpose.

Completeness4/5

The surface covers create, read, update, and completion of todos plus group listing, which handles most todo workflows. The notable gap is deletion (no todo_delete or group creation), so users cannot remove tasks or create groups; agents can partially work around this by marking items done.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers