planka-mcp
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., "@planka-mcpWork through my task queue"
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.
planka-mcp
An MCP server that lets an AI agent autonomously pick up and complete work on a Planka board.
It is not a wrapper around the Planka REST API. The tool surface is shaped around what an autonomous worker actually does — find ready work, claim it, report on it — and the guardrails are enforced in code, not in prompt text.
Vocabulary
The tools speak your words, not Planka's schema:
You say | Planka calls it | What it is |
board | project | the container (a tab strip) |
project | board | the tab you actually work in: lists, cards, members |
task | card | one piece of work |
Related MCP server: kanban-mcp
What the agent sees
Doing work
Tool | Purpose |
| Pre-filtered queue of genuinely ready work, most urgent first |
| Search every project — other people's work included — by text, assignee, status, label or overdue. A person's results cover task assignment, checklist items and comment mentions |
| Atomic claim; |
| Full detail of a chosen task |
|
|
| Report output, context, deliverables |
Shaping work
Tool | Purpose |
| File and refine work: title, description, deadline, kind, target column |
| Add steps, tick, reopen, assign items to people, link dependencies |
| Change priority/size (both are labels in Planka) |
| Move to any list, including stages outside the status flow, or to another project |
Structure
Tool | Purpose |
| Discover containers, tabs, and your role on each |
| The container: create, rename, describe, hide, favourite |
| New tab with workflow lists (names, or |
| Clone a project's columns with their exact types, plus labels and members — never cards |
| Columns: name, type, colour, reorder; retire via |
| Create, rename, delete-if-unused |
People
Tool | Purpose |
| What this server may do, and under what ceiling |
| Project members with roles, or the whole directory |
| Put people on a task, adding them to the project first |
| Add, re-role ( |
| Work handed over in a comment but never actually assigned |
| Instance roles, board managers, API key minting and revocation — off unless enabled |
Plus one prompt, “Work through my task queue”, as a one-click entry point.
Roles
Planka 2.4.1 has two role axes, and the swagger documents neither correctly:
instance role (admin, projectOwner, boardUser, guestOnly) and board
membership role (editor, worker, guest). This server folds them into one
effective role per project:
Condition | Effective role | Can |
instance |
| everything, incl. membership |
board membership |
| work, author, assign, structure |
board membership |
| work on tasks; no structure, no assigning others |
|
| read only |
PLANKA_ACT_AS=worker|editor|admin lowers that ceiling but never raises it — one
admin credential can still run a deliberately limited agent. Every refusal names
the role, where it came from, and what was attempted.
How Planka concepts are mapped
Planka has no status, priority or effort field, so the server derives them:
Status = which list the card is in. List names are matched by heuristic (
backlog/todo/ready→todo,doing/in progress/wip→in_progress,review/qa→review,done/closed→done). Lists of typewaiting/inactive, and Planka's own system lists, are outside the flow; typeclosedcounts as done. Override the mapping withPLANKA_STATUS_LISTS(see.env.example).Priority comes from label conventions (
p0/urgent/critical→ urgent,p1/high,p2/medium,p3/low), defaulting to medium.Effort comes from size labels (
size: M,small,XL) or point labels (sp: 3), falling back to the subtask count.Dependencies come from checklist tasks that link to another card (
linkedCardId). Reported aswaiting_oninget_task; only used as a filter whenPLANKA_REQUIRE_DEPS_MET=true.
What counts as actionable
A card is returned by list_actionable_tasks when all of these hold:
it sits in a list mapped to
todo, and that list is of typeactive;the card is not closed;
it has no assignees, or the agent's own account is one of them;
it is on a
projectboard —libraryandcollectionboards hold documents, not work (PLANKA_BOARD_TYPES);its board is inside
PLANKA_BOARD_IDS, when that allowlist is set.
Two further filters exist but are off by default: PLANKA_BLOCKED_LABELS
(hide cards carrying e.g. a blocked label) and PLANKA_REQUIRE_DEPS_MET
(hide cards whose linked dependency cards are unfinished).
How claiming is made safe
Planka has no compare-and-swap on card fields, but card assignment is a unique
row (cardId + userId), and the API answers 409 when it already exists. So:
read the card fresh; if someone else is assigned →
already_taken;POSTthe assignment —200= claimed,409= you already held it (idempotent, so a retried call is harmless);re-read and compare assignment timestamps; if another worker's row is older, the server removes its own row and reports
already_taken.
Caveat, stated plainly: step 1→2 is a read-then-write. Two different
accounts writing inside the same few milliseconds are resolved by the step-3
reconcile, not prevented outright. Two runs of the same agent account cannot
double-claim — the 409 makes that path genuinely atomic.
Guardrails enforced in code
Nothing that holds work is deleted.
delete_listrefuses a list containing cards;manage_labelsrefuses a label still on a card; there is no tool to delete a task, comment, project or board. Retiring a stage is a type change toinactive, which is reversible.Credentials are handled explicitly. Minting an API key requires
PLANKA_ALLOW_USER_ADMIN=trueplus an instance-admin account, reports whether it replaced an existing key, and refuses to touch the key this server is itself authenticating with.Other people's work is untouchable. Editing, moving, relabelling or releasing a task claimed by someone else is refused.
Claims are only ever for yourself.
claim_task/release_tasktake no user parameter; assigning others is a separate, higher-privileged tool.Role is checked per project, per action, and a refusal explains why.
Escalation is blocked.
admin_manage_personis off unlessPLANKA_ALLOW_USER_ADMIN=true, and even then it will not change its own account's role, grant instanceadmin, or create an account (that needs a password, which this server never handles).set_project_memberswill not remove its own access.Status transitions are validated;
doneis terminal unlessPLANKA_ALLOW_REOPEN=true.add_resulttakes an idempotency key, so a retry cannot double-post.attach_linkacceptshttp/httpsonly.PLANKA_BOARD_IDShard-scopes every tool to specific projects.
Tests
.venv/bin/python -m pytest tests -q79 offline tests run against an in-memory fake that reproduces Planka's
semantics — assignment unique on card+user with 409 on re-insert, cards in a
closed list finished by the server, board role separate from instance role.
They cover: claim → idempotent re-claim → lost-race rollback; illegal
transitions and done terminality; ownership checks on status/result/release/
edit/move; the board allowlist; role folding across both axes and the
PLANKA_ACT_AS cap; worker-vs-editor-vs-admin gating; the assign-and-add-as-
worker flow with ambiguity refusal; refusal to delete non-empty lists or in-use
labels; refusal to self-remove or self-promote.
Setup
Nothing to install or clone. Add this to your MCP client config, fill in three values, restart:
{
"mcpServers": {
"planka": {
"command": "uvx",
"args": ["--refresh-package", "planka-mcp", "--from", "https://github.com/KT-SPARKS/planka-mcp/releases/latest/download/planka_mcp-latest.tar.gz", "planka-mcp"],
"env": {
"PLANKA_BASE_URL": "https://planka.example.com",
"PLANKA_EMAIL": "you@example.com",
"PLANKA_PASSWORD": "your-password"
}
}
}
}That URL always resolves to the newest release, and --refresh-package makes
uv check for a new build on every launch — so restarting your client is the
whole update process. Drop the flag and you stay on whatever version you first
downloaded, because uv caches by URL.
Prefer an API key over a password (Planka: user settings → API key):
"env": {
"PLANKA_BASE_URL": "https://planka.example.com",
"PLANKA_API_KEY": "your-api-key"
}Claude Code, one line:
claude mcp add planka --env PLANKA_BASE_URL=https://planka.example.com --env PLANKA_API_KEY=your-api-key -- uvx --refresh-package planka-mcp --from https://github.com/KT-SPARKS/planka-mcp/releases/latest/download/planka_mcp-latest.tar.gz planka-mcpTo pin a version instead, point at that release's wheel and drop the refresh flag:
"args": ["--from", "https://github.com/KT-SPARKS/planka-mcp/releases/download/v0.3.0/planka_mcp-0.3.0-py3-none-any.whl", "planka-mcp"]That is the whole setup. Everything below is optional.
Two things trip up the Windows desktop app:
uvxnot found — the app spawns the command directly, so give the full path, with doubled backslashes:"command": "C:\\Users\\You\\AppData\\Local\\hermes\\bin\\uvx.exe". Find it withwhere uvx.Git executable not found— anenvblock replaces the process environment, so agit+https://...source cannot run git. The release URLs above need no git and avoid this entirely. If you do want to install from source on Windows, add"PATH"to theenvblock.
Config lives at %APPDATA%\Claude\claude_desktop_config.json. Quit from the
tray icon and reopen — closing the window does not restart the app.
The setup above gives the agent whatever the account can do. To narrow it:
"env": {
"PLANKA_BASE_URL": "https://planka.example.com",
"PLANKA_API_KEY": "your-api-key",
"PLANKA_BOARD_IDS": "1234567890123456789",
"PLANKA_ACT_AS": "worker"
}PLANKA_BOARD_IDS— every tool refuses anything outside these projects.PLANKA_ACT_AS— ceiling ofguest,worker,editororadmin, applied on top of the account's real rights.
Better still, create a dedicated Planka user for the agent, add it to just the
boards it should touch as a worker, and use its API key — rather than pointing
this at an admin account.
From source (needs git available to the process):
uvx --from git+https://github.com/KT-SPARKS/planka-mcp planka-mcpFor development:
git clone https://github.com/KT-SPARKS/planka-mcp.git
cd planka-mcp
uv venv && uv pip install -e .
cp .env.example .env # only read in this mode
.venv/bin/planka-mcpFull configuration reference — every environment variable, status mapping, HTTP transport — is in docs/configuration.md. Coverage map — every Planka endpoint and field, exposed or not and why — is in docs/api-coverage.md.
Notes on the live API
Developed and verified against Planka 2.4.1, whose published swagger (2.0.1) lags the server in several places — different role names, different list types, undocumented routes. Everything learned from the live instance — spec drift, permission rules, the private→shared conversion, the claim/CAS semantics, the Cloudflare WAF gotcha — is written up in docs/planka-api-notes.md.
Errors from Planka are returned to the model as clean
{"ok": false, "error": "..."} results rather than raised as exceptions.
Available Tools
33 toolsadd_commentA
Leave a comment on a task - a question, a blocker, or progress context for
the humans watching the board. Use add_result for the actual deliverable.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Comment body, plain text or markdown. | |
| task_id | Yes | Task id to comment on. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds the audience nuance ('for the humans watching the board') but does not disclose additional behaviors like notification, permissions, or whether comments append or replace. Thus, it meets the basic bar but adds limited behavioral detail.
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 sentences, front-loaded with the verb and resource, and every phrase serves a purpose. It efficiently communicates the tool's purpose and the key alternative without wasteful text.
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 simple parameter set (2 required parms, fully documented), the presence of an output schema, and clear annotations, the description is complete. It explains the purpose, audience, and relevant alternative tool, leaving no critical gaps for an agent to invoke it 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?
Schema description coverage is 100%, so the schema already fully documents both task_id and text. The description does not add any extra parameter meaning beyond what the schema provides, so the 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 tool's function: 'Leave a comment on a task.' It specifies the content types ('a question, a blocker, or progress context') and distinguishes from the sibling tool add_result by directing users to use that for actual deliverables.
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 explicitly says 'Use add_result for the actual deliverable,' providing a clear when-not-to-use and naming the alternative. It also gives context for when to use: to leave qualitative updates for humans watching the board.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_resultA
Attach your output to a task: what you did, what you produced, where it lives. Post this before moving the task to done, so the work is auditable. Requires that you hold the claim.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | What you produced: summary, links, file paths, findings. | |
| task_id | Yes | Task id you hold a claim on. | |
| idempotency_key | No | Optional key. Re-posting with the same key is a no-op, so a retried call cannot duplicate the result. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-destructive write (readOnlyHint=false, destructiveHint=false). The description adds valuable behavioral context: the requirement to hold the claim and the workflow timing for auditability. It could mention error behavior if the claim isn't held, but this is adequate.
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?
Two sentences with no filler. The first sentence front-loads the core purpose, the second adds crucial timing and prerequisite information. Every word earns its place.
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 a simple scope, annotations, and full schema coverage, the description covers purpose, timing, and prerequisites. The presence of an output schema mitigates the need to describe return values. It could have briefly mentioned idempotency, but the schema already handles that.
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 well-documented. The description's mention of 'what you did, what you produced, where it lives' reinforces the note parameter but doesn't add new semantic details beyond schema. No additional meaning for task_id or idempotency_key is provided.
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's action: 'Attach your output to a task' with specifics about content ('what you did, what you produced, where it lives'). This distinguishes it from sibling add_comment by focusing on work output rather than general commentary.
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?
Provides explicit timing ('Post this before moving the task to done') and a prerequisite ('Requires that you hold the claim'). Does not explicitly name alternatives, but the strong contextual guidance makes appropriate usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admin_manage_personA
Instance-level administration: change someone's instance role, make someone
a manager of a board, or mint and revoke API keys. Off unless the operator
sets PLANKA_ALLOW_USER_ADMIN, and this server will never raise its own
account's role or hand out admin.
create_api_key returns the key once - Planka cannot show it again, and
it replaces any key that account already had, breaking whatever was using it.
A key is a long-lived credential that acts as that person, and the value will
pass through this conversation and any transcript of it, so treat the output
as a secret and hand it over out of band. revoke_api_key clears one.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Display name for create_person. | |
| No | Email for create_person. | ||
| action | Yes | set_instance_role | add_board_manager | create_api_key | revoke_api_key | create_person. | |
| person | No | Existing person (name, email or id) for set_instance_role and add_board_manager. | |
| board_id | No | Board (container) id for add_board_manager. | |
| instance_role | No | admin | projectOwner | boardUser | guestOnly. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations: it warns that create_api_key returns the key only once, replaces any existing key, and should be treated as a secret. It also states the server will never elevate its own role or grant admin. These are critical behavioral disclosures that the annotations (readOnlyHint false, destructiveHint false) do not capture.
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 well-organized: a one-sentence purpose statement, a context condition, and then focused security notes. It is detailed but every sentence serves a purpose, with no filler or repetition.
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 description covers most actions but omits create_person, which appears in the action enum. For a tool with five distinct actions, one significant action being unmentioned is a notable gap. The output schema exists, so return-value documentation is not required, but the missing action limits 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?
Schema coverage is 100%, so the baseline is 3. The description enriches parameter understanding by explaining the consequences of actions (e.g., create_api_key breaks existing keys) and the admin restriction, which adds meaning beyond the schema field descriptions. This justifies a 4.
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 opens with 'Instance-level administration' and lists specific actions: change roles, add board managers, mint/revoke API keys. This clearly identifies the tool's resource (people) and scope (instance-level), distinguishing it from project-level siblings like set_project_members.
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 explicitly notes the tool is disabled unless PLANKA_ALLOW_USER_ADMIN is set, providing a clear precondition. It implies use for instance-level tasks rather than project-level alternatives, but does not explicitly name any alternative tool or give when-not-to-use guidance, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_peopleA
Assign people to a task, adding them to the project first if they are not members yet. Each name is resolved against the project's members and the user directory; an ambiguous name is reported rather than guessed. Granting project membership needs membership rights, so a worker can assign existing members but cannot pull new people onto the project.
| Name | Required | Description | Default |
|---|---|---|---|
| people | Yes | Names, emails or ids, e.g. ['Ada', 'grace@example.com']. | |
| task_id | Yes | Task to put people on. | |
| add_to_project_as | No | Board role to grant if someone is not yet a member of the project: worker (default), editor or guest. | worker |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses several non-obvious behaviors: the side effect of adding non-members to the project, name resolution rules ('resolved against the project's members and the user directory'), the error policy for ambiguous names ('reported rather than guessed'), and permission requirements for granting membership. This far exceeds the annotation hints (readOnlyHint: false, openWorldHint: true, destructiveHint: false) and provides valuable transparency.
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 three sentences long, with the main action front-loaded. Every sentence provides essential information: the core function, the resolution/ambiguity behavior, and the permission constraint. There is no fluff or repetition of schema content.
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's complexity (side effects, permission edge cases, name resolution), the description covers all critical aspects: what it does, when adding to project happens, how names are handled, and authorization limits. An output schema exists, so the return format is already documented. No significant missing context.
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 meaning beyond the schema by explaining how the 'people' parameter is resolved ('Each name is resolved against the project's members and the user directory') and that ambiguous names are not guessed. This clarifies the interpretation of string inputs beyond the schema's simple list of name/email/id examples.
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 primary action 'Assign people to a task' and the resource, with an added condition 'adding them to the project first if they are not members yet'. It also distinguishes itself from siblings like unassign_people and set_project_members by explaining its unique behavior of auto-adding members.
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 clear context on when to use the tool (assigning people to a task) and includes permission guidance ('a worker can assign existing members but cannot pull new people onto the project'). However, it does not explicitly name alternative tools or state exclusions, leaving the comparison to siblings implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_linkA
Attach a link to a task - a pull request, document or dashboard you
produced. Use this alongside add_result when the output lives somewhere
else. Only tasks you hold, or unclaimed ones, can be changed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | http/https URL of the deliverable. | |
| name | Yes | Human-readable label for the link. | |
| task_id | Yes | Task id to attach the link to. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already indicate a mutating operation (readOnlyHint=false), the description adds crucial behavioral context about authorization requirements and task ownership. It also clarifies the non-destructive nature implicitly. No contradictions with annotations.
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 compact and front-loaded with the action and examples. Each sentence provides distinct value: purpose, usage context, and constraints. No redundant 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?
Given the tool's simplicity, 100% schema coverage, and presence of an output schema, the description fully covers purpose, usage, and constraints. It provides all necessary context for an agent to select and invoke this 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?
Schema coverage is 100%, so the schema already documents all three parameters adequately. The description adds minimal extra meaning (e.g., 'you produced' implies ownership of the URL), but this doesn't significantly enhance parameter understanding 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 uses a specific verb ('Attach a link to a task') and gives concrete examples (pull request, document, dashboard). It clearly distinguishes this tool from siblings by mentioning its use alongside add_result for external outputs.
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?
Explicitly states when to use the tool ('when the output lives somewhere else') and names the alternative (add_result). Also provides a permission constraint ('Only tasks you hold, or unclaimed ones, can be changed'), offering clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_taskAIdempotent
Claim a task for yourself before working on it. This is atomic: the claim
is a unique assignment row in Planka, so a second worker racing for the same
task gets already_taken back and should simply pick another task. Claiming
a task you already hold succeeds again without side effects. You can only
ever claim a task for yourself, never for another user.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task id to claim, taken from list_actionable_tasks. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description enriches the annotation-declared idempotency by explaining the atomic uniqueness row, the `already_taken` failure response, and the idempotent success on repeat claims. This goes well beyond the structured annotations and helps the agent predict runtime 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 compact and information-dense, covering purpose, atomicity, race condition, idempotency, and self-only constraint in three sentences with no 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 simple one-parameter tool with an output schema, the description fully covers the critical aspects: when to claim, the atomic/unique semantics, the failure mode, idempotency, and the self-only limitation. No significant gaps remain.
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 fully documents the required `task_id` parameter (100% coverage). The description adds no additional parameter-level detail, but the schema's description 'taken from list_actionable_tasks' already provides sufficient guidance. Baseline 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 explicitly states the tool's purpose: 'Claim a task for yourself before working on it.' It clearly identifies the verb (claim), the resource (task), and the scope (for yourself), distinguishing it from sibling tools like assign_people and release_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?
The description provides clear context for when to use the tool ('before working on it') and implicitly warns against using it for other users ('never for another user'). It also advises what to do if a race is lost ('should simply pick another task'), but does not explicitly name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_project_structureA
Clone a project's layout: its columns with their exact types and order, and optionally its labels and members. No cards are copied - this produces an empty project shaped like the original.
Prefer this over create_project when an existing project is the template.
Naming a column 'Done' is not the same as copying it: a list's type decides
whether Planka marks cards dropped there as finished, and only a copy carries
that across.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the new project. | |
| board_id | No | Board (container) to create it in. Defaults to the source's own board. | |
| include_labels | No | Recreate the source's labels. On by default. | |
| include_members | No | Give the source's members the same roles on the copy. Off by default, and needs membership rights. | |
| source_project_id | Yes | Project (tab) whose layout to copy. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint is false, destructiveHint is false, and openWorldHint is true. The description clarifies it is a copying tool (not destructive, but creates new resources) and explicitly states no cards are copied, which is important behavioral detail beyond annotations.
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 three sentences, front-loaded with the main purpose, followed by an explicit usage guideline and an illustrative example. Each sentence adds value, though the example could be slightly more concise.
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 high schema coverage, output schema exists (covering return values), and good annotations, the description is complete. It covers what the tool copies, what it doesn't, when to use it, and an example distinguishing it from alternatives. No gaps remain for an agent to select or invoke 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?
Schema coverage is 100%, so baseline is 3. The description adds context by explaining the significance of copying column types versus just naming, which adds meaning beyond schema descriptions. It also implies that source_project_id is the template, aligning with the parameter descriptions.
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 clones a project's layout (columns with types and order) and optionally labels/members, and explicitly says no cards are copied. This distinguishes it from create_project by emphasizing it copies structure, not creating from scratch.
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 explicitly says 'Prefer this over create_project when an existing project is the template' and explains why copying a column is different from naming one 'Done', providing concrete guidance on when to use this tool over the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_boardA
Create a board - the container that holds projects (tabs).
Needs an admin or projectOwner account; Planka refuses project creation
for anyone else. Create the board first, then fill it with create_project
or copy_project_structure.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the new board (container). | |
| shared | No | Shared boards accept several managers, which is what a team wants. A private board has a single owner and cannot take co-managers later without being converted. | |
| description | No | What this board is for. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations indicate this is a mutating tool requiring specific authorization (admin/projectOwner role). The description openly clarifies that Planka will reject requests from other roles, adding an important behavioral caveat to avoid unexpected failures. No contradiction with annotations.
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?
Extremely concise at two sentences with zero waste. The first sentence identifies the tool, and the second provides critical usage guidance.
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 full annotations (including an output schema for success details) and the presence of many sibling tools, this description is complete. It covers purpose, prerequisites (auth), behavioral constraints, and workflow sequencing (board before projects).
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 parameters are well-documented. The description adds value by not repeating param details, but it's a very short description that trusts the schema. The shared parameter's schema description already covers the business impact, but the tool description doesn't expand on it further – a minor missed opportunity.
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 starts with strong specificity, stating the tool creates a 'board' that holds projects (tabs) – a precise verb+resource+scope. It clearly distinguishes itself from siblings like `create_project` by noting the board is created first, then filled with projects.
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?
Explicitly states when to use this tool ('Create the board first') and what to do after ('then fill it with create_project or copy_project_structure'). Also provides a critical exclusion: requires an admin or projectOwner account, guiding agents away from this tool if they lack those credentials.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_listA
Add a workflow stage to a project. Note that Planka closes any card placed
in a closed list, so use that type only for a genuine done stage.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | List name, e.g. 'Blocked' or 'Ready for QA'. | |
| after | No | Place it after this list (name or id). | |
| color | No | Column colour, e.g. berry-red, lagoon-blue, bright-moss. | |
| list_type | No | active (work stage) | waiting (on hold) | inactive (out of flow) | closed (cards land here as finished). | active |
| project_id | Yes | Project (tab) to add the list to. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the behavioral consequence that cards placed in a 'closed' list will be closed by Planka, advising to use that type only for genuine done stages. This adds meaningful context beyond the annotations (readOnlyHint=false, destructiveHint=false) and the schema's parameter description.
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 just two sentences: the first states the tool's purpose, and the second provides a critical behavioral warning. It is concise, front-loaded, and every sentence earns its place.
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 simple create-list operation, the presence of an output schema, and full parameter schema coverage, the description covers the essential behavioral nuance (closed list behavior) without needing to explain return values or basic parameter mechanics. It is sufficiently complete for an agent to select and 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?
Schema description coverage is 100%, so parameters are already well-documented. The description's note about the 'closed' list type adds a behavioral caveat but does not significantly expand semantics beyond what the schema already states (e.g., 'closed (cards land here as finished)'). It also does not illuminate the 'after' or 'color' parameters beyond their schema descriptions.
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 ('Add a workflow stage to a project') with a specific resource (project) and implicit object (list). It distinguishes from sibling tools like create_board and update_list by focusing on workflow stages, though it does not explicitly name 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 on when to use this tool versus alternatives such as create_board or update_list. The only usage-related note concerns the 'closed' list_type parameter, which is more about parameter selection than tool selection. There are no explicit prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectA
Create a new project (tab) inside a board, pre-populated with workflow lists so it is immediately usable. Requires admin rights on that board.
To reproduce an existing project's layout, use copy_project_structure
instead - it carries the exact list types across, which naming alone cannot.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the new project (tab). | |
| lists | No | Workflow stages in order. Either plain names, or {name, type} to set each type outright. Plain names are typed by convention: a 'done'-style name becomes a closed list. Defaults to To Do / In Progress / Review / Done. | |
| board_id | Yes | Board (container) to create it in. | |
| default_view | No | How it opens: kanban, grid or list. | |
| project_type | No | project (holds work) | library | collection. Only 'project' projects are scanned for tasks. | project |
| default_card_type | No | Default kind for new tasks: project, story or link. | |
| expand_checklists | No | Show checklists expanded on the task front. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows this is not destructive but is a write operation. The description adds critical context: the tool requires admin rights, and it creates default workflow lists, making the project immediately usable. However, it does not mention any potential side effects (e.g., board visibility changes, notification triggers), but given the annotation coverage, this is acceptable.
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?
Two sentences in the description, zero filler. The first sentence states purpose and benefit; the second sentence provides precise usage guidance with sibling reference. Every word earns its place.
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 has 7 parameters (all documented), a helpful output schema (not shown but present), has annotations covering safety, and the description adds the missing usage context (admin rights, sibling differentiation). For a creation tool of moderate complexity, this is 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 description coverage is 100%, so the baseline is 3. The description adds value by explaining the default behavior for the 'lists' parameter ('Defaults to To Do / In Progress / Review / Done') and by hinting at the conventional typing logic ('a 'done'-style name becomes a closed list'), which is not in the schema. For 'project_type', it clarifies that only 'project' projects are scanned for tasks, a useful behavioral note.
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 ('Create'), resource ('new project (tab) inside a board'), and key benefit ('pre-populated with workflow lists so it is immediately usable'). It distinguishes itself from sibling 'copy_project_structure' by contrasting the intended use case.
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 explicitly states the prerequisite ('Requires admin rights on that board') and gives a clear when-not-to-use scenario: if the goal is to reproduce an existing project's layout, use 'copy_project_structure' instead, with reasoning about list type fidelity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskA
Create a new task in the todo stage of a board - follow-up work you discovered, or a task you were asked to file. It lands unclaimed, so claim it before working on it. Labels must already exist on the board; this tool never invents board structure.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short imperative title for the new task. | |
| labels | No | Existing board label names to apply, e.g. ['priority: high']. Unknown names are reported back, not created. | |
| board_id | No | Board to create it on. Required when more than one board is in scope. | |
| due_date | No | Deadline as ISO-8601, e.g. 2026-08-12T17:00:00Z. | |
| checklist | No | Optional checklist items for the new task. | |
| into_list | No | Land it in this list, by name or id, instead of the project's todo stage. | |
| task_type | No | project (ordinary work) | story (user story) | link (a pointer to something elsewhere). | project |
| description | No | What needs doing, and how to tell it is done. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation. The description adds key behavioral details: tasks start unclaimed and labels must already exist, so this tool never invents board structure. These go beyond the basic annotation flags.
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?
Three sentences, front-loaded with the action, then essential behavioral notes. No redundant information or fluff.
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 8 parameters, full schema coverage, and an output schema, the description sufficiently covers core behavior, unclaimed state, and label constraints. It doesn't explain return values, but the output schema handles that.
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 only minimal param-specific context (e.g., default todo stage, label existence), which is largely redundant with schema descriptions.
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 (create a new task), the target resource (a board's todo stage), and provides use cases (follow-up work or asked to file). This distinguishes it from sibling tools like update_task_details, claim_task, and move_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?
It gives specific context for when to use this tool (follow-up work or filing a task) and notes that the task lands unclaimed, implying you may need to claim it before working. It doesn't explicitly name alternative tools, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_listA
Delete an empty list. A list holding cards is never deleted - move the cards out first, or retire the stage with update_list(list_type='inactive').
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project (tab) the list belongs to. | |
| list_name_or_id | Yes | List to delete, by name or id. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals the key behavioral rule: a list with cards is never deleted. It also explains the workaround, which is essential because the tool name alone might imply it deletes any list. The annotations (readOnlyHint=false, destructiveHint=false) are consistent with this non-destructive but write-capable behavior, and the description adds critical 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?
Two sentences, with the main purpose front-loaded. The second sentence adds necessary context without fluff. Every word earns its place.
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 two-parameter delete tool, the description covers the purpose, the key precondition (empty list), and the alternative action. An output schema exists, so return values are handled. Minor gap: it doesn't specify what actually happens when attempting to delete a non-empty list (error vs. no-op), but this is not critical for decision-making.
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 provides complete descriptions for both parameters (project_id and list_name_or_id), so the baseline is 3. The description does not add parameter-specific details beyond what the schema already documents.
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 begins with 'Delete an empty list', which is a specific verb+resource with a clear constraint. It also distinguishes itself from siblings by mentioning update_list as the alternative for retiring a stage with cards, and clarifies that non-empty lists are never deleted.
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?
Explicitly states when to use (empty list) and when not to use (list holding cards), and provides a concrete alternative: move cards out first or use update_list(list_type='inactive'). This is clear, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_informal_assignmentsARead-only
Find work handed out in comments but never actually assigned.
Teams often hand off by writing "Assigned to: @Name" in a comment. In
Planka that is just text: the person is not a member of the task, so it never
reaches their queue, no board view shows them as owner, and it is invisible to
reporting. This reports every such comment where the mentioned person is not a
member of the task, and gives you the exact assign_people call that would
make it real. Read-only - it changes nothing on its own. Confirm with a human
before acting on findings; a mention is not always a hand-off.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum findings (1-100). | |
| board_id | No | Check every project inside one board (container). | |
| project_id | No | Check one project (tab) instead of all of them. | |
| include_done | No | Include finished tasks. Off by default. | |
| include_any_mention | No | Also report plain mentions with no hand-off wording. Off by default, which keeps this to comments that actually read like an assignment. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces and extends this with 'Read-only - it changes nothing on its own.' It also discloses the detection logic, the fact that the output includes the exact assign_people call, and the caveat that a mention is not always a hand-off. This goes well beyond the annotations.
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 well-structured paragraph that front-loads the core purpose, then explains the problem context, output value, and safety caveat. Every sentence earns its place; there is no filler, and the length is justified by the richness of the scenario.
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's complexity and the presence of an output schema, the description is highly complete. It explains why informal assignments are a problem, what the tool reports, the exact follow-up action (assign_people call), and a human-confirmation safety note. Nothing essential 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?
The input schema has 100% coverage with detailed parameter descriptions (e.g., 'Check every project inside one board', 'Include finished tasks'). The description adds no extra parameter-level meaning beyond the schema, so the 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 opens with a specific verb+object: 'Find work handed out in comments but never actually assigned.' It clearly distinguishes this from siblings like assign_people or find_tasks by focusing on the informal hand-off detection problem, with 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 provides strong context: it explains the problem scenario (teams writing 'Assigned to' in comments), states the tool reports such comments, and gives a clear 'confirm with a human before acting' warning. It does not explicitly name a sibling alternative to use instead, but the purpose is so distinct that the when-to-use intent is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_tasksARead-only
Search tasks across every project you can see - including other people's.
Unlike list_actionable_tasks, which is your own ready-to-work queue, this
answers questions about the whole workspace: what is Ada working on, what is
overdue, where did that card about the login bug go.
Searching for a person finds all three ways work reaches them: tasks they are
assigned to, tasks holding a checklist item assigned to them, and tasks where
they were mentioned in a comment. Each result says which, in matched_by,
and carries the specific checklist items and mentions. Results are read-only
context; claiming and editing still go through the usual tools, and other
people's tasks remain off limits to edit.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Case-insensitive text to look for in the title or description. | |
| label | No | Only tasks carrying this label, e.g. 'priority: high'. | |
| limit | No | Maximum results (1-100). | |
| status | No | Restrict to todo, in_progress, review or done. Default: every stage except done. | |
| assignee | No | Whose work to show: a name, email or id; 'me'; 'anyone'; or 'unassigned'. Defaults to anyone. | |
| board_id | No | Search every project inside one board (container). | |
| project_id | No | Search one project (tab) instead of all of them. | |
| include_done | No | Include finished work. Off by default. | |
| overdue_only | No | Only tasks whose due date has passed. | |
| include_mentions | No | When searching for a person, also return tasks where they were mentioned in a comment. On by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations note readOnlyHint and openWorldHint, but the description adds substantial behavior: search matches tasks, checklist items, and mentions for a person; results include matched_by; results are read-only context; other people's tasks are off-limits for edit. No contradiction with annotations.
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?
Four sentences are front-loaded with the core purpose, then differentiation, then detail. No wasted words; each sentence adds value and the structure is logical.
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 full schema coverage, annotations, and an output schema present, the description covers the high-level scope, sibling differentiation, and key behavioral nuances. Nothing essential is missing for a search tool of this complexity.
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 covers all 10 parameters with descriptions, so baseline is 3. The description adds meaningful semantics for the assignee parameter, explaining the three ways a person can be matched and that results indicate how via matched_by. This goes beyond 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 searches tasks across all visible projects, including others' tasks. It explicitly distinguishes itself from list_actionable_tasks, naming the sibling tool and its different 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?
Provides explicit when-to-use guidance: use for whole-workspace questions versus list_actionable_tasks for your own queue. Also explains read-only nature and that edits go through other tools, with a clear exclusion for editing others' tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectARead-only
Full structure of one project: its lists and what status each maps to, its labels and how heavily they are used, its members and their roles, and your own role. Read this before changing structure or assigning people.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project (tab) id from list_projects. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by enumerating exactly what data is returned (list-status mappings, label usage, member roles, own role). It does not contradict the readOnlyHint/openWorldHint annotations. Could mention open-world caveats, but annotations already cover safety.
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 succinct sentences that front-load the purpose and enumerate return contents. Every sentence earns its place with no wasted words.
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 read-only retrieval tool with one well-documented parameter, strong annotations, and an output schema, the description fully covers purpose, return content, and usage timing. It is contextually 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?
The schema already fully describes the sole parameter project_id with a reference to list_projects. The description adds no additional parameter details, so the 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 tool retrieves the full structure of a single project, listing specific components (lists, status mappings, labels usage, members, roles). This distinguishes it from siblings like list_projects (which lists projects) and get_task (task-level details).
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 instruction 'Read this before changing structure or assigning people' provides explicit timing guidance, indicating the tool should be used before mutation or assignment operations. It implies but does not explicitly name alternatives, though the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskARead-only
Full detail for one task: description, labels, subtasks, assignees, comments and anything it is waiting on. Use it after you claim a task, to understand what has to be done.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task id from list_actionable_tasks. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive. The description adds value by revealing the scope of the returned detail (labels, subtasks, assignees, comments, dependencies), giving the agent a precise expectation of the data. It does not mention auth or rate limits, but none are suggested by the annotations; no contradiction.
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 concise (two sentences), front-loaded with the core function, and every word adds value. It efficiently combines resource scope and usage timing without 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?
With one well-documented parameter, an output schema, and read-only annotations, the description covers the essential context. It tells what the tool does, what content is returned, and when to use it, making it complete for this simple reference 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% for the single task_id parameter, including its source ('from list_actionable_tasks'). The description does not add any additional parameter semantics, so the baseline score of 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 clearly states the tool provides 'Full detail for one task' and enumerates specific fields (description, labels, subtasks, assignees, comments, waiting on). This distinguishes it from siblings like list_actionable_tasks and claim_task by focusing on retrieving comprehensive detail for a single 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?
The description explicitly instructs to use it 'after you claim a task, to understand what has to be done.' This gives a clear temporal usage context, though it does not name alternative tools or exclusion scenarios, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_actionable_tasksARead-only
List tasks that are genuinely ready to be worked on, most urgent first.
Call this first, before any other tool. The filtering happens on the server:
only cards sitting in a 'todo' stage of an active list, not closed, and
either unassigned or already assigned to you are returned. Each entry carries
what you need to choose: title, priority, due date, effort, labels, subtask
counts and a description excerpt. Pick one, then call claim_task.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tasks to return (1-50). | |
| search | No | Optional case-insensitive text filter on title and description. | |
| board_id | No | Restrict to one board id. Omit to scan every accessible board. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive behavior, and the description adds valuable context: the filtering is server-side, only 'todo' stage cards in active lists are returned, and each result includes fields needed for decision-making (title, priority, due date, effort, labels, subtask counts, description excerpt). This goes well beyond the structured annotations.
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 succinct yet comprehensive: opens with purpose, then gives ordering, filtering logic, result contents, and next step. No wasted words, and the structure flows logically.
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 an output schema present, the description need not repeat return details. It covers the essential context: what tasks are returned, in what order, what data is available, and how to proceed. This is complete for a read-only discovery 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%, with clear descriptions for limit, search, and board_id. The tool description itself does not elaborate on these parameters, but the schema already handles them. 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 uses a specific verb+resource ('List tasks') and clearly defines the scope ('genuinely ready to be worked on'). It distinguishes itself from siblings by emphasizing it's the first call, leading to claim_task, and explicitly describes the server-side filtering criteria that make it unique.
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 clear context on when to use it ('Call this first, before any other tool') and what to do after (call claim_task). It doesn't explicitly mention when not to use it or alternatives, but the guidance is strong enough to be unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_boardsARead-only
List the boards you can reach - the containers that hold projects. Use it to find where a project lives, or before creating a new project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds that it lists only boards 'you can reach' (access scoping) and defines the board-project relationship, which gives useful context beyond structured 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?
Two concise sentences front-load the action and add meaningful context without extraneous detail. Every sentence earns its place.
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, read-only tool with an output schema, the description is complete: it explains what boards are, what the list contains, and when to use it. The presence of an output schema removes the need to document return values.
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?
No parameters exist in the schema, so the description carries no burden for parameter semantics. Baseline of 4 applies because the tool requires no arguments.
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?
Clearly states it lists boards, defines boards as containers that hold projects, and distinguishes from list_projects by scope (boards vs projects). The use cases ('find where a project lives, or before creating a new project') reinforce its purpose.
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?
Explicitly states when to use it: to find where a project lives or before creating a new project. It doesn't provide exclusions or alternative tools, but the context is clear enough; siblings like list_projects are implicitly distinct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_peopleARead-only
List people and their roles - members of one project, or the whole directory. Use it to resolve a partial name before assigning work.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Members of this project (tab) and their roles. Omit for everyone on the instance. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description doesn't contradict them. The description adds scope context ('one project, or the whole directory') and the role-listing behavior, but these mostly mirror the parameter schema and don't reveal additional behavioral traits such as pagination, auth, or result shape.
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?
Two sentences, front-loaded with the main action, and no filler or redundant details. Every sentence adds value: the first states what it does, the second states when to use it.
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 read-only list tool with one optional parameter, an output schema, and thorough annotations, the description is complete. It covers the tool's function, scope, and intended use case without needing additional detail.
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 schema already documents project_id and its default. The description paraphrases the same scope info without adding extra meaning about the parameter's format or behavior beyond what the schema 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 opens with a specific verb and resource: 'List people and their roles' and clarifies scope with 'members of one project, or the whole directory.' This clearly distinguishes it from sibling tools like assign_people or set_project_members, which modify assignments rather than list them.
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?
It provides an explicit use case: 'Use it to resolve a partial name before assigning work.' This gives clear context for when to call the tool, though it does not mention when not to use it or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsARead-only
List the projects (tabs) you can work in, with the role you hold on each. Start here when you are asked to do something on a named project.
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | No | Only projects inside this board. Omit for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, read-only, open-ended operation. The description adds useful context beyond annotations by noting it returns the user's role on each project and is scoped to projects the user 'can work in.' This helps the agent understand the response content and access scope without contradicting the annotations.
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 sentences with no wasted words. The first sentence states the core function and result ('projects (tabs) ... role you hold'), and the second sentence gives a practical starting point. Information is front-loaded and 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?
Given the simple one-parameter schema, the presence of an output schema, and annotations covering safety, the description provides all necessary context: what the tool does, the scope ('you can work in'), and when to use it ('Start here'). No significant gaps remain.
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 fully documents the only parameter, board_id, with a clear description: 'Only projects inside this board. Omit for all.' Since schema coverage is 100%, the description does not need to explain parameters further, and it does not add additional meaning beyond what the schema 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 clearly states the tool's function: 'List the projects (tabs) you can work in, with the role you hold on each.' This identifies a specific resource (projects/tabs) and distinguishes it from single-project operations like get_project and board-level operations like list_boards.
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 explicit usage guidance: 'Start here when you are asked to do something on a named project.' This tells the agent when to invoke this tool, though it does not explicitly mention when not to use it or name alternative tools for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_labelsA
Create, rename or remove the labels a project uses for priority, size and state. A label still applied to cards is never deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| colors | No | Colour for labels being created or recoloured: {label name: colour}. Colours are Planka's own names, e.g. berry-red, lagoon-blue, sunny-grass. Unset ones cycle through the palette. | |
| create | No | Label names to create, e.g. ['priority: high', 'size: L']. | |
| rename | No | Mapping of existing label name -> new name. | |
| project_id | Yes | Project (tab) whose labels to manage. | |
| delete_unused | No | Label names to delete. Refused if the label is on any card. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint: false, destructiveHint: false) indicate this is a non-read, non-destructive operation. The description adds behavior beyond annotations by stating 'A label still applied to cards is never deleted', which prevents the agent from assuming deletion is unconditional. This addresses a key behavioral nuance that annotations alone do not cover.
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?
Two sentences, each earning its place: the first states the core purpose, the second clarifies a critical behavioral constraint. No wasted words, information is well prioritized.
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 5 parameters (100% schema coverage), rich annotations, and an output schema, the description fully addresses the use case. It explains the purpose, how parameters relate to categories, and a key side-effect (deletion refusal). The output schema presumably covers return values, so no need to mention them. Slight deduction for not mentioning that rename affects only name (not color/position) or that colors map to specific labels.
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 baseline is 3. The description adds value by linking parameters to the label categories ('priority, size and state') and by explicitly noting deletion safety ('Refused if the label is on any card'), which the schema only implies for delete_unused. It also explains color semantics ('Unset ones cycle through the palette') beyond the schema's 'Colour for labels being created or recoloured'.
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 ('Create, rename or remove') and the resource ('labels a project uses'), distinguishing it from siblings like set_task_labels (which assigns labels to tasks). The scope is specific to label management at the project level.
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 it (managing labels for priority, size, state) but does not explicitly state when not to use it or mention alternatives (e.g., set_task_labels for assigning labels to tasks). The context of 'project uses' is clear enough to infer usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_taskA
Move a task to another list, or to a different project entirely. Use this for stages that are not part of the todo/in_progress/review/done flow - a 'Blocked' or 'Icebox' list, say - where update_status does not apply.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task to move. | |
| to_list | No | Destination list on the same project, by name or id. | |
| to_project_id | No | Move to a different project (tab). Its todo stage is used unless to_list names a list there. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only false and non-destructive, and the description adds context about use cases but does not disclose additional behavioral traits like side effects, permissions, or reversibility. It provides some value beyond annotations but not substantial behavioral detail.
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 sentences, front-loaded with the primary action, and includes a useful example ('Blocked' or 'Icebox') without redundancy. Every sentence earns its place.
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 an output schema and annotations, the description is sufficiently complete for a mutation tool with three parameters. It could mention edge cases like requiring at least one destination parameter, but the schema and sibling context make the description adequate.
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 100% coverage for all three parameters, each with descriptions. The tool description does not add any new information about parameter semantics, so it matches the baseline for complete schema coverage.
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 moves a task to another list or project, with specific verbs and resource. It also distinguishes itself from update_status by indicating it is for non-standard stages, making its purpose unambiguous.
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?
Explicitly states when to use this tool ('for stages that are not part of the todo/in_progress/review/done flow') and contrasts with update_status, providing a clear exclusion and directing to the alternative. This is excellent usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_taskAIdempotent
Give up your claim on a task so another worker can take it. Only your own claim is ever removed - other people's assignments are untouched. Nothing is deleted; the task and its history stay on the board.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional note posted to the task explaining why. | |
| task_id | Yes | Task id you claimed and cannot finish. | |
| move_back_to_todo | No | Also move the task back to the todo stage. Default true. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=false, idempotentHint=true), the description adds valuable specifics: it ensures no data deletion, states that the task and history stay on the board, and clarifies that other assignments are untouched. This gives the agent a concrete model of the tool's 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 three sentences long, with the first sentence immediately conveying the primary purpose. Every sentence adds distinct information: the action, the scope limitation, and the non-destructive guarantee. No redundant or filler content.
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 tool with a well-covered schema and an output schema present, the description is sufficiently complete. It explains the core behavior, safety guarantees, and lasting effects on the task and board. The optional move_back_to_todo behavior is documented in the schema, so its omission from the description does not create a 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?
Schema description coverage is 100%, with all three parameters (task_id, reason, move_back_to_todo) having clear descriptions in the schema. The tool description does not add additional meaning or clarify parameter relationships beyond what the schema already provides, so a 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 states the action ('Give up your claim on a task') and the resource (task). It also distinguishes from sibling tools by explicitly noting that only your own claim is removed and other assignments remain untouched, differentiating it from tools like unassign_people.
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 clear context for when to use the tool (when you cannot finish a task) and implicitly excludes using it for other people's assignments via 'Only your own claim is ever removed.' However, it does not explicitly name alternative tools or provide a 'when not to use' directive beyond the scope limitation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_project_membersA
Add people to a project, change the role they hold, or remove them from it. Requires membership rights on that project. Removing a member does not delete anything they created, and never touches their account.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | worker (works on assigned cards) | editor (full board editing) | guest (read, comment) | none (remove them). | worker |
| people | Yes | Names, emails or ids. | |
| project_id | Yes | Project (tab) to change membership on. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=false), the description adds meaningful context: removing a member does not delete their work or affect their account. This clarifies the tool's side effects and safety profile, though it could further detail behavior on role changes.
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 sentences, front-loaded with the primary action, and every sentence provides essential information. No unnecessary words or repetition.
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 description covers the main actions, a prerequisite, and a key behavioral guarantee. With a complete input schema and output schema present, the description is sufficiently complete for a membership management tool, though it could mention that multiple people can be processed simultaneously.
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 descriptions already fully cover all three parameters (role, people, project_id) at 100%. The tool description does not add parameter-specific details beyond the overall action, which is adequate given the schema's thoroughness.
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 specifies the tool's function: adding people to a project, changing their roles, or removing them. This distinguishes it from related tools like assign_people/unassign_people, which operate at the task level.
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 notes that membership rights are required, providing a prerequisite for use. However, it does not explicitly differentiate when to use this tool versus alternatives like assign_people or unassign_people, leaving the usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_task_labelsA
Apply or take labels off a task - how you change its priority or size, since Planka stores both as labels. Labels themselves are untouched; only their link to this task changes.
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | Label names to apply. | |
| remove | No | Label names to take off. | |
| task_id | Yes | Task to relabel. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond the annotations: it explicitly states that labels are untouched and only the link to the task changes. This clarifies side effects and scope. Annotations already indicate mutating (readOnlyHint=false) and non-destructive (destructiveHint=false), and the description reinforces these without contradiction.
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?
Two concise sentences front-load the core action, followed by a clarifying note on scope. No wordiness, and every sentence contributes to understanding.
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's low complexity, the description covers purpose, effect, and boundary (labels untouched), and with full schema coverage and annotations, nothing further is needed. Output schema exists so return format need not be explained.
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%, giving parameter names and simple descriptions. The tool description adds meaning by clarifying that 'add' and 'remove' opertate on label names and that priority/size are represented as labels, helping the agent understand how to use the parameters in the context of the tool's purpose.
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: 'Apply or take labels off a task'. It also distinguishes from sibling tools like manage_labels by explaining that labels themselves are untouched, making the tool's specific purpose unambiguous.
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?
It provides clear context: this changes a task's priority or size via labels, and labels themselves are not modified. This implicitly tells the agent not to use it for label management, though it doesn't explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unassign_peopleA
Take people off a task. Their project membership is untouched - this only removes the assignment.
| Name | Required | Description | Default |
|---|---|---|---|
| people | Yes | Names, emails or ids to unassign. | |
| task_id | Yes | Task to take people off. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is a write operation and not destructive. The description adds valuable context about the side-effect that project membership remains unchanged, which is not obvious from the name or annotations.
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?
Two concise sentences, front-loaded with the action and followed by a clarifying nuance. Every sentence earns its place without 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 simple two-parameter mutation with output schema and annotations, the description adequately captures the essential behavior and the key distinction from sibling tools. No critical information 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?
Input schema covers 100% of parameters with descriptions for both task_id and people. The tool description does not add further parameter-level detail, so the 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 uses a specific verb ('Take people off') and identifies the resource (task) and the precise action (removes the assignment). It distinguishes this tool from assign_people and set_project_members by clarifying that project membership is untouched.
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 this tool by highlighting that it only removes the assignment and does not affect project membership. This gives context for choosing it over alternatives, but it does not explicitly name alternatives or list exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_boardA
Rename a board (container), describe it, hide it or favourite it. Requires managing that board - instance admin, or one of its managers.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name. | |
| hidden | No | Hide it from the boards list without deleting it. | |
| board_id | Yes | Board (container) to change. | |
| favorite | No | Mark it a favourite for this account. | |
| description | No | What this board is for. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description only adds the permission requirement. It does not disclose any other behavioral traits like side effects, rate limits, or whether changes are reversible. The description adds moderate value beyond annotations.
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 sentences: the first enumerates the actions, the second states the permission requirement. It is concise, front-loaded, and contains no unnecessary words. Every sentence earns its place.
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 description covers purpose and permission adequately. An output schema exists, so return values are not needed. It does not mention the required board_id parameter explicitly, but the schema handles that. For a straightforward update tool, this is largely 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%, so the schema already documents all parameters. The description summarizes the actions (rename, describe, hide, favourite) which map to the parameters, but it does not add meaning beyond what the schema provides. Baseline 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 verb actions (rename, describe, hide, favourite) and the resource (board). It lists specific operations, distinguishing it from other board-related tools like create_board or delete_list. The mention of 'container' in parentheses adds 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 provides a clear precondition: 'Requires managing that board - instance admin, or one of its managers.' This tells the agent who can use the tool. While it does not explicitly compare to sibling tools, the context is sufficient since no other tool directly updates board attributes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_checklistA
Break a task into checklist steps and tick them off as you go, so progress is visible on the board while you work. Only tasks you hold, or unclaimed ones, can be changed. Items are never deleted - reopen them instead.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task id whose checklist to update. | |
| add_items | No | New checklist items to append. | |
| assign_items | No | Give checklist items an owner: {item name: person}. The person is resolved like anywhere else, by name, email or id. | |
| reopen_items | No | Checklist item names to un-tick. | |
| complete_items | No | Existing checklist item names to tick off (case-insensitive). | |
| depends_on_tasks | No | Task ids this task waits for. Each becomes a linked checklist item, which is how Planka models a dependency. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it explicitly states that items are never deleted and must be reopened, and that only held or unclaimed tasks are mutable. Annotations already indicate non-destructive write (readOnlyHint=false, destructiveHint=false), but the description enriches this with concrete policies. No contradiction.
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 sentences, front-loaded with the primary use case and benefit, followed by constraints. Every sentence adds value—no redundancy or fluff. It is efficiently structured for quick agent comprehension.
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?
Despite the tool having 6 parameters and an output schema, the description covers the core workflow (add, complete, reopen) and key constraints. It does not mention the ability to assign owners or set dependencies, but those are well-documented in the schema. The presence of an output schema reduces the need to describe return values. Overall, the description is largely adequate for an agent to decide when and how to use 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?
All 6 parameters have clear schema descriptions (100% coverage), so the baseline is 3. The description does not add parameter-specific meaning beyond the schema; it focuses on overall purpose. While it implicitly references add/complete/reopen, it does not elaborate on assign_items or depends_on_tasks, which are covered in 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 is for breaking tasks into checklist steps and tracking progress. It uses the verb 'break' and 'tick off', explicitly describing the resource (checklist steps on a task). The description distinguishes this tool from siblings like update_task_details by focusing on sub-item management.
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 a usage constraint ('Only tasks you hold, or unclaimed ones, can be changed') but does not explicitly state when to use this tool versus alternatives. Since no sibling tool directly competes for checklist management, the guidance is implied but not explicit. Missing when-not or alternative naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_listA
Rename a list or change its type. Retiring a stage is a type change to
inactive, which keeps every card intact and reversible.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name. | |
| after | No | Reorder: place this column after that one (name or id). Pass 'first' to move it to the front. | |
| color | No | New colour for the column. | |
| list_type | No | New type: active, waiting, inactive or closed. Setting 'inactive' is how you retire a stage without deleting it. | |
| project_id | Yes | Project (tab) the list belongs to. | |
| list_name_or_id | Yes | List to change, by name or id. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show this is not read-only (readOnlyHint: false) and not destructive (destructiveHint: false). The description adds clear behavioral context by stating that changing type to inactive keeps cards intact and is reversible, which is valuable beyond the annotations. It also implicitly states renaming and reordering are safe operations.
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?
Two sentences, zero waste. Every word serves a purpose. The description is front-loaded with the primary actions and concludes with a clarifying example. There are no redundant or filler phrases.
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 tool with 6 parameters, 2 required, and 100% schema coverage plus an output schema, the description is complete enough. It covers the main actions (rename, type change) and highlights a key behavioral nuance (inactivating is reversible). It could optionally mention that reordering is also supported, but 'change its type' implies multiple modifications are possible, so this is sufficient.
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 minimal meaning beyond the schema: it clarifies the special meaning of 'inactive' for list_type and mentions that reordering preserves cards, but the other parameters (name, after, color) are adequately explained in the schema descriptions. No new semantics are added for those.
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 renames a list or changes its type with specific verb+resource ('Rename a list or change its type'). It distinguishes from siblings like 'create_list' and 'delete_list' and adds a concrete example of what changing type to 'inactive' means.
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 explicit context for one use case ('Retiring a stage is a type change to inactive'), but does not provide guidance on when to use this tool versus alternatives like 'delete_list' (destructive) or 'update_project' (more broad). No when-not-to-use advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectA
Rename a project (tab) or change how it behaves: default view, the kind of task it creates, whether checklists open expanded. Requires structure rights.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name. | |
| project_id | Yes | Project (tab) to rename or retune. | |
| default_view | No | Default view: kanban, grid or list. | |
| default_card_type | No | Default kind for new tasks: project, story or link. | |
| expand_checklists | No | Show checklists expanded on the task front. | |
| always_show_task_creator | No | Show who created each task on its front. | |
| limit_to_default_card_type | No | Allow only the default kind of task. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, indicating a mutable but non-destructive update operation, which aligns with the description. The description adds value by stating the requirement for 'structure rights,' which goes beyond annotations. However, it does not discuss error states, partial update behavior, or what happens if the project_id doesn't exist. The behavioral disclosure is adequate but not exhaustive.
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 two sentences with no wasted words. The first sentence front-loads the primary purpose and lists the key behavioral settings. The second sentence adds a critical prerequisite. Every sentence provides distinct value.
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 7 parameters, 100% schema coverage, annotations for safety, and an output schema that would explain return values, the description covers the essential conceptual overview and a key prerequisite. The one gap is it doesn't explain the 'openWorldHint: true' annotation's implication (that the tool may have side effects outside the agent's knowledge), but this is an annotation already available to the agent. The description is sufficiently complete for an experienced 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%, so each parameter has a description in the schema itself. The tool description provides a useful high-level summary of the parameter categories ('default view, kind of task it creates, whether checklists open expanded'), which helps an agent understand the conceptual groupings. However, the description doesn't add specific syntax details, constraints, or non-obvious behaviors for individual parameters beyond what the schema already provides. A score of 3 is appropriate per the baseline guidance for high schema coverage.
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 both major capabilities: renaming a project and changing its behavior settings (default view, task kind, checklist expansion). It uses specific verbs like 'Rename' and 'change how it behaves' which precisely describe the tool's action against the 'project' resource. The description effectively distinguishes this from sibling tools like get_project, create_project, and list_projects.
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 explicitly states a requirement: 'Requires structure rights.' This provides direct guidance on when the tool can be used. While it doesn't explicitly list when NOT to use it or name alternatives among siblings, the scope is well-defined, making it clear this is for updating existing project settings, not creating or deleting projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_statusAIdempotent
Move a task you have claimed to a new status. Legal moves are todo -> in_progress -> review -> done (plus in_progress -> todo to hand work back). Illegal jumps are rejected. You must hold the claim on the task, and the board must have a list for the target status.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Target status: todo, in_progress, review or done. | |
| task_id | Yes | Task id you currently hold a claim on. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations: it discloses an authorization requirement (holding the claim), an environmental requirement (target list exists), and rejection of illegal transitions. Annotations already indicate mutation and idempotence, and no contradiction exists.
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 three sentences: core action, legal transitions, and constraints. Every sentence is purposeful, front-loaded, and free of redundancy or filler.
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 two-parameter status transition tool, the description covers the action, allowed moves, preconditions, and rejection behavior. The presence of an output schema and annotations covers return values and mutability, leaving no major gaps.
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 covers both parameters with high coverage, but the description adds an important legal-move graph (todo -> in_progress -> review -> done plus in_progress -> todo) that the schema's status description does not provide. This helps the agent choose valid status transitions, going beyond the simple allowed-value list.
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 'Move a task you have claimed to a new status,' giving a specific verb and resource. It further defines legal moves (todo -> in_progress -> review -> done, plus in_progress -> todo), which clearly distinguishes this status-workflow tool from generic siblings like move_task or update_task_details.
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?
It explicitly states prerequisites ('You must hold the claim on the task, and the board must have a list for the target status') and says illegal jumps are rejected, which tells the agent when the tool applies. It does not explicitly name alternatives such as move_task for non-status repositioning, so it falls just short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_task_detailsA
Refine a task's title, description, deadline or labels - for example after investigating and learning what the work actually involves. Only tasks you hold, or tasks nobody has claimed, can be edited; another worker's task is never touched.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title. Omit to leave it alone. | |
| labels | No | Existing board label names to add. Labels are never removed. | |
| task_id | Yes | Task id to edit. | |
| due_date | No | New deadline as ISO-8601. Omit to leave it alone. | |
| task_type | No | Change the kind: project, story or link. | |
| description | No | Replacement description. Omit to leave it alone. | |
| due_date_met | No | Mark the deadline as met, or not, without moving the task. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=false, so the agent knows this is non-destructive. The description adds behavioral context beyond annotations by specifying the ownership constraint ('Only tasks you hold, or tasks nobody has claimed, can be edited'), which is critical for safe invocation. However, it could also mention what happens on failure (e.g., if the task is claimed by another worker), earning a 4 rather than 5.
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 sentences with zero wasted words. The first sentence is front-loaded with the verb and objects, and the second sentence adds critical usage constraints. Every sentence earns its place.
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's moderate complexity (7 parameters, 1 required), full schema description coverage, presence of an output schema, and clear annotations, the description is complete. It covers purpose, usage constraints, and ownership rules without needing to explain return values (handled by output schema). No gaps remain for an agent to safely invoke this 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 each parameter already has a description in the schema. The tool description adds value by grouping the parameters ('title, description, deadline or labels') and framing their purpose ('Refine a task's...'), but does not add new semantics beyond what the schema provides. A 4 is appropriate for good grouping without extra detail.
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 'Refine' and clearly identifies the resources acted upon ('task's title, description, deadline or labels'). It also gives a concrete example use case ('after investigating and learning what the work actually involves'), which strongly distinguishes it from siblings like 'create_task', 'get_task', or 'move_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?
The description explicitly states when to use this tool ('after investigating and learning what the work actually involves') and provides clear exclusion criteria: 'Only tasks you hold, or tasks nobody has claimed, can be edited; another worker's task is never touched.' This directly guides the agent on when not to use it and implicitly distinguishes it from related tools like 'claim_task', 'release_task', or 'update_status'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiARead-only
Who this server is acting as, and what it is allowed to do. Call it when a request might exceed your rights, so you can say so instead of failing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds context about the server's role and permission awareness, and notes that it can be used to preempt failures due to insufficient rights. No contradictions with annotations.
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, front-loaded with the core purpose, and every clause adds value. It is concise without omitting necessary guidance.
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 introspection tool with an output schema and thorough annotations, the description is fully complete. It explains what the tool does and when to invoke it, leaving no gap in understanding.
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 description coverage is 100%, so there are no parameter details needing explanation. The baseline of 4 applies because no parameter information is required.
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 that the tool reports the server's active identity and allowed actions, distinguishing it from all sibling tools which operate on boards, tasks, and projects. The phrasing 'Who this server is acting as, and what it is allowed to do' is specific and unambiguous.
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 explicitly says to call this tool when a request might exceed rights, giving a concrete trigger condition. This provides a clear 'when to use' directive, and no alternatives are needed since this is a unique introspection tool.
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
v0.3.0- Added
copy_project_structure - Added
create_board - Changed
create_list1 field changed- added
Input schema / properties / colorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Column colour, e.g. berry-red, lagoon-blue, bright-moss.", + "title": "Color" +}
- Changed
create_project7 fields changed- added
Input schema / $defsAdded value: +{ + "Stage": { + "description": "One workflow column, when the caller wants to state the type outright.", + "properties": { + "name": { + "description": "Column name, e.g. 'Ready for QA'.", + "title": "Name", + "type": "string" + }, + "type": { + "default": "active", + "description": "active (work stage) | waiting (on hold) | inactive (out of flow) | closed (Planka marks cards here as finished).", + "title": "Type", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "Stage", + "type": "object" + } +} - added
Input schema / properties / default_card_typeAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Default kind for new tasks: project, story or link.", + "title": "Default Card Type" +} - added
Input schema / properties / default_viewAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "How it opens: kanban, grid or list.", + "title": "Default View" +} - added
Input schema / properties / expand_checklistsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Show checklists expanded on the task front.", + "title": "Expand Checklists" +} - changed
Input schema / properties / lists / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "$ref": "#/$defs/Stage" + }, + "type": "array" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Input schema / properties / lists / descriptionPrevious value: -"Workflow stages to create, in order. Defaults to To Do / In Progress / Review / Done."New value: +"Workflow stages in order. Either plain names, or {name, type} to set each type outright. Plain names are typed by convention: a 'done'-style name becomes a closed list. Defaults to To Do / In Progress / Review / Done." - added
Input schema / properties / project_typeAdded value: +{ + "default": "project", + "description": "project (holds work) | library | collection. Only 'project' projects are scanned for tasks.", + "title": "Project Type", + "type": "string" +}
- Changed
create_task2 fields changed- added
Input schema / properties / into_listAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Land it in this list, by name or id, instead of the project's todo stage.", + "title": "Into List" +} - added
Input schema / properties / task_typeAdded value: +{ + "default": "project", + "description": "project (ordinary work) | story (user story) | link (a pointer to something elsewhere).", + "title": "Task Type", + "type": "string" +}
- Changed
manage_labels1 field changed- added
Input schema / properties / colorsAdded value: +{ + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Colour for labels being created or recoloured: {label name: colour}. Colours are Planka's own names, e.g. berry-red, lagoon-blue, sunny-grass. Unset ones cycle through the palette.", + "title": "Colors" +}
- Added
update_board - Changed
update_checklist2 fields changed- added
Input schema / properties / assign_itemsAdded value: +{ + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Give checklist items an owner: {item name: person}. The person is resolved like anywhere else, by name, email or id.", + "title": "Assign Items" +} - added
Input schema / properties / depends_on_tasksAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Task ids this task waits for. Each becomes a linked checklist item, which is how Planka models a dependency.", + "title": "Depends On Tasks" +}
- Changed
update_list2 fields changed- added
Input schema / properties / afterAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Reorder: place this column after that one (name or id). Pass 'first' to move it to the front.", + "title": "After" +} - added
Input schema / properties / colorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New colour for the column.", + "title": "Color" +}
- Changed
update_project4 fields changed- added
Input schema / properties / always_show_task_creatorAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Show who created each task on its front.", + "title": "Always Show Task Creator" +} - added
Input schema / properties / default_card_typeAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Default kind for new tasks: project, story or link.", + "title": "Default Card Type" +} - added
Input schema / properties / expand_checklistsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Show checklists expanded on the task front.", + "title": "Expand Checklists" +} - added
Input schema / properties / limit_to_default_card_typeAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Allow only the default kind of task.", + "title": "Limit To Default Card Type" +}
- Changed
update_task_details3 fields changed- added
Input schema / properties / due_date_metAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Mark the deadline as met, or not, without moving the task.", + "title": "Due Date Met" +} - added
Input schema / properties / task_typeAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Change the kind: project, story or link.", + "title": "Task Type" +} - added
Input schema / properties / titleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New title. Omit to leave it alone.", + "title": "Title" +}
30 tool updates
v0.1.5- First observed
add_comment - First observed
add_result - First observed
admin_manage_person - First observed
assign_people - First observed
attach_link - First observed
claim_task - First observed
create_list - First observed
create_project - First observed
create_task - First observed
delete_list - First observed
find_informal_assignments - First observed
find_tasks - First observed
get_project - First observed
get_task - First observed
list_actionable_tasks - First observed
list_boards - First observed
list_people - First observed
list_projects - First observed
manage_labels - First observed
move_task - First observed
release_task - First observed
set_project_members - First observed
set_task_labels - First observed
unassign_people - First observed
update_checklist - First observed
update_list - First observed
update_project - First observed
update_status - First observed
update_task_details - First observed
whoami
TDQS
Scored across 33 tools
Tools generally map to distinct resource/action pairs (boards, projects, lists, tasks, labels, people), and the descriptions explicitly differentiate close pairs like move_task vs update_status and create_project vs copy_project_structure. A few genuine overlaps remain—update_task_details and set_task_labels both change labels, and attach_link vs add_result both attach output—but they are unlikely to cause frequent misselection.
Almost every tool follows a verb_noun snake_case pattern (list_boards, create_task, update_status, assign_people), which makes the set predictable. Minor deviations like whoami and admin_manage_person, plus compound names like find_informal_assignments, keep it from being perfectly uniform.
33 tools is beyond the 25-tool threshold and feels heavy for a single server, even for a rich project-management domain. Several tools bundle multiple operations (admin_manage_person) and label-related behavior is split across three tools, so the surface could be consolidated.
The lifecycle is well covered: boards/projects/lists can be created and updated, tasks have claim/status/assignment/result/comment flows, and search/audit tools expose informal assignments. Missing destructive or cleanup operations (delete/archive task, delete board/project, remove attachment/comment) are notable but mostly work-aroundable.
Maintenance
Related MCP Connectors
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
AI agents use CalmBoard MCP to access board data, tasks, insights, and project workflows.
AI-native Kanban board — connect Claude to claim, work and move your tasks over MCP.
AI work orchestration for plans, tasks, teams, and coding-agent dispatch.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI assistants to interact with Planka, a real-time Kanban board application, for managing projects, boards, lists, cards, and more.1021 npm5MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Planka kanban boards, including creating, updating, and organizing tasks, lists, and cards via MCP.15 npm59MIT
- AlicenseAqualityBmaintenanceEnables AI agents to manage a task board by investigating needs, creating well-specified tasks, and executing them end-to-end.6MIT
- AlicenseBqualityCmaintenanceEnables AI agents to manage tasks through a board with backlog, ready, in-progress, and done columns, plan daily work, track velocity, forecast backlog completion, and leverage rule-based or DeepSeek-powered recommendations.22MIT