mcp-kaneo
Click on "Install 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., "@mcp-kaneocreate a task called 'Update API docs' with medium priority"
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.
mcp-kaneo
MCP server for Kaneo task management API. Lets your AI coding assistant manage tasks, projects, labels, and comments in Kaneo.
Features
Tasks: Create, read, update, delete tasks
Projects: List and manage projects
Labels: Create, update, delete labels; attach/detach from tasks
Comments: Add and list comments on tasks
Search: Search tasks, projects, and workspaces
Workspaces: List workspaces and organizations
Task Relations: Create subtask relations (links to Kaneo's native subtasks)
Related MCP server: Kanboard MCP Server
Requirements
Installation
Using npx (recommended)
npx @fastman/mcp-kaneoUsing npm
npm install -g @fastman/mcp-kaneo
npx @fastman/mcp-kaneoConfiguration
Environment Variables
Variable | Required | Description |
| Yes | Kaneo API URL (e.g., |
| Yes | Kaneo API token |
| No | Comma-separated toolset names (default: |
Toolsets
The server organizes tools into groups. By default only the core toolset is registered, keeping context size minimal.
Toolset | Tools | Description |
| 11 | Task lifecycle, listing, search, subtasks |
| 14 | Labels, comments, task relations |
| 7 | Workspace and project CRUD |
| 6 | Field-specific task update tools (deprecated) |
Configuration examples:
# Default: core only (11 tools)
npx @fastman/mcp-kaneo
# Core + labels and comments
KANEO_TOOLSETS=core,collaboration npx @fastman/mcp-kaneo
# All non-legacy tools
KANEO_TOOLSETS=all npx @fastman/mcp-kaneo
# Everything including legacy field-specific updates
KANEO_TOOLSETS=all,legacy npx @fastman/mcp-kaneoThe all alias expands to core,collaboration,admin (excludes legacy).
Codex
Add the server with the Codex CLI:
codex mcp add kaneo \
--env KANEO_BASE_URL=https://your-kaneo-instance.com/api \
--env KANEO_TOKEN=your-token \
-- npx -y @fastman/mcp-kaneoThis stores the environment values in Codex's configuration. To keep the token
out of the configuration file, export the variables before starting Codex and
add the following to ~/.codex/config.toml (or .codex/config.toml in a trusted
project):
[mcp_servers.kaneo]
command = "npx"
args = ["-y", "@fastman/mcp-kaneo"]
env_vars = ["KANEO_BASE_URL", "KANEO_TOKEN", "KANEO_TOOLSETS"]For local development, build the project and replace the command and arguments:
[mcp_servers.kaneo]
command = "node"
args = ["/absolute/path/to/mcp-kaneo/dist/index.js"]
env_vars = ["KANEO_BASE_URL", "KANEO_TOKEN", "KANEO_TOOLSETS"]Run codex mcp list to verify the configuration. In the Codex terminal UI, use
/mcp to confirm that the server is active and its tools are available.
OpenCode
Add to your ~/.config/opencode/opencode.json:
{
"mcp": {
"kaneo": {
"type": "local",
"command": ["npx", "-y", "@fastman/mcp-kaneo"],
"environment": {
"KANEO_BASE_URL": "https://your-kaneo-instance.com/api",
"KANEO_TOKEN": "${KANEO_TOKEN}"
}
}
}
}Or for local development:
{
"mcp": {
"kaneo": {
"type": "local",
"command": ["node", "/path/to/mcp-kaneo/dist/index.js"],
"environment": {
"KANEO_BASE_URL": "https://your-kaneo-instance.com/api",
"KANEO_TOKEN": "your-token"
}
}
}
}Claude Code
claude mcp add kaneo --scope user npx @fastman/mcp-kaneoCline
Add to your MCP settings:
{
"mcpServers": {
"kaneo": {
"command": "npx",
"args": ["-y", "@fastman/mcp-kaneo"]
}
}
}Cursor
Go to Cursor Settings → MCP → New MCP Server:
{
"command": "npx",
"args": ["-y", "@fastman/mcp-kaneo"]
}Tools
Core (default)
list_workspaces- List all accessible workspaceslist_projects- List projects in a workspacelist_columns- List columns in a projectlist_tasks- List tasks in a project with columns and paginationsearch- Search tasks, projects, or commentsget_task- Get task detailscreate_task- Create a new taskupdate_task- Update one or more task fields (partial update)delete_task- Delete a taskcreate_subtask- Create a subtask linked to a parent (inherits parent status by default)list_subtasks- List subtasks for a parent task
Collaboration (KANEO_TOOLSETS=collaboration)
list_labels- List workspace labelscreate_label- Create a new labelupdate_label- Update label name/colordelete_label- Delete a labelattach_label- Attach label to taskdetach_label- Detach label from tasklist_task_labels- List labels on a taskadd_comment- Add comment to tasklist_comments- List comments on taskedit_comment- Edit a commentdelete_comment- Delete a commentcreate_task_relation- Create a relation between taskslist_task_relations- List all relations for a taskdelete_task_relation- Delete a task relation
Admin (KANEO_TOOLSETS=admin)
get_workspace- Get workspace detailsupdate_workspace- Update a workspacedelete_workspace- Delete a workspaceget_project- Get project detailscreate_project- Create a new projectupdate_project- Update a projectdelete_project- Delete a project
Legacy (KANEO_TOOLSETS=legacy)
Field-specific task update tools preserved for migration. Use update_task instead.
update_task_title- Update task titleupdate_task_description- Update task descriptionupdate_task_status- Update task statusupdate_task_priority- Update task priorityupdate_task_assignee- Update task assigneeupdate_task_due_date- Update task due date
Usage Examples
Create a task
Create a task in kaneo called "Fix login bug" with high priorityUpdate multiple fields
Update task #123: set priority to urgent and move to in-progressCreate a subtask
Create a subtask "Fix the login validation" for parent task #123List subtasks
List all subtasks for task #123Add a label (requires collaboration toolset)
Create a label called "bug" with color #ef4444 and attach it to the taskUpdate task status
Move the task "Fix login bug" to in-progressDevelopment
# Install dependencies
npm install
# Build
npm run build
# Test
npm test
# Run locally
npm startLicense
MIT
Available Tools
11 toolscreate_subtaskA
Create a subtask linked to a parent. Status inherits from parent unless specified.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Subtask title | |
| status | No | Column slug (defaults to parent status) | |
| priority | No | Task priority | |
| description | No | Subtask description | |
| parentTaskId | Yes | Parent task ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does disclose the key inheritance behavior ('Status inherits from parent unless specified'), which is useful, but it omits other behavioral context such as expected response, permission requirements, or side effects beyond creation.
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, focused sentence that front-loads the core action and relationship. Every word adds value, and there is no unnecessary elaboration.
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 low-complexity create tool with fully documented schema parameters, the description is nearly complete. It clarifies the parent-child relationship and the status inheritance nuance. It could be more explicit about how this differs from create_task, but the core usage context is adequately covered.
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 the baseline is 3. The description adds no parameter-level detail beyond what the schema already documents; the inheritance behavior is also reflected in the status property description.
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 ('Create') with a clear resource ('subtask') and a distinguishing relational constraint ('linked to a parent'). This differentiates it from sibling tools like create_task, which could otherwise be ambiguous.
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 when to use the tool: when creating a subtask rather than a standalone task. It does not explicitly name alternatives or state when not to use it, so the guidance is more implied than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskB
Create a new task in a project
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Task title | |
| status | Yes | Column slug (e.g., "to-do", "in-progress", "done") | |
| priority | Yes | Task priority | |
| projectId | Yes | Project ID | |
| description | Yes | Task description (markdown supported) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for disclosing behavior. It says the tool creates a new task, but says nothing about side effects, return values, validation requirements, or whether the project must already exist. This is a minimal disclosure with no added behavioral context beyond the operation itself.
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 zero filler, front-loading the core operation ('Create a new task') and the scope ('in a project'). Every word earns its place in the description.
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 overly sparse. It does not explain what happens after creation (e.g., whether the created task is returned, how errors surface), nor does it mention the need for an existing projectId or how to find one. The schema covers inputs, but behavioral and sequencing context is missing.
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 the baseline is 3; the schema already documents all five parameters, including markdown support for description and the status column slug format. The description adds no parameter-level meaning, which is acceptable given the schema's completeness.
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 ('Create') and resource ('a new task in a project') with no ambiguity. It clearly distinguishes from sibling tools like update_task, delete_task, and especially create_subtask, which is the only other creation tool and targets a different resource (subtask).
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 obvious use case — creating a task — but provides no explicit guidance on when to choose this over alternatives, nor any exclusion such as 'for subtasks use create_subtask'. Sibling names make the purpose inferable, but the text itself does not state prerequisites like needing to obtain projectId via list_projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_taskC
Delete a task
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only repeats the obvious destructive implication of 'Delete' and omits critical side effects such as whether subtasks are cascaded, whether deletion is permanent or recoverable, and whether special permissions are required.
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 at three words with no waste, but it is under-specified rather than efficiently informative. It lacks any structured caveats or elaboration that would make the brevity genuinely useful.
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 destructive operation with no output schema and no annotations, the description leaves unresolved critical details: return behavior, error handling, and the effect on related subtasks. This is a meaningful gap for an agent deciding whether and how to invoke the tool.
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 taskId with a clear description ('Task ID to delete') at 100% coverage. The tool description adds no additional semantic detail, so the baseline score of 3 applies since the schema does the heavy lifting.
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?
Description states a specific verb 'Delete' and resource 'task', which clearly distinguishes it from all sibling tools that perform create, update, list, get, or search operations. It is brief but unambiguous 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?
No guidance is provided about when to use this tool vs alternatives, nor about prerequisites, irreversibility, or cases where a different tool (like update_task) would be more appropriate. The usage context is left entirely to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskB
Get details of a specific task
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | 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 behavioral disclosure, yet it only states the basic action. It does not mention that this is a read-only operation, what happens if the taskId is not found, or what format the returned details take.
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, immediately clear sentence with no unnecessary words. It is appropriately concise for a simple getter tool and front-loads the core purpose.
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 tool without an output schema, the description is minimally adequate. However, it does not explain what 'details' includes or what the response looks like, leaving some ambiguity for an agent invoking the tool.
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 the parameter taskId is already documented. The description adds no extra semantic context beyond implying the taskId identifies the specific task, which is adequately covered by 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 verb 'Get' and the resource 'task', indicating retrieval of a single task's details. It distinguishes from list_tasks by emphasizing 'a specific task', though it does not explicitly name sibling alternatives.
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 about when to use this tool versus list_tasks or search. The description implies it is for retrieving a task by ID, but does not state that you should first obtain the taskId from a listing tool or when a user asks about a single task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_columnsA
List all columns in a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project ID |
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' implies a read-only, non-destructive operation, and 'all' signals that no filtering is applied, but the description does not mention pagination, ordering, authentication requirements, or error behavior. These are meaningful gaps for a standalone read tool.
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 repeated information, fluff, or unnecessary detail. Every word contributes to the meaning.
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?
The tool is low-complexity with one required parameter and no output schema, and the description plus schema give the essential call shape. However, the absence of an output schema and any mention of return value structure or list behavior leaves some ambiguity for an agent. It is adequate but not complete.
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% because projectId is documented as 'Project ID'. The description adds the phrase 'in a project', which lightly reinforces the link between the parameter and the operation, but it does not add meaningful semantics beyond what the schema already provides.
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 ('List'), a specific resource ('columns'), and a clear scope ('in a project'). It is immediately distinguishable from sibling tools like list_projects, list_tasks, and list_subtasks because it names a distinct resource and scope.
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 intended use is implied by the phrasing 'List all columns in a project' — an agent can infer it is the right tool when it needs all columns for a project. However, it does not explicitly state when to prefer this over alternatives or mention any exclusions, so it stays at the implied-usage level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsB
List all projects in a workspace
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | Yes | Workspace ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It indicates a read-only listing operation by using 'List,' but it adds little beyond the tool name: no mention of authentication needs, pagination, return format, or filtering behavior. The only new behavioral context is the workspace scoping.
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, focused sentence with no redundant words. It front-loads the action and scope. For a tool with one parameter, this level of brevity is appropriate and efficient.
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?
The tool is simple, the schema covers the only parameter, and the description states the core purpose. However, with no output schema and no annotations, the description does not disclose return shape, pagination, or access requirements. It is minimally adequate but leaves several practical details unspecified for an autonomous agent.
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%, and the workspaceId parameter already has a description in the schema. The tool description itself adds no parameter-level detail. Given the high schema coverage, a 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 a specific verb and resource: 'List all projects in a workspace.' It conveys the operation and scope without ambiguity. It does not explicitly distinguish itself from sibling list tools like list_tasks or list_workspaces, but the resource name makes the target clear.
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 phrase 'in a workspace' implies the tool should be used when a workspace context and project listing are needed. However, there is no explicit guidance about when to use this tool instead of alternatives such as list_tasks or list_columns, and no exclusions or prerequisites are described beyond the required workspaceId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subtasksB
List subtasks of a parent task
| Name | Required | Description | Default |
|---|---|---|---|
| parentTaskId | Yes | Parent 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 behavioral disclosure burden. It only states 'List subtasks' without explaining whether nested/direct subtasks are returned, how results are ordered, whether pagination applies, or any authorization implications.
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 with no filler and front-loaded verb and resource. It loses points only because it omits contextual details that would make it more useful, though conciseness itself is strong.
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 list operation, the description plus schema is minimally sufficient to call the tool correctly. However, without annotations or an output schema, it would benefit from clarifying whether subtasks are returned recursively and what the response contains, leaving some uncertainty.
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%, with parentTaskId described as 'Parent task ID'. The tool description adds no additional meaning beyond that, so the baseline of 3 applies because the schema already handles parameter documentation.
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 and resource: 'List subtasks of a parent task'. It clearly identifies the operation and scope, distinguishing it from siblings like list_tasks, get_task, and create_subtask by focusing on the parent-child relationship.
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 use this tool versus alternatives. It does not mention when to choose list_subtasks over list_tasks or search, and it gives no exclusions or context about the parentTaskId requirement beyond the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksB
List tasks in a project with columns and pagination
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project ID |
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. It does disclose that results include columns and pagination, which is useful, but it does not explicitly state read-only behavior, default ordering, limits, or how pagination is controlled. The name 'list' suggests a non-mutating operation, so this is acceptable but not fully transparent.
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 filler words. It immediately states the action, resource, and scope, and then mentions the relevant output characteristics. Every word contributes useful information.
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 one-parameter list tool with no output schema, the description gives enough to call it correctly: list tasks for a project, with columns and pagination. It does not detail return fields or pagination mechanics, but those are reasonable to discover from the response. Minor ambiguity around 'columns' prevents a higher 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?
Schema description coverage is 100%, so the single parameter projectId is already adequately documented in the schema as 'Project ID'. The description adds no additional meaning or constraints about the parameter, so it does not improve on 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 identifies the action (list) and resource (tasks in a project), which distinguishes it from siblings like list_workspaces, list_projects, and get_task. The phrase 'with columns and pagination' hints at the response shape but is somewhat ambiguous about whether columns are returned as data or used as grouping.
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 given about when to use this tool versus alternatives such as search, list_subtasks, or get_task. The description implies it is for listing tasks within a project, but does not state exclusions or direct the agent to a more appropriate sibling for filtered or detailed queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesA
List all accessible workspaces
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | No | Filter by workspace ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does disclose that only accessible workspaces are returned, which is useful, but it omits other behavioral traits such as pagination, ordering, result shape, or authorization assumptions.
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 filler. Every word contributes to understanding the tool's purpose and scope.
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?
The tool is simple and the description covers the core purpose, but there is no output schema and no annotations to explain return values or behavior. The optional filter is documented in the schema but the description does not clarify how it interacts with 'all accessible workspaces'.
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 covers the single parameter workspaceId with a clear description, so the baseline is 3. The tool description adds no additional meaning about how filtering behaves, such as whether it is exact match or prefix match.
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 ('List') and resource ('workspaces') and adds the scope 'all accessible', which makes the tool's purpose unambiguous. The resource name also differentiates it from sibling list tools such as list_projects, list_columns, and list_tasks.
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 explicit guidance about when to use this tool versus alternatives, and does not mention the optional workspaceId filter or when filtering would be appropriate. Usage must be inferred entirely from the verb and resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchC
Search tasks, projects, or comments
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by type | |
| limit | No | Max results (default 20) | |
| query | Yes | Search query | |
| projectId | No | Filter by project | |
| workspaceId | No | Filter by workspace |
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 of behavioral disclosure. It only says 'Search' and does not describe whether the operation is read-only, which fields are searched, how filters combine, or what the response contains.
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 filler, which is economical. However, it is so minimal that it does not carry enough useful information for a tool with five parameters and no output schema.
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?
With five parameters, no output schema, and no annotations, the definition is incomplete. Missing details include the result shape, whether results are tasks/projects/comments records or something else, default type behavior, and how projectId and workspaceId interact with the type filter.
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%, and each parameter already has a meaningful description. The tool description adds no additional parameter context, but the schema alone suffices for understanding query, type, limit, projectId, and workspaceId.
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 ('Search') and names several resources, which distinguishes it from sibling list tools. However, it omits workspaces and activities even though the schema supports them, and it is unclear whether it returns matching items or just summaries.
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 explicit guidance about when to use this tool versus the sibling list_* and get_* tools. An agent has to infer that search is for ad hoc queries, so the description does not help route correctly in ambiguous cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskA
Update one or more task fields (partial update). Provide at least one update field.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title | |
| status | No | New column slug | |
| taskId | Yes | Task ID | |
| userId | No | Assignee user ID (null to unassign) | |
| dueDate | No | Due date (ISO 8601) | |
| priority | No | New priority | |
| description | No | New description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Partial update' discloses that unspecified fields remain unchanged, and 'one or more' indicates multi-field updates are allowed. But it does not mention side effects, error behavior for invalid taskId, permissions, or what the response contains, leaving notable gaps.
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 two short sentences with no filler. The core behavior is front-loaded in the first sentence, and the usage constraint in the second sentence is immediately actionable.
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 7-parameter mutation tool with no output schema and no annotations, the description covers the essential partial-update contract but omits details like return value, behavior when taskId does not exist, and whether status must reference an existing column. It is adequate for basic invocation but not fully complete.
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 baseline is 3. The description adds meaningful semantic value by explicitly requiring at least one update field, which is not encoded as a formal schema constraint and is important for correct invocation. It also clarifies that the optional fields are individually updatable.
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 ('Update'), resource ('task'), and scope ('one or more task fields'), with 'partial update' clarifying PATCH-like semantics. It does not explicitly differentiate from sibling tools like create_task or delete_task, but the update semantics are clear 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 phrase 'Provide at least one update field' gives a concrete precondition for invoking the tool. However, it does not explicitly say when to prefer this over create_task/delete_task or state that the task must already exist, so usage context is mostly implied rather than fully specified.
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.
11 tool updates
v1.0.0- First observed
create_subtask - First observed
create_task - First observed
delete_task - First observed
get_task - First observed
list_columns - First observed
list_projects - First observed
list_subtasks - First observed
list_tasks - First observed
list_workspaces - First observed
search - First observed
update_task
TDQS
Scored across 11 tools
Most tools have a clear resource+action split, and task CRUD operations are distinct. The only real ambiguity is between list_tasks and list_subtasks, since it is not stated whether project-level task listing includes subtasks.
All tool names use snake_case with consistent list_/get_/create_/update_/delete_ prefixes. 'search' is the only bare verb, but it is a conventional and easily understood exception.
Eleven tools is well-scoped for a task-management server: it covers hierarchy traversal, task CRUD, subtask operations, and search without unnecessary duplication.
The task lifecycle is complete with create, read, update, and delete, and the listing/search tools cover common lookup needs. The main gaps are the lack of explicit subtask update/delete operations and no create/update/delete for projects or columns, though these may be workable or out of scope.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
MCP server for Linear project management and issue tracking
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA minimal MCP server that enables AI assistants to manage a kanban issue board. It provides tools for listing, creating, updating, and deleting issues with support for both local development and team deployments.10-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that exposes Kanboard API functionality to Large Language Models (LLMs), enabling AI assistants to interact with Kanboard project management system.2MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for kanban-tui, a terminal-based task manager, that exposes task, board, and column management commands for AI agents to interact with.280MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to manage tasks, boards, lists, and comments on a Kanban-style project management system through JSON-RPC methods.42AGPL 3.0