holdon-todo
# HoldOn Todo (Cursor Plugin)
Manage [HoldOn Todo](https://todo.holdon.ltd) 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](https://todo.holdon.ltd) → sidebar **Extensions & tokens** → **Create Cursor MCP token** (`todo:read` / `todo:write`).
## Manual MCP (`mcp.json`)
```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
```bash
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](./PRIVACY.md).
TDQS
Scored across 5 tools
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.
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.
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.
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.