super-productivity-rest-mcp
This server lets Claude or any MCP client control Super Productivity through its Local REST API using 15 MCP tools.
Check connectivity and status:
sp_healthverifies the REST API is reachable;sp_get_statusreturns the current task and task counts.List and search tasks:
sp_list_tasksfilters by title, project, tag, source (active/archived/all), and includes/excludes completed tasks.Get task details:
sp_get_taskretrieves a single task by ID.Create tasks:
sp_create_taskcreates tasks with title, notes, project, tags, due dates, estimates, planned time, time spent, done state, and optionalparentIdfor subtasks.Update tasks:
sp_update_taskedits title, notes, project, tags, due dates, estimates, planned time, time spent, and done state (but not parent/subtask relationships).Delete tasks:
sp_delete_taskpermanently removes a task.Archive and restore tasks:
sp_archive_taskarchives a task;sp_restore_taskbrings an archived task back.Control the current/running task:
sp_start_taskmakes a task current;sp_set_current_tasksets or clears the current task;sp_stop_current_taskstops it;sp_get_current_taskshows what is currently active.List projects and tags:
sp_list_projectsandsp_list_tagsoptionally filter by title.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@super-productivity-rest-mcpShow my tasks for today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
super-productivity-rest-mcp
An MCP server that exposes Super Productivity's built-in Local REST API as MCP tools — so Claude (or any other MCP client) can list, create, update, archive and control your tasks, projects and tags through plain conversation.
Two transports, two branches — pick the one your client needs
main(this branch) — stdio. The client spawns the server as a local subprocess. This is what you want for Claude Code.
http-transport— Streamable HTTP onhttp://127.0.0.1:3877/mcp, run as a long-lived local service. Use it for Claude Cowork / Claude Desktop, which reach it through themcp-remotebridge.Same 15 tools and the same Local REST API underneath — only the transport differs.
Why this exists
Super Productivity ships with a Local REST API (http://127.0.0.1:3876), but it doesn't speak MCP — it's a plain REST API. This project is a thin, direct translation layer between the two, with a few design choices that set it apart from other Super Productivity MCP integrations:
Talks directly to the official Local REST API — no Super Productivity plugin to install, no Node-execution permission to grant, no file-based polling. One HTTP request per tool call.
Full coverage of everything the Local REST API exposes: task CRUD (including delete), archive/restore, current-task control (start/stop/set/get), projects, tags, and health/status — 15 tools total, mapped 1:1 to the API's endpoints.
Handles the access-token variant. Some Super Productivity versions require a bearer token for the Local REST API and some don't — this server supports both via an optional environment variable.
Zero extra runtime dependencies beyond Node.js — no Python, no Super Productivity plugin bundle.
Related MCP server: Super Productivity MCP Server
Prerequisites
Super Productivity desktop app (Electron — the Local REST API is not available in the web version)
Node.js 18+
An MCP client that can spawn a local (stdio) server — this README focuses on Claude Code. For clients that connect by URL instead, see the
http-transportbranch.
1. Enable the Local REST API in Super Productivity
Go to Settings → Misc → Enable local REST API. This starts a server on http://127.0.0.1:3876 (the port is fixed and not configurable). It only accepts connections from localhost.
Check whether your installation also requires an access token:
curl -i http://127.0.0.1:3876/tasks200 OKwith a task list → no token needed, skip theSP_REST_TOKENparts below.401 Unauthorized→ copy the token from Settings → Misc → Access Token; you'll need it in step 3.
2. Install
git clone https://github.com/mrswer/super-productivity-rest-mcp.git
cd super-productivity-rest-mcp
npm install3. Register with Claude Code
The server's name must come before the --scope/-e flags, or the CLI misparses the following arguments as more environment variables.
Without a token:
claude mcp add super-productivity --scope user -- node /absolute/path/to/super-productivity-rest-mcp/server.jsWith a token:
claude mcp add super-productivity --scope user -e SP_REST_TOKEN=your-token-here -- node /absolute/path/to/super-productivity-rest-mcp/server.js--scope user registers the server for every project, in both the claude CLI and the Claude Code UI (they share the same ~/.claude.json).
Verify:
claude mcp list
# super-productivity: node /path/to/server.js - ✔ ConnectedOther MCP clients
Any client that supports local stdio servers works the same way — point it at node /absolute/path/to/server.js, and set SP_REST_TOKEN (and optionally SP_REST_BASE_URL) in its environment-variable configuration if needed. See .env.example for the variables this server reads (note: it does not load .env files automatically — your MCP client must pass real environment variables).
Note on clients that connect by URL: this branch speaks stdio only, so a client that wants an MCP endpoint rather than a subprocess — Claude Cowork and Claude Desktop among them — cannot use it. The
http-transportbranch serves the same tools over Streamable HTTP on localhost for exactly that case. Either way the server must run on the same machine as Super Productivity.
Usage
Ask your MCP client things like:
"Show my tasks for today"
"Create a task 'Review PR #42' in the Work project"
"What's my currently running task?"
"Mark task X as done"
By default, sp_list_tasks excludes completed tasks (includeDone defaults to false), matching a typical "what's left to do" view. Ask for "including completed tasks" if you want the full count to match what Super Productivity's UI shows for the day.
Available tools
Tool | Description |
| Check whether the Local REST API is reachable and ready |
| Get the current task and task counts |
| List tasks, filterable by title, project, tag, completion state, source |
| Get a single task by id |
| Create a task (supports subtasks via |
| Update a task's title, notes, project, tags, estimate, due date, etc. |
| Delete a task |
| Start a task (set as current) |
| Archive a task |
| Restore an archived task |
| Get the currently active task, if any |
| Set or clear the current task |
| Stop the current task |
| List projects, optionally filtered by title |
| List tags, optionally filtered by title |
Environment variables
Variable | Required | Default | Description |
| Only if your Super Productivity requires it | — | Bearer token from Settings → Misc → Access Token |
| No |
| Override if running the server on a different host than Super Productivity |
Troubleshooting
Symptom | Likely cause | Fix |
| Wrong path to | Check the path ( |
"Could not reach Super Productivity's Local REST API" | Super Productivity isn't running, or the Local REST API is disabled | Start Super Productivity, enable it in Settings → Misc |
| This installation requires a token that isn't configured | Get the token from Settings → Misc → Access Token, pass it as |
| Argument order — | Put the server name right after |
Task counts don't match the Super Productivity UI | Completed tasks are excluded by default | Ask for "including completed tasks" |
Security notes
The Local REST API only accepts connections from
127.0.0.1— it is not reachable from other machines unless you deliberately expose it (not recommended).This server runs as a local subprocess over stdio; it is not a network service and doesn't listen on any port itself.
Treat your
SP_REST_TOKEN, if you have one, like any other credential — don't commit it, and pass it via your MCP client's environment-variable configuration rather than hardcoding it.
Limitations
Requires the Super Productivity desktop app (Electron) — the Local REST API isn't available in the web build.
This branch uses stdio transport only. If your client needs an HTTP endpoint, use the
http-transportbranch instead of building your own wrapper.Re-parenting a task (moving it under a different parent) isn't supported by the underlying Local REST API — this is a limitation of Super Productivity's API, not this server.
Contributing
Issues and PRs are welcome. If you hit a bug or want a tool that Super Productivity's Local REST API supports but this server doesn't yet expose, open an issue.
Support
If this project saved you some time, you're welcome to buy me a coffee ☕.
License
MIT — see LICENSE.
Available Tools
15 toolssp_archive_taskC
Archive a Super Productivity task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears the full burden of behavioral disclosure. It only states 'Archive', and omits whether the operation is reversible, what state changes occur, whether the task remains viewable, or any return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence with no redundant wording. It is narrowly scoped and front-loaded, though it still lacks contextual guidance that would make it a more complete definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, this description is under-specified. It doesn't clarify the effects of archiving, how success or failure is conveyed, or how the `id` parameter is consumed beyond schema-level identification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single parameter `id` with 'Task id', giving 100% schema coverage. The description adds no extra meaning about the id's origin, format, or behavior if invalid, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Archive') and the resource ('a Super Productivity task'), which is distinct from sibling tools like delete_task and restore_task. It doesn't describe the effect of archiving, so it falls short of maximum clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as sp_delete_task or sp_restore_task. There is no mention of whether archiving is meant to non-destructively hide tasks or what conditions favor this action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_create_taskC
Create a new task in Super Productivity.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| title | Yes | Task title (required) | |
| dueDay | No | Due date, day only, no specific time ("Termin") as YYYY-MM-DD. Use dueWithTime instead if a specific time matters. | |
| isDone | No | ||
| tagIds | No | ||
| parentId | No | Create as a subtask of this top-level task id. Cannot be combined with projectId or tagIds. | |
| plannedAt | No | When you plan to work on the task ("Zaplanuj"), as a timestamp in ms since epoch — distinct from the due date. | |
| projectId | No | Project id, e.g. "INBOX_PROJECT" for the inbox | |
| timeSpent | No | Time already spent on the task, in milliseconds | |
| dueWithTime | No | Due date and time ("Termin do") as a timestamp in ms since epoch. Use this instead of dueDay when the deadline has a specific time, not just a day. | |
| timeEstimate | No | Estimated duration in milliseconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only states that a task is created. It does not disclose whether the operation is idempotent, what side effects occur, whether certain fields are required in practice, or what happens on success or failure. The description is not misleading, but it is far too thin to be transparent about behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is concise and immediately states the core purpose, though it is arguably too terse to carry much informative weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 11 parameters, no annotations, no output schema, and many sibling tools, the one-sentence description is not complete enough. It does not explain return values, required fields, or how this creation flow interacts with projects, tags, or subtasks. The schema provides some richness, but the description itself leaves significant gaps for an agent deciding how to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-level meaning beyond what the input schema already provides. Schema coverage is 73%, which is moderate, and the schema itself contains useful descriptions for many fields, but the tool description does not compensate for the remaining undocumented parameters or clarify relationships between them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('a new task in Super Productivity'), making the tool's primary purpose immediately understandable. It does not explicitly differentiate from sibling tools like sp_update_task or sp_delete_task, but the verb 'create' is unambiguous enough to avoid confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as sp_update_task or sp_start_task. It does not mention prerequisites, constraints like parentId cannot be combined with projectId, or any context that would help an agent decide between creating a task and using another task-related tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_delete_taskB
Delete a Super Productivity task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of disclosing behavioral traits. It states the core behavior (deletion) but fails to disclose important consequences such as irreversibility, whether related data (e.g., subtasks, comments) is also deleted, or any confirmation steps. Given no annotations, a score of 3 is appropriate because it covers the basic action but lacks depth on side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence that is front-loaded with the action and object. It is concise and to the point, but could be slightly improved by adding a brief note about irreversibility or a cross-reference to archive for alternatives, giving it a 4 rather than a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It does not explain the effect of deletion on related entities, the irreversibility, or any confirmation expectations, which an agent needs to know to call it safely. The presence of a sibling like sp_archive_task makes the lack of guidance on when to delete versus archive a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with a clear description for the 'id' parameter ('Task id'). The tool description adds no extra detail about the format or semantics of the id beyond what the schema says, so the baseline score of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a Super Productivity task' clearly states the verb (delete) and the resource (Super Productivity task), making the purpose unambiguous. It distinguishes from siblings by the specific action of deletion, as opposed to create, update, list, or archive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like sp_archive_task, which might be a less destructive alternative. It does not mention any prerequisites, such as the task existing or whether the user needs to be the owner, nor does it warn about irreversibility, which would be crucial for a deletion operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_get_current_taskA
Get the task that is currently active/running in Super Productivity, if any.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. The word 'Get' implies a read-only operation, and 'if any' correctly signals that an absence of an active task is a legitimate outcome. It does not describe error or none-return format, but there are no side effects obvious for this zero-parameter getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight, front-loaded sentence states the resource, the operation, the system context, and the nullable outcome. There is no filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter getter, this description is largely complete: an agent knows exactly what to call and what it gives. It would benefit from explicitly stating the return value when no task is active (e.g. 'null'/'empty'), but the phrase 'if any' already covers most of the ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no properties, so parameter coverage is trivially complete. The description validly needs to provide no parameter-level details. Baseline 4 for zero-parameter tools applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Get') and a specific resource: the currently active/running task in Super Productivity, with 'if any' signaling a possible absence. This clearly separates it from siblings like sp_get_task, sp_list_tasks, and sp_set_current_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose: call this when you need the current running task. However, it does not explicitly say when not to use it or name alternatives like sp_get_task for a specific task or sp_list_tasks for all tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_get_statusA
Get the current task and task counts from Super Productivity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It states that the operation returns current task and task counts, implying a read-only operation, but it does not clarify what status data is included or whether any side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no wasted words. It front-loads the verb and resource, making the purpose immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status tool, the description is mostly complete: an agent knows what to expect ('current task and task counts'). Slight ambiguity remains about what the task counts represent, but this is a minor gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are largely irrelevant. The baseline of 4 applies because no param documentation is needed for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly identifies the resource (Super Productivity) and the returned information (current task and task counts). It is clear, though it does not explicitly differentiate itself from the sibling sp_get_current_task beyond adding 'task counts.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool instead of siblings such as sp_get_current_task, sp_health, or sp_list_tasks. An agent must infer its use case from the name and brief description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_get_taskA
Get a single Super Productivity task by its id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It implies a read operation but doesn't explicitly mention that it doesn't modify anything. It also doesn't describe what happens if the id is invalid, but for a simple getter, the behavior is fairly obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb and resource. No fluff, easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-id tool with one fully documented parameter and no output schema, the description is adequate. It doesn't explain return values, but since the output schema is absent and it's a standard getter, this is not critical. However, it doesn't mention error behavior or edge cases, which might be useful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'id' is fully described in the schema as 'Task id', and the description says 'by its id', so there is high redundancy. The schema already carries the meaning, and the description adds little beyond confirming the id is used for lookup.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a single task by its id, which is specific and matches the name. However, it does not differentiate from other retrieval tools like sp_get_current_task or sp_list_tasks, though the phrase 'by its id' helps distinguish from list operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single task when you have its id, but it does not explicitly state when to use this over alternatives like sp_get_current_task or sp_list_tasks. There is no mention of when not to use it, but the context is clear enough for a simple get-by-id tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_healthB
Check whether the Super Productivity Local REST API is reachable and ready.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It conveys that the tool is a read-only reachability/readiness probe, which is useful, but it does not disclose what happens when the API is unreachable, what the response format is, or what 'ready' means precisely. The behavior is implied but not detailed enough for fully confident invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero redundancy. Every word earns its place, specifying the verb, resource, and criterion ('reachable and ready') without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless health probe, the description covers the core 'what' adequately, but because there is no output schema, the agent is left to wonder what the response will look like and how failure is signaled. A brief line about return format or error behavior would meaningfully improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to clarify; the baseline of 4 applies. The description correctly implies no inputs are needed by focusing purely on the reachability check.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('check') and identifies the resource ('Super Productivity Local REST API') and target state ('reachable and ready'). It clearly conveys this is a health-check probe, though it does not explicitly distinguish itself from sibling sp_get_status, which could plausibly be selected for similar health/status queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool versus alternatives such as sp_get_status, which could serve an overlapping 'status' role. The description gives no context about preconditions, expected usage scenarios, or exclusions, leaving the agent to infer when a health probe is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_list_projectsA
List Super Productivity projects, optionally filtered by title.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter by title, case-insensitive substring match |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. 'List' and 'optionally filtered by title' convey that the operation is read-only and that the query restricts results, but the description does not disclose return format, pagination, errors, or access requirements. Basic behavior is clear, but fuller transparency is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler: it front-loads the action and resource and states the optional filter in a compact clause. Every word earns its place, and the structure is easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity — one optional parameter, no nested objects, and no output schema — the description is minimally adequate for selecting and invoking the tool. However, the lack of annotations and output schema leaves unspecified details about response shape and operational behavior. The description could be more complete without adding much length.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter, query, is fully described in the schema as a case-insensitive substring match on title, giving 100% schema description coverage. The description adds only the phrase 'filtered by title,' which does not go beyond the schema. Baseline 3 is appropriate since the schema handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and a specific resource ('Super Productivity projects'), and adds the optional title filter. It clearly distinguishes this from sibling tools like sp_list_tasks and sp_list_tags by naming the resource directly. There is no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. An agent must infer from the tool name and sibling context that this is the right tool for project listing. Explicit routing such as 'use this for projects, not tasks/tags' is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_list_tagsA
List Super Productivity tags, optionally filtered by title.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter by title, case-insensitive substring match |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only states the action and optional filter; it does not mention that this is a read-only operation, whether authentication is required, or any potential side effects. For a list tool this is a notable gap, as even minimal disclosure of non-mutation would be expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence that front-loads the action and resource, with zero superfluous words. It communicates the core functionality and the optional filter without distraction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description is adequate. It covers the key functionality and filter. However, the lack of any explicit statement about side effects or return format is a minor omission given the tool's simplicity, so it does not warrant a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a complete description of the query parameter ('Filter by title, case-insensitive substring match'), achieving 100% coverage. The description's 'optionally filtered' adds no new semantic beyond what the schema implies by the parameter being optional. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('Super Productivity tags'), and the optional filter is noted. This distinguishes it from siblings like sp_list_tasks and sp_list_projects, as the tool name and description make the resource explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool when you want a list of tags. However, it does not explicitly mention alternatives or conditions when not to use it. The context is clear but not elaborated with routing to other tools, leading to an implicit rather than explicit guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_list_tasksB
List tasks from Super Productivity, optionally filtered by title, project, tag or completion state.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filter by title, case-insensitive substring match | |
| tagId | No | Filter by tag id. Use "TODAY" for tasks scheduled for today | |
| source | No | Which task set to search (default "active") | |
| projectId | No | Filter by project id | |
| includeDone | No | Include completed tasks (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the transparency burden. It signals a read-only 'list' operation but does not state side effects explicitly, nor does it mention result shape, pagination, ordering, or the default active/non-done behavior that affects output. The schema provides defaults, but the description itself discloses almost no behavioral context beyond listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One well-structured sentence that front-loads the operation and then gives the optional filters. No filler or repetition of schema details. It earns its place while remaining minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is adequate but thin: it tells the agent what the tool does and the filter dimensions, but does not mention default source/archived semantics, includeDone behavior, or return expectations beyond 'tasks'. Since the schema covers the parameters, this is not critically incomplete, but it could be more useful for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already documented with names, types, defaults, and enum values. The description only summarizes those filters without adding any syntax, constraints, or cross-parameter behavior. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific operation (list tasks), the resource (Super Productivity), and the optional filter dimensions. It is immediately distinguishable from sibling tools like sp_get_task, sp_list_tags, or sp_list_projects. It does not name an alternative, so it stops short of the strongest sibling-aware phrasing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, exclusions, or alternative routing appears in the description. An agent must infer that this is the tool for obtaining multiple tasks and has no guidance on when sp_get_task or sp_list_tags would be more appropriate. This is effectively no usage guidance beyond the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_restore_taskA
Restore a previously archived Super Productivity task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Restore' conveys an operation, but the description does not disclose success/failure behavior, return values, idempotency, permissions, or side effects such as whether restored tasks retain their tags, projects, or timing data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with the verb and resource front-loaded, and no filler. It is concise without becoming a tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool this is near-sufficient, but because there are no annotations and no output schema, an agent gets no information about return values, error conditions, state transitions, or requirements. A little more behavioral context would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the only parameter, id, with 100% coverage and describes it as 'Task id'. The description adds no additional parameter meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Restore'), a specific resource ('Super Productivity task'), and a scope condition ('previously archived'). This clearly identifies the tool as the inverse of sp_archive_task and distinguishes it from the other task-related sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context: it should be used when an archived task needs to be brought back. However, it does not explicitly mention alternatives, exclude other states, or name sp_archive_task as the inverse operation, so the guidance remains inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_set_current_taskB
Set (or clear) the currently active task in Super Productivity.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task id to make current, or null to clear it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry behavioral disclosure. It reveals the state-changing nature and the null-to-clear behavior, but does not mention side effects such as whether setting a new current task stops the previous one, whether time tracking is affected, or what the operation returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the primary action and a compact parenthetical for the null case; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter setter this is nearly sufficient, but the lack of any note about its relationship to sp_start_task/sp_stop_current_task and the effect on time-tracking state leaves a moderate gap, especially with no annotations or output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents taskId and the null special value. The description's '(or clear)' reinforces that behavior but adds no new syntax or format information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') and a precise resource ('currently active task'), including an explicit '(or clear)' branch for the null case. It is unambiguous on its own, though it does not explicitly differentiate itself from siblings like sp_start_task or sp_get_current_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement about when to choose sp_set_current_task over siblings such as sp_start_task or sp_stop_current_task. The description only defines what the tool does, leaving the selection context to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_start_taskB
Start a task (set it as the current/active task) in Super Productivity.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It states the basic action but does not disclose potential side effects such as what happens to the previously active task, whether the operation fails if the task is already active, or whether any validation occurs. The description is a minimal restatement of the name with no additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the core action and scope. It contains zero filler and requires no restructuring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one required parameter, no output schema), the description covers the basic operation but omits usage context entirely, such as when to use it vs. siblings or any side effects. It is minimally adequate but not complete for a tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes the single 'id' parameter with 100% coverage, so the description does not need to add parameter details. The description correctly implies the id identifies the task to start, but it adds no supplementary semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a task and sets it as current/active, with a specific verb and resource. However, it does not distinguish itself from the sibling sp_set_current_task, which likely performs the same action, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus sp_set_current_task or other alternatives. The description does not mention any conditions, prerequisites, or exclusions, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_stop_current_taskA
Stop the currently active task in Super Productivity (no task remains current).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 discloses the core effect and the no-current postcondition, but it does not mention behavior when no task is active, whether the task is completed or merely paused, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and uses a parenthetical to add the essential postcondition. There is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple zero-parameter command, but it omits edge-case behavior such as what happens when no task is currently active, and it does not describe return or error semantics. With no annotations or output schema, these gaps are not filled elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so there is no parameter information for the description to add. Per the baseline for zero-parameter tools, this is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Stop') and a clear resource ('currently active task'), and the parenthetical 'no task remains current' states the postcondition. This distinguishes it from sp_start_task and sp_set_current_task, which would leave a task current.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys when to use the tool: when the currently active task should be stopped. It does not explicitly name alternatives or exclusions, but the 'no task remains current' clause implies it is not for switching to another task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sp_update_taskB
Update an existing Super Productivity task. Note: parentId and subTaskIds cannot be changed this way.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id | |
| notes | No | ||
| title | No | ||
| dueDay | No | Due date, day only, no specific time ("Termin") as YYYY-MM-DD. Use dueWithTime instead if a specific time matters. | |
| isDone | No | ||
| tagIds | No | ||
| plannedAt | No | When you plan to work on the task ("Zaplanuj"), as a timestamp in ms since epoch. | |
| projectId | No | ||
| timeSpent | No | ||
| dueWithTime | No | Due date and time ("Termin do") as a timestamp in ms since epoch. | |
| timeEstimate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'Update' and the immutability of two fields, but does not explain whether the update is partial or full, whether it returns the updated object, or any side effects. The lack of detail on mutation semantics is a significant gap for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with no waste. The constraint note is front-loaded and useful, and the overall structure is ideal for an update tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 11 parameters, no output schema, and no annotations, the description is incomplete. It fails to clarify whether unspecified fields are left unchanged or reset, what the tool returns, and any prerequisites like authentication. An agent could not fully anticipate the tool's behavior from this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 36% (4 of 11 properties have descriptions). The description adds no parameter-specific information beyond the note about parentId and subTaskIds, which are not even in the schema, potentially causing confusion. It does not compensate for the undocumented parameters, so the agent gains little clarity on parameter expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing task, using the verb 'update' with the resource 'task'. It also mentions a specific constraint about parentId and subTaskIds. However, it does not explicitly distinguish itself from sibling tools like sp_create_task or sp_delete_task, though the verb implies the intended difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a constraint (parentId and subTaskIds cannot be changed) but does not clarify when to use this tool over alternatives. There is no explicit 'use this when' guidance, though the purpose implies it's for modifying existing tasks. The note is a usage caveat rather than a full guideline.
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.
15 tool updates
v1.0.0- First observed
sp_archive_task - First observed
sp_create_task - First observed
sp_delete_task - First observed
sp_get_current_task - First observed
sp_get_status - First observed
sp_get_task - First observed
sp_health - First observed
sp_list_projects - First observed
sp_list_tags - First observed
sp_list_tasks - First observed
sp_restore_task - First observed
sp_set_current_task - First observed
sp_start_task - First observed
sp_stop_current_task - First observed
sp_update_task
TDQS
Scored across 15 tools
Tools are mostly distinct, but start_task and set_current_task have overlapping functionality; descriptions clarify their purposes.
Most tools follow the 'sp_verb_noun' pattern, but 'sp_health' deviates from this convention, which is a minor inconsistency.
15 tools is appropriate for a task management server, covering CRUD, workflow actions, and auxiliary features without being excessive.
Tasks are comprehensively covered, but tags and projects only have list operations, missing create/update/delete for those entities.
Maintenance
Related MCP Connectors
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Local-first task manager: create, edit, and complete tasks, projects, and checklists via MCP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceBridge between Super Productivity app and MCP servers, allowing Claude Desktop to directly interact with Super Productivity for task management, project organization, and information retrieval.120MIT
- AlicenseAqualityFmaintenanceEnables Claude to interact with Super Productivity's local REST API for task, project, and tag management, including CRUD operations, status checks, and daily planning prompts.1790MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that connects AI assistants to Super Productivity for managing tasks, projects, and tags. Supports quick capture, batch triage, and full planning sessions through natural language.9085MIT
- AlicenseBqualityCmaintenanceEnables interaction with Super Productivity's local REST API to manage tasks, projects, and time tracking through natural language.1590MIT