TaskLite MCP
TaskLite MCP lets you build and manage a complete backend from an MCP client: schema, data, REST APIs, automations, and hosted frontends.
Accounts & connections: sign up, connect with an API key or email/password, switch/disconnect accounts, check connection status, list organizations.
Schema building: create projects, boards, and typed columns (text, number, status, dropdown, relation, formula, etc.), update/delete/reorder columns, and read board schemas.
Data management: create/update/delete items, set individual cell values, query/list all items with optional paging, export whole projects as JSON.
Comments: list, add, edit, and delete comments on items, with @mentions and attachments.
External access: configure registration policy (open/approval/closed) and app login URLs for external users.
REST APIs for frontends: create apps, publish them, expose boards as endpoints with custom columns/methods and row-level security, create app API keys, list/update endpoints, and fetch app specs or frontend prompts.
Hosting: deploy static frontends from files, zip URL, or a local build folder; list deployment versions and roll back to earlier ones; hosted pages call APIs through a relative proxy with no browser API key.
Automations: create/list automations triggered by item/status/column changes, dates, or schedules; actions include HTTP requests, notifications, emails, status/column changes, cross-board items, webhooks, and delays.
Search & fetch: full-text search across projects/boards/items and fetch full records by id, useful for ChatGPT-style connectors.
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., "@TaskLite MCPCreate a backend for a CRM app with a deals board, columns, and a REST endpoint."
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.
@tasklite/mcp
A backend and an admin for apps built by AI agents. tasklite.net · docs
Describe a system and get the thing behind it: a project with typed tables and relations, rows, REST endpoints, an API key, and an admin interface the business itself operates afterwards. From Claude Code, Claude Desktop, ChatGPT, Gemini, Cursor or VS Code. Deploy a frontend onto it and hand the whole thing over.
Not the CLI task manager. There is an older, unrelated project also called TaskLite, ad-si/TaskLite at tasklite.org, a command-line task manager. This is a different product from a different author: a hosted backend at tasklite.net, published as
@tasklite/mcpand asnet.tasklite/mcpin the MCP registry.
The 48 tools
Every tool declares readOnlyHint, destructiveHint and openWorldHint, so a
client can tell what is safe to run unattended.
Area | Tools |
Account |
|
Structure |
|
Data |
|
Comments |
|
Apps and API |
|
Frontend hosting |
|
Automation and push |
|
build_backend is the one to reach for first: it takes a description of a
system and creates the project, the boards, their typed columns including the
relations between them, sample rows, and a published REST API with a key, in
one call, instead of a dozen.
Related MCP server: MCP-Maker
Setup
Install the package (and Claude Code if you don't have it), then add the server
by its binary. That avoids a known Windows issue where claude mcp add
mis-parses npx -y.
npm install -g @anthropic-ai/claude-code @tasklite/mcp
claude mcp add tasklite -- tasklite-mcpAdd -s user to claude mcp add to make it available in every project
(claude mcp add -s user tasklite -- tasklite-mcp); the default scope is the
current project only.
Then tell Claude what you want to build. The sign_up tool creates your account, organization, and connection from the conversation (a strong random password is generated locally and never shown; use "forgot password" with your email for web access).
Already have an account? Create a key at TaskLite → Integrations → "Connect Claude Code" and use:
claude mcp add tasklite -e TASKLITE_API_KEY=tl_xxx -- tasklite-mcpHosted (no install)
Point any MCP client at the hosted server; there is nothing to install locally:
claude mcp add --transport http tasklite https://mcp.tasklite.net/mcp \
--header "Authorization: Bearer tl_xxx"The hosted server is stateless: every request carries its own credential, so one endpoint serves every account safely.
Simplest of all: the connector. In Claude (claude.ai or the desktop app), Settings → Connectors → add TaskLite, or add it by address using the URL above. You sign in once over OAuth; there is no key to create or store. Note that the tools appear in a new chat, not in the conversation you were already in.
Optional env: TASKLITE_API_URL (default https://api.tasklite.net), TASKLITE_APP_URL (default https://app.tasklite.net).
Other clients
One hosted server, every MCP client. Full setup notes: https://tasklite.net/docs/guides/connector-from-cursor-codex-desktop
Cursor: Add to Cursor or put
{"mcpServers":{"tasklite":{"url":"https://mcp.tasklite.net/mcp"}}}in.cursor/mcp.json.VS Code: Install in VS Code or
.vscode/mcp.jsonwith{"servers":{"tasklite":{"type":"http","url":"https://mcp.tasklite.net/mcp"}}}.ChatGPT: Settings → Connectors (developer mode) → add
https://mcp.tasklite.net/mcp. The server implementssearchandfetch.Gemini CLI:
gemini extensions install https://github.com/shimon-ks/tasklite-mcp(this repo shipsgemini-extension.json), or addhttpUrl+oauthto~/.gemini/settings.json.OpenAI Responses API / Agents SDK, Gemini API: pass the hosted URL with
Authorization: Bearer tl_….
Typical flow (what Claude Code does)
create_project→create_board→create_column× N builds the schema.create_item/query_itemsseed and inspect data.create_app→create_app_endpoint(with exposedColumns + RLS) →create_app_api_keyexpose the REST surface for your frontend.get_app_spec/get_frontend_promptgenerate the frontend against it.Every tool returns an
adminUrl, the ready-made admin for the end client.
Hosting your frontend
deploy_frontend puts a static frontend on https://{slug}.tasklite.dev.
No server, no hosting account, no CI to configure. Hand the site over in one
of three ways:
deploy_frontend(appId: "app-xxxxxx", files: [{ path: "index.html", content: "<!doctype html>…" }, { path: "app.js", content: "…" }])
deploy_frontend(appId: "app-xxxxxx", zipUrl: "https://github.com/you/site/releases/download/v1/dist.zip")
deploy_frontend(appId: "app-xxxxxx", dir: "./dist")files is the path from ChatGPT or any hosted client: the assistant writes the
page and deploys it in the same turn. zipUrl takes an export from Lovable,
Bolt or a GitHub release. dir is for an MCP running on the machine with the
build output.
Hosted pages call the app API through the relative path /api/{endpoint}. The
hosting proxy attaches the app identity server-side, so the browser never
carries an API key. list_deployments shows the versions and
rollback_deployment points the live URL back at an earlier one.
Security model
The
tl_key is exchanged for a short-lived JWT (POST /public/v1/auth/session); all calls run with the key owner's own permissions, never super-admin.App API keys belong in server-side env vars (Next.js API routes), never in browser code. Frontends hosted on
tasklite.devneed no key at all.
Development
npm install
npm run build
TASKLITE_API_KEY=tl_xxx TASKLITE_API_URL=http://localhost:3333 node dist/index.jsLicense
MIT
Available Tools
48 toolsadd_commentAInspect
Post a comment on an item's thread. To notify people, pass their user ids in mentionedUserIds (each also appears as an @mention). attachmentIds references already-uploaded files. Needs projectId and itemId.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | Item (row) id | |
| content | Yes | The comment text | |
| projectId | Yes | Project id (from list_projects / create_project) | |
| attachmentIds | No | Ids of already-uploaded attachments to link | |
| mentionedUserIds | No | User ids to @mention and notify |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a mutating, non-destructive operation. The description adds useful behavioral context: mentions notify users and appear as @mentions, and attachments are not uploaded but referenced. However, it does not discuss return behavior, required permissions, or error conditions, so it is adequate but not particularly rich.
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 concise sentences with the main action front-loaded and optional-parameter behavior explained efficiently. There is no wasted text; every sentence adds useful operational detail.
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 create operation with five flat, fully documented parameters and no nested objects or enums, the description is nearly complete. It states required context and clarifies the meaning of optional parameters. The only notable gap is that it doesn't describe the response object, but that is not essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description mostly restates schema semantics (e.g., attachmentIds references already-uploaded files, mentionedUserIds are @mentions), without adding significant new meaning 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 opens with a specific verb and resource: 'Post a comment on an item's thread.' This clearly identifies it as a create operation and distinguishes it from comment-management siblings like list_comments, update_comment, and delete_comment.
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 explains prerequisites (projectId and itemId) and optional behaviors (mentionedUserIds trigger notification, attachmentIds must reference already-uploaded files), but it never explicitly states when to prefer add_comment over alternatives or when not to use it. The usage context is implied rather than direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_backendAInspect
Build a whole backend in one call from a spec you compose: the project, its boards, their typed columns (including relations between the boards), optional sample rows, and optionally a published REST API with one endpoint per board and a server-side key. Use it whenever the user describes a system ("a backend for my repair shop: customers, orders, payments") instead of calling create_project, create_board, create_column, create_app, publish_app, create_app_endpoint and create_app_api_key one by one. You do the design — pick column types by meaning (phone, date, currency, dropdown/status with options for closed choices), link boards with a relation column (type "relation", relatedBoard: "", relationType: many_to_one for an order→customer link) — and this tool executes it and returns one compact summary. API field names are derived from column names and never collide with reserved item fields, so there is nothing to retry. Boards are created as plain data tables (kind "data": only the columns you define, no task fields); set kind "tasks" on a board where people track work to do and want status, priority, assignee and due date built in. Every row still has a title.
| Name | Required | Description | Default |
|---|---|---|---|
| api | No | Include to publish a REST API over every board and mint a key; omit for a boards-only build | |
| boards | Yes | The boards (tables) of the backend, in any order | |
| project | Yes | The project that holds the boards | |
| organizationId | No | Organization id; needed only when the account belongs to several (the error then lists them) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only and not destructive, so the description's 'executes it' is consistent. The description adds useful behavioral context: it performs design choices, creates everything in dependency order, derives API field names with a no-retry guarantee, and returns a compact summary. That goes beyond the annotations without contradicting them.
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 long but dense and front-loaded with the core purpose and usage distinction. Later sentences earn their place by covering relations, task boards, API naming, and row title behavior. Some detail overlaps with the schema, but the structure is logical and not padded.
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?
This is a high-complexity orchestration tool with nested objects and no output schema, yet the description covers the expected result ('one compact summary'), key edge behaviors (dependency order, relation resolution, API name derivation), and the primary alternative path. It does not fully specify response shape or error scenarios, but the provided context is sufficient for an agent to call 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 coverage is 100% and the schema itself is rich, so the description does not need to restate parameter meaning. It adds value above the schema by explaining design intent (pick column types by meaning, link boards with relation columns, relatedBoard references, row title rules, kind defaults). This helps the agent compose a correct spec beyond just filling fields.
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: 'Build a whole backend in one call from a spec you compose', enumerating project, boards, columns, sample rows, and optional REST API. It explicitly contrasts itself with granular siblings by naming create_project, create_board, create_column, create_app, publish_app, create_app_endpoint and create_app_api_key, so an agent can immediately distinguish it from those tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Use it whenever the user describes a system... instead of calling [siblings] one by one.' It also tells when to use kind 'tasks' versus 'data', and explains when to include or omit the api object. This is strong routing and selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_external_accessAIdempotentInspect
Read or change how EXTERNAL users (people who sign up to your app through TaskLite auth: POST /auth/register-external with this organizationId, then POST /auth/login) get into an organization. registrationPolicy: "open" — in at once; "approval" — an organization admin approves each signup (TaskLite mails the admins on every signup, and the person once approved; unapproved users are never billed); "closed" — invite only, self-signup refused. appLoginUrl: the page of YOUR app where these users log in — it becomes the "Log in" button in the approval email, so set it whenever you deploy an app that uses this flow; pass "" to clear. Call with no changes to just read the current settings. Requires organization admin.
| Name | Required | Description | Default |
|---|---|---|---|
| appLoginUrl | No | https URL of your app's login page for external users; "" clears it | |
| organizationId | No | Defaults to the credential organization | |
| registrationPolicy | No | How external sign-ups are admitted: open, approval or closed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only convey idempotent, non-destructive, read-write hints. The description adds important behavioral detail: approval mode emails admins on every signup, unapproved users are never billed, appLoginUrl becomes the approval email button, and reading is supported by calling with no changes. 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?
The description is dense and front-loaded with the core purpose, then details each policy and parameter. Every sentence adds value, though the long run-on style could be tightened without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a configuration tool with three optional parameters and no output schema, the description is complete: it covers permissions, read vs. change behavior, every enum value, the appLoginUrl semantics, side effects, and prerequisites. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description substantially enriches each parameter: it explains the real-world meaning of open/approval/closed, the admin email and billing implications, the appLoginUrl button behavior, and the '' clearing convention. This goes far beyond the 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 names a specific verb ('Read or change') and a clear resource: how external users get into an organization via registrationPolicy and appLoginUrl. It also distinguishes this configuration tool from general authentication tools like sign_up and login by spelling out the external-user flow it controls.
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 concrete usage context: call with no changes to read settings, set appLoginUrl when deploying an app using this flow, pass '' to clear it, and organization admin rights are required. It doesn't explicitly name sibling alternatives, 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.
connectAInspect
Connect this machine to an existing TaskLite account, or switch to a different one. Takes a personal API key (tl_...) created at TaskLite → Integrations → "Connect Claude Code". Replaces the current connection if there is one — use this to switch user or organization. The switch takes effect immediately; no restart.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | Personal TaskLite API key, starts with tl_ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that the tool replaces the current connection and that the switch takes effect immediately with no restart. This is useful behavioral context. The annotations already establish readOnlyHint=false and openWorldHint=true, so the description adds meaningful side-effect information without contradicting them.
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 tool's core purpose, followed by key details on the API key, replacement behavior, and immediacy. Every sentence earns its place and there is no 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 single-parameter connection tool with no output schema, the description covers the purpose, the input needed, the side effect of replacing an existing connection, and the timing of the switch. An agent has enough information 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 coverage is 100%, so the schema already documents the apiKey parameter, including the tl_ prefix. The description adds where the key is created (TaskLite → Integrations → 'Connect Claude Code'), which is helpful, but it does not substantially change parameter semantics 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 states a specific verb and resource: connecting this machine to an existing TaskLite account, and additionally switching accounts. It clearly distinguishes itself from siblings like sign_up or disconnect by specifying 'existing account' and 'switch to a different one.'
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 for when to use the tool: connect to an existing account or switch user/organization. It explicitly says 'use this to switch user or organization,' but it does not explicitly name alternatives such as sign_up or login or say when not to use those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connection_statusARead-onlyInspect
Check whether this machine is connected to a TaskLite account. Call this first if any tool fails with an auth error.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint by explaining its role in the authentication workflow, which is not implicit from the annotation alone.
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 with no redundant information. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides both the function (check connection) and the scenario in which it is needed, making the tool self-contained for an 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?
No parameters exist, so there is nothing to explain. The description is complete without parameter details.
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 the tool's purpose: checking connection to a TaskLite account. The verb 'check' is specific and the resource is well-defined.
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 instructs when to use the tool ('Call this first if any tool fails with an auth error'), providing actionable guidance on ordering and error handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_appAInspect
Create an app — a named API surface over the boards of a project, for an external frontend. Then add endpoints and an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name | |
| projectId | Yes | Project id (from list_projects / create_project) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate that the operation is not read-only and not destructive; the description adds that the operation creates a scoped app entity and that endpoints/API keys are left for later steps. This aligns with annotations and provides workflow context beyond the structured fields. It could say more about side effects, but the main behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the core action and resource, and followed by a brief next-step clause. Every word earns its place; there is no filler or repetition of schema details.
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?
This is a simple creation operation with fully described schema parameters and no nested objects or output schema, so the description carries a modest burden. It explains what an app is and that endpoint/API-key setup follows. A small gap is that it does not state what is returned, such as the newly created app id, which an agent may need for subsequent steps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all three parameters, so the baseline is 3. The description loosely maps to name and projectId through 'named API surface' and 'boards of a project,' but it does not add details like idempotency, name uniqueness, or the organizationId default. It provides no meaningful semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create an app' and defines it as 'a named API surface over the boards of a project, for an external frontend.' This clearly distinguishes it from project/board/item creation tools. The phrase 'Then add endpoints and an API key' also separates it from endpoint/key-related sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description positions create_app as the first step in a workflow: create the app, 'Then add endpoints and an API key.' This implies the subsequent use of sibling tools such as create_app_endpoint and create_app_api_key, though it does not name them explicitly. It gives useful context but does not include exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_app_api_keyAInspect
Create an API key for an app. SECURITY: the key must live server-side only (env var, Next.js API routes) — never in browser code. If the app has its own users, the server also sends X-App-User: <user id> with the key so per-user endpoints know who is acting.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Human-readable name | |
| appId | Yes | App id or slug (from list_apps / create_app) | |
| scopes | No | Permissions recorded on the key: ["read"] or ["read","write"]. Omit to match the app: write when any endpoint accepts POST, PATCH or DELETE. | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses expected behavior (server-side key usage) and a conditional behavior (X-App-User header for apps with their own users). This adds meaningful operational detail not covered by 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 concise and well-structured: a single-purpose statement followed by two brief security/usage notes. No redundant or extraneous 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 creation tool, the description provides adequate context including security and conditional header usage. It does not mention the return value (e.g., the API key itself), but since there is no output schema and the purpose is clear, this is not a critical omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all four parameters with 100% coverage. The tool description adds no significant parameter-specific detail; it focuses on usage and security, so it does not enrich parameter semantics 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 action ('Create an API key') and the resource ('for an app'), with no ambiguity. It also includes a security note that differentiates it from other app-related tools like create_app or create_app_endpoint.
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 usage context by explaining secure server-side storage and the conditional X-App-User header behavior. It does not explicitly mention when to choose this tool over sibling alternatives, but the purpose is self-explanatory enough that alternatives are not necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_app_endpointAInspect
Expose a board as a REST endpoint of an app: /apps/{appSlug}/api/{slug}. exposedColumns limits which columns are readable/writable. rowLevelSecurity.enabled makes the endpoint per-user: the developer's server sends X-App-User: <their user id> next to the API key, and the endpoint returns, updates and deletes ONLY that user's rows (401 without the header). Use it whenever the app has its own users.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name | |
| slug | Yes | URL slug: lowercase letters, digits and dashes | |
| appId | Yes | App id or slug (from list_apps / create_app) | |
| boardId | Yes | Board id (from list_boards / create_board) | |
| allowedMethods | No | HTTP methods the endpoint accepts: GET, POST, PATCH, DELETE | |
| exposedColumns | No | Columns the endpoint reads and writes, with the JSON key each one gets; without it the endpoint returns bare metadata | |
| organizationId | No | Organization id; defaults to the credential organization when omitted | |
| rowLevelSecurity | No | Row-level security: when enabled, each app user sees and edits only their own rows |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains important runtime behavior, especially row-level security: the X-App-User header requirement, 401 behavior, and that only the user's rows are returned, updated, and deleted. It also clarifies readable/writable columns, which is useful beyond the annotations' readOnlyHint=false.
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 dense but efficient, front-loading the core purpose and then explaining key behavior without repeating schema details. It packs important security and column semantics into a compact, well-structured explanation.
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 most complex aspects: exposed columns and row-level security, including the reserved alias fields and per-user behavior. It does not describe the response format, but the schema already provides full parameter context and the output is likely a standard endpoint object, so this is a minor 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?
Every parameter is described in the schema, and the description adds meaningful semantics: exposedColumns limits read/write access, rowLevelSecurity scopes requests per user, and alias naming restrictions avoid reserved fields. This goes well beyond the baseline 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 tool's purpose: exposing a board as a REST endpoint, with the exact URL pattern. This distinguishes it from sibling tools like list_app_endpoints and update_app_endpoint while aligning with the create_app_endpoint name.
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 a strong usage condition: 'Use it whenever the app has its own users' for row-level security. It does not explicitly contrast with alternatives, but the purpose is clear enough for an agent to select it over related endpoint tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_automationAInspect
Create an automation on a board: when something happens, do something. The most useful action here is http_request, which calls an external API and writes the answer back into columns — pair it with the "scheduled" trigger and the board keeps itself up to date (prices, exchange rates, shipment status, weather). Triggers: item_created, status_changed, column_value_changed, date_approaching, scheduled. Actions: http_request, send_notification, send_email, change_status, set_column_value, create_cross_board_item, send_webhook. Two more things every action list can use: a { type: "delay", config: { minutes | hours | days } } action pauses the run and resumes the actions after it later (reminders, follow-ups); and any network action (http_request, send_webhook, send_email, send_whatsapp) may carry config.retry: { attempts (1-5), delaySeconds (1-60) }. send_webhook accepts config.secret for an HMAC signature.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name | |
| actions | Yes | e.g. [{ type: "http_request", config: { url: "https://api.frankfurter.app/latest?from=USD&to=ILS", method: "GET", responseMapping: [{ path: "rates.ILS", columnId: "<column id from get_board_schema>" }] } }] | |
| boardId | Yes | Board id (from list_boards / create_board) | |
| trigger | Yes | Event that starts the automation: item_created, status_changed, column_value_changed, date_approaching, or scheduled (cron) | |
| isActive | No | Whether it is active | |
| projectId | Yes | Project id (from list_projects / create_project) | |
| triggerConfig | No | e.g. { cron: "0 8 * * *" } for scheduled, { columnName } for column_value_changed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only state readOnlyHint=false and destructiveHint=false. The description adds meaningful behavioral detail: http_request writes responses back into columns, delay actions pause and resume the run, network actions support retry config, and send_webhook accepts an HMAC secret. 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?
The description is dense but well organized: it starts with the core purpose, highlights the most useful action pattern, then compactly enumerates triggers, actions, and cross-cutting options like delay and retry. Every sentence contributes useful information without 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 complex tool with 7 parameters, nested objects, and no output schema, the description covers invocation well: all trigger and action categories, common configs, and examples. The main omissions are the return format and when triggerConfig is required, but these are minor relative to the overall 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?
Although schema coverage is 100%, the description adds essential value beyond the schema by giving concrete examples for the actions array, triggerConfig, delay behavior, retry settings, and webhook secret usage. This is especially important for the complex nested actions parameter.
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-resource pair ('Create an automation on a board') and explains the trigger/action model in plain language. The enumerated triggers and actions clearly identify what the tool does and distinguish it from sibling tools like list_automations or create_board.
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 concrete use context, such as pairing the scheduled trigger with http_request to keep a board updated with prices or exchange rates, and lists valid triggers and actions. It does not explicitly say when not to use the tool or name alternatives, but the guidance is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_boardAInspect
Create a board (a data table) inside a project. Add typed columns with create_column afterwards. kind: "tasks" (default) also gives the board the built-in task columns — status, priority, assignee, due date, tags — for work people track; "data" creates a plain table with only the columns you add, for records such as customers, products or orders (requires a TaskLite server from 2026-09-06; older servers ignore kind).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | "tasks": with the built-in task columns (status, priority, assignee, due date, tags). "data": only the columns you add. Default tasks. | |
| name | Yes | Human-readable name | |
| projectId | Yes | Project id (from list_projects / create_project) | |
| description | No | Free-text description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint: false and destructiveHint: false, so the mutation behavior is not new. The description adds valuable behavioral context beyond annotations: tasks boards include built-in columns, data boards contain only added columns, and older servers ignore the kind parameter. This version-dependent behavior is a useful disclosure that annotations 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 compact and information-dense without fluff. It front-loads the core purpose, then addresses column creation and kind nuances, including the important version caveat. Every sentence contributes to correct invocation.
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 purpose, kind behavior, defaults, server compatibility, and the relationship with create_column. It does not mention the return value or error cases, but given the simple create operation and rich schema, the essential context for an agent to select and invoke the tool is present.
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 meaningful semantics beyond the schema by explaining the difference between tasks and data with concrete examples and clarifying that columns are added separately. This enhances parameter understanding, especially for kind and its server-version constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Create a board (a data table) inside a project.' It also differentiates board creation from later column creation with 'Add typed columns with create_column afterwards.' The two kinds, tasks and data, are explained with distinct use cases, so an agent can understand what the tool does relative to siblings.
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 selection context by explaining when to choose tasks vs data boards, including examples like work tracking versus customer/product records. It also signals that column definition is a separate step handled by create_column. It does not enumerate exclusions or mention alternatives like update_board, but the context is strong enough for correct use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_columnAInspect
Add a typed column to a board. Valid types: text, rich_text, number, status, date, datetime, duration, people, checkbox, dropdown, label, priority, link, email, phone, relation, lookup, rollup, formula, rating, currency, file. Choose by meaning — date for dates, phone for phones, number/currency for amounts, dropdown/status (with settings.options as an array of labels) for closed choices; text is for free text only. An obvious name/type mismatch is rejected with the suggested type; pass force:true to override. Rules go in settings.validation: { unique, min, max, minLength, maxLength, pattern, patternMessage } — enforced on every write (UI, MCP, App API). Closed choices (dropdown/status) reject values outside settings.options unless settings.allowCustom is true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name | |
| type | Yes | Column type: text, rich_text, number, status, date, datetime, duration, people, checkbox, dropdown, label, priority, link, email, phone, relation, lookup, rollup, rating, currency, file | |
| force | No | Create the column even when the name suggests a different type | |
| boardId | Yes | Board id (from list_boards / create_board) | |
| settings | No | Type-specific settings. For dropdown/status/priority: options, either as labels ["A","B"] or as full objects [{value,label,color}] — labels are expanded server-side, and colors are assigned if you do not supply them. | |
| projectId | Yes | Project id (from list_projects / create_project) | |
| isRequired | No | Require a non-blank value on every App API create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behaviors: obvious name/type mismatches are rejected with a suggested type, force overrides this, validation rules are enforced on every write, and closed-choice types reject values outside options unless allowCustom is true. This goes well beyond the minimal 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 dense and front-loaded, but it repeats the full type list already present in the schema's type property. The extra guidance is valuable, but the list could have been shortened without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, parameter semantics, validation behavior, and key edge cases. Even without an output schema, the agent has enough context to call the tool correctly and understand the consequences.
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 describes every parameter, and the description adds substantial meaning: type selection semantics, settings.options formats, colors being assigned server-side, validation rule shape, and the meaning of force. This gives the agent a clear model of all relevant parameters.
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 the specific action: adding a typed column to a board. It clearly distinguishes this from sibling tools like update_column, delete_column, and reorder_columns.
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 practical guidance on when to use the tool and how to choose column types, including the meaning-based type selection advice and the force:true override. It does not explicitly contrast with update_column or other column tools, but the intended use is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_itemAInspect
Create an item (row) with all of its data in one call. cells maps columnId -> value (use get_board_schema for column ids); every cell is saved with the row. Use set_cell only for later edits.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags as an array of strings | |
| cells | No | Cell values keyed by column id: { "<columnId>": value }. Scalars, { amount, currency } for currency, { relatedItemIds: [...] } for relations | |
| title | Yes | Item title, shown as the row name | |
| status | No | Status value (todo, in_progress, done, or a value from the board's status options) | |
| boardId | Yes | Board id (from list_boards / create_board) | |
| dueDate | No | ISO date | |
| priority | No | Priority: low, medium, high or urgent | |
| projectId | Yes | Project id (from list_projects / create_project) | |
| description | No | Free-text description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint false, destructiveHint false), the description adds behavioral details: it performs a single call that saves all cells with the row, and it distinguishes this from set_cell, which is for later updates. This gives the agent a better understanding of the tool's execution model.
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) and front-loaded with the primary purpose. It avoids redundant language and packs essential guidance (cells mapping, set_cell distinction) into a small space without losing clarity.
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 create operation with no output schema, the description covers the key aspects: creation, the cells map, and the alternative for later edits. It does not mention return values, which is acceptable given the absence of an output schema, and the required parameters are clearly defined in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes each parameter, but the description adds value by explaining the 'cells' parameter more operationally (use get_board_schema for column ids) and emphasizing that every cell is saved in the same call. This goes beyond the schema's basic property 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 ('Create an item') and the resource ('item (row)'), and it distinguishes the tool from alternatives like set_cell by noting that all data is saved in one call. It also references get_board_schema for column ids, which is a specific usage hint.
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 set_cell only for later edits,' which provides a clear alternative and when-not-to-use guidance. It also explains how to use the 'cells' parameter with get_board_schema, offering operational context for a key parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectBInspect
Create a project (a business process container). Boards with data live inside projects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name | |
| description | No | Free-text description | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly false and destructive false, which aligns with the 'Create' verb. The description adds context about the project being a container for boards, but does not disclose any side effects or specific behaviors beyond the creation itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using only two sentences to convey the purpose and a key characteristic. It is well-structured, with the action stated first.
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 create operation with a fully described input schema, the description is adequate. It explains the fundamental concept of a project and its relationship to boards. It does not mention output or error cases, but these are not required given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all three parameters (name, description, organizationId). The tool description adds no additional semantic information, so it does not improve upon the 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?
States the specific action ('Create a project') and defines what a project is ('a business process container'). It gives enough context to distinguish from board creation, but could be more explicit about when to use this vs other create tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives such as create_board or list_projects. No conditions or selection criteria mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_boardADestructiveInspect
Delete a board with every item on it. Destructive and not undoable — confirm with the user first, and prefer delete_column when only part of the model is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | Board id (from list_boards / create_board) | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the destructiveHint annotation by specifying that the operation deletes all items on the board, is not undoable, and requires user confirmation. This is exactly the type of behavioral context that annotations alone do not convey.
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 compact sentence that front-loads the destructive scope, then adds the critical user-confirmation requirement and the sibling alternative. Every clause 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 two-required-parameter destructive tool with no output schema, the description covers all essential operational context: what is destroyed, irreversibility, confirmation requirement, and when to use a different tool. Nothing crucial for correct invocation 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 already documents both boardId and projectId with source hints from list/create calls, and schema description coverage is 100%. The description adds no 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 states a clear verb plus resource — 'Delete a board with every item on it' — and explicitly scopes the operation beyond the tool name by noting the cascade. This also differentiates it from delete_column, which is named as the narrower alternative.
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 confirm with the user before invoking, and names delete_column as the preferred alternative when only part of the model is wrong. This gives an agent concrete decision criteria rather than leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_columnADestructiveInspect
Delete a column and every value stored in it. Destructive — confirm with the user first. Use update_column when the column is right but its name, type or options are wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | Board id (from list_boards / create_board) | |
| columnId | Yes | Column id (from get_board_schema) | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly warns that the operation is destructive and advises confirming with the user first, adding context beyond the destructiveHint annotation. It also clarifies the scope (deletes every value stored in the column), which is valuable behavioral 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?
Two concise sentences deliver all necessary information without redundancy. It is well-structured, front-loading the core action and then adding critical caveats (destructive, confirm, alternative tool).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential context: what the tool does, its destructive nature, user confirmation, and when to avoid it. It does not mention potential cascading effects or dependencies on column references, but given the simplicity of the deletion operation and the absence of an output schema, this is sufficiently 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 description does not add any parameter-specific meaning beyond the schema. However, since the schema itself has 100% coverage for all three parameters (projectId, boardId, columnId), the description's lack of additional per-parameter details is acceptable and aligns with the baseline.
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 the action (delete a column) and the resource (column), and explicitly mentions that it removes all values stored in it. It also distinguishes itself from update_column, 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?
Provides explicit guidance on when to use this tool (deleting a column) and when to use the alternative update_column (when the column is right but name/type/options are wrong). This directly helps the agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_commentADestructiveInspect
Delete a comment from an item thread. Destructive — confirm with the user before calling. Needs projectId, itemId and the commentId.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | Item id (from query_items / create_item) | |
| commentId | Yes | Comment id (from list_comments / add_comment) | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already marks this as destructive, and the description adds a meaningful behavioral instruction: confirm with the user before calling. It also emphasizes that all three IDs are required. This goes beyond the structured annotations without contradicting them.
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, front-loaded with the core purpose, and every sentence adds value: what it does, the destructive warning, and the required IDs. There is no redundant or filler 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?
For a simple delete mutation with only three required parameters, rich schema descriptions, and a destructiveHint annotation, the description is complete. It covers the necessary IDs, the user-confirmation requirement, and the destructive nature, leaving no critical gap for an agent to call 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?
The input schema already documents all three parameters with clear provenance descriptions (e.g., commentId from list_comments / add_comment). The description merely lists the parameter names without adding new semantic information, so a baseline score of 3 is appropriate given full 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 a specific action ('Delete a comment from an item thread') and identifies the exact resource and scope. It is immediately distinguishable from sibling tools like list_comments, add_comment, and update_comment.
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 for when the tool should be used: whenever a comment needs to be deleted, and it explicitly notes that the user should confirm before calling because the operation is destructive. It does not name alternative tools or explicitly state exclusions, 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.
delete_itemADestructiveInspect
Delete an item. Destructive — confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | Item id (from query_items / create_item) | |
| boardId | Yes | Board id (from list_boards / create_board) | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'Destructive' and the confirmation requirement beyond the annotations (destructiveHint: true). It clearly signals the side effect of permanent deletion, aligning with the annotation.
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 brief and to the point, with no unnecessary words. It effectively communicates the purpose and the key warning in two short sentences.
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 absence of an output schema, the description covers the essential context: what the tool does and the required user confirmation. It could mention permanence explicitly, but the destructive hint and warning make it sufficiently clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not describe the parameters, but the schema already provides detailed descriptions for all three with 100% coverage. The description adds no additional semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete an item') with a specific verb and object, and the destructive warning adds clarity. It is easily distinguished from sibling tools like create_item or update_item.
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 guidance to 'confirm with the user before calling', which is a clear precondition for use. It does not explicitly mention alternatives, but the destructive nature implies this is for intentional deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectADestructiveInspect
Delete a project with every board, column and row inside it. Destructive: confirm with the user first, and name the project in the confirmation. The project goes to the organization recycle bin, so it can be restored from the admin until it is emptied.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project id (from list_projects / create_project) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses the destructive nature, the confirmation requirement, and that the project goes to the recycle bin for admin restoration, going beyond the destructiveHint annotation.
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 and well-structured, covering scope, user instruction, and recovery in two sentences with 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?
It fully explains the action's impact and recovery path, and since there is no output schema, no further return-value documentation is needed.
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?
Both parameters are clearly described: projectId explains its source (list_projects/create_project) and organizationId notes the default behavior. Schema coverage is 100%.
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 deletes a project and all its contents (boards, columns, rows), distinguishing it from sibling delete tools like delete_board and delete_item.
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 instructs to confirm with the user first and name the project in the confirmation, providing clear usage guidance and safety instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_frontendAInspect
Deploy a static frontend to TaskLite hosting and get a live URL https://{slug}.tasklite.dev (HTTPS, auto-published on first deploy, versions kept for rollback_deployment). Hand over the frontend in ONE of three ways: files — the files inline (path + content), the way to go from ChatGPT or any hosted client: write index.html and its assets, then deploy in the same turn; zipUrl — a public https URL of a zip (a Lovable/Bolt export, a GitHub release asset); dir — a build output folder on this machine (only when the MCP runs locally next to the files). In the frontend, call the app API via relative /api/{endpoint} — the hosting proxy injects the app identity, so no key ships to the browser.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | Local path to the BUILD OUTPUT directory (the one containing index.html), not the project root. Only where the MCP runs on the same machine as the files | |
| appId | Yes | App UUID or slug (app-xxxxxx) — see list_apps | |
| files | No | The site files inline. Must include index.html. Up to 500 files / 8MB decoded — right for a frontend written in the conversation | |
| zipUrl | No | Public https URL of a zip of the BUILD OUTPUT (index.html at the root, or inside a single top-level folder). Up to 50MB | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses behavior beyond the annotations: auto-publishing on first deploy, version retention for rollback, HTTPS and live URL, and the proxy behavior that injects app identity via /api so no API key reaches the browser. These are meaningful context details and do not contradict the provided 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 dense but efficiently organized: the core purpose and URL format come first, followed by mode-specific guidance and a final note about API routing. Every sentence provides operational value, with no filler or redundant restating 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 and lack of an output schema, the description covers everything an agent needs to invoke it correctly: deployment modes, eligibility conditions, file constraints, resulting URL, versioning behavior, and how the deployed frontend should call the API. This is a complete and self-sufficient definition.
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?
While schema coverage is already 100%, the description adds decision-relevant meaning beyond the raw parameter descriptions. It explains when each deployment mode should be used, gives concrete examples like Lovable/Bolt exports, and adds constraints like file counts and sizes that reinforce and extend 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 opens with a specific action and outcome: 'Deploy a static frontend to TaskLite hosting and get a live URL'. It clearly identifies the resource and result, and it distinguishes itself from related tools like rollback_deployment by mentioning version retention.
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 enumerates the three accepted input modes and the conditions for choosing each: files for hosted clients/ChatGPT, zipUrl for Lovable/Bolt exports or GitHub release assets, and dir only when the MCP runs locally. This gives clear when-to-use guidance and even hints at when rollback_deployment would be relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnectADestructiveInspect
Disconnect this machine from TaskLite by forgetting the stored credential. Use before connecting a different account, or to revoke local access. Does not delete anything in TaskLite itself and does not revoke the key server-side.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently discloses the tool's local-only scope, stating that it does not delete anything in TaskLite or revoke the key server-side. This aligns with the destructiveHint annotation (the stored credential is removed) while clarifying that no broader destructive effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, consisting of two sentences that convey all necessary information without redundancy or extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no parameters, single action), the description fully covers what it does, when to use it, and its limitations. It leaves no gaps that would prevent an agent from using 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?
The tool has zero parameters, so there is nothing to describe. Per the rubric, a baseline of 4 is appropriate when no parameters exist. The description does not need to add parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: disconnecting the machine from TaskLite by forgetting the stored credential. It uses a specific verb ('disconnect') and resource ('machine from TaskLite'), and distinguishes it from server-side actions. This differentiates it from sibling tools like 'connect' and 'login'.
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?
Explicit guidance is provided: 'Use before connecting a different account, or to revoke local access.' This clarifies when the tool should be invoked and contrasts with server-side revocation, leaving no ambiguity about its intended use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_projectARead-onlyInspect
The whole project as JSON — boards, columns with settings, items with their cells keyed by column id. For migrations, backups and reading a system back. Items are capped per board for the model's sake; the REST endpoint GET /organizations/{orgId}/projects/{projectId}/export.json returns everything.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project id (from list_projects / create_project) | |
| organizationId | No | Defaults to the credential organization | |
| maxItemsPerBoard | No | Default 200 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly and non-destructive. The description adds useful behavioral context beyond that: the item cap per board and the fact that the REST endpoint returns the complete export. No contradiction with annotations 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 two sentences and front-loads the key output shape and use cases. The phrase 'reading a system back' is slightly awkward and the full endpoint path adds minor noise, but overall it is compact and scannable.
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 export tool with no output schema, the description adequately covers output composition, intended use cases, the item cap, and the complete-data alternative. An agent has enough context to select and call 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 the input schema fully documents projectId, organizationId, and maxItemsPerBoard. The description does not add parameter-level semantics beyond the general cap behavior, 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 names a specific action (export), a resource (the whole project), and the exact content of the JSON: boards, columns with settings, items with cells keyed by column id. This clearly distinguishes it from sibling list_* and get_board_schema tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: for migrations, backups, and reading a system back. It also tells the agent that items are capped per board and that the REST endpoint returns everything, effectively providing an alternative when the full dataset is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchARead-onlyInspect
One project, board or item in full, by the id search returned (project:, board::, item:::) or by an app URL path. Returns { id, title, text, url, metadata } — the ChatGPT fetch contract; text is the record as JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | An id from search, or an app URL path such as /projects/…/boards/…/items/… | |
| organizationId | No | Only needed for project ids when the credential has no default organization; otherwise resolved automatically |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly and non-destructive behavior. The description adds useful behavioral details beyond that: the exact return shape and the important fact that text contains the record serialized as JSON. This gives the agent expectations for the response even without an output schema.
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 tight sentences deliver resource scope, id formats, invocation source, and return contract with no filler. The most important identifying information is front-loaded.
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 tool with one required parameter, the description covers id formats, invocation alternatives, and the return contract, compensating for the missing output schema. The optional organizationId is adequately documented in the input schema, so nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by spelling out the composite id encodings (project:<id>, board:<projectId>:<boardId>, item:<projectId>:<boardId>:<itemId>) and the app URL-path alternative, which is more specific than the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (fetch) acting on a specific resource (one project, board, or item) and gives exact id formats and URL-path alternatives. This clearly distinguishes it from listing, searching, and mutating siblings.
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 says the id comes from a previous search and that app URL paths are also accepted, giving the agent concrete when-to-call context. It does not explicitly name alternatives or exclusions, but the usage context is clear enough for selecting this tool over search/list siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_specARead-onlyInspect
Get the machine-readable spec of an app (base URL, endpoints, methods, fields) — use it to generate frontend API calls. appId accepts either the app UUID or its slug (app-xxxxxx); list_apps shows both. The returned baseUrl is absolute — use it verbatim, do not rebuild it from the admin URL.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App id or slug (from list_apps / create_app) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, and description adds behavioral note about returning an absolute baseUrl to use verbatim.
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 concise sentences, each adding distinct information, 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?
No output schema, but description lists spec contents and provides a caveat about baseUrl, covering key aspects for a read-only operation.
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 already describes both parameters; description adds minimal extra info beyond the schema, maintaining baseline.
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 the tool gets the machine-readable spec of an app, listing contents (base URL, endpoints, methods, fields) and purpose (generate frontend API calls), distinguishing it from listing tools like list_apps.
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 use case ('generate frontend API calls') and parameter guidance (appId accepts UUID or slug, list_apps shows both) but does not explicitly contrast with other app-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_board_schemaARead-onlyInspect
Get a board with its full column schema (ids, names, types, settings). Call this before creating items with cells.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | Board id (from list_boards / create_board) | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=true and destructiveHint=false. The description simply says 'Get a board' without adding side-effect context (e.g., auth needs, rate limits). Since annotations cover the main behavioral trait, a middle score is appropriate.
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, and clearly structured. It front-loads the core purpose and includes a practical note. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with just two parameters, the description covers the essential context: what is retrieved and why it is used. It does not specify return format, but no output schema exists, and the use case is clear. Minor omission of edge-case guidance prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% parameter coverage with descriptions for both boardId and projectId. The description adds no additional parameter meaning, so with high schema coverage, 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 verb and resource: 'Get a board' and specifies the detailed content: 'full column schema (ids, names, types, settings)'. It also distinguishes its purpose from list_boards by focusing on schema retrieval, and the use case 'before creating items with cells' reinforces its intent.
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 when to use the tool: 'Call this before creating items with cells.' This gives clear situational guidance, though it does not explicitly mention alternatives or when not to use it. The instruction is specific and actionable, earning a high score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_frontend_promptARead-onlyInspect
Get a ready-made prompt describing the app backend, for pasting into a frontend generator (v0/bolt/lovable/cursor). appId accepts the app UUID or its slug (app-xxxxxx) — use list_apps to find it.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | Target tool the prompt is written for | |
| appId | Yes | App id or slug (from list_apps / create_app) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint true and destructiveHint false, and the description's 'Get' wording implies no side effects. It does not describe return format or errors, but the read-only behavior is sufficiently covered by 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?
Description is two sentences with no redundant wording. It packs the purpose, use case, and parameter guidance efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has no output schema or nested objects, and all required parameter context is provided. The mention of list_apps gives sufficient integration 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?
All parameters are described with 100% schema coverage. appId is clarified to accept UUID or slug, organizationId notes its default behavior, and tool has an enum with an explanatory description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses the specific verb 'Get' and identifies a clear resource: a ready-made prompt describing the app backend for frontend generators. This distinguishes it from related tools like get_app_spec.
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?
Clearly states when to use the tool (when needing a prompt for frontend generators) and gives a prerequisite ('use list_apps to find it'). It does not explicitly contrast with sibling tools, but the use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_app_endpointsARead-onlyInspect
List an app's REST endpoints — slug, board, allowed methods, and how many columns each exposes. An endpoint exposing 0 columns is broken: it returns only item metadata and silently discards writes.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App id or slug (from list_apps / create_app) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context beyond that: endpoints with 0 exposed columns are broken and silently discard writes. This kind of operational insight helps the agent interpret results correctly.
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, no filler. The core purpose comes first, and the broken-endpoint warning adds significant operational value without bloat.
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 listing tool with no output schema, the description conveys the return contents and a key data-quality caveat. It is concise and sufficient for correct invocation, though it could optionally mention the response shape more explicitly.
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 parameters are already fully documented (appId, organizationId). The description adds no extra parameter-level meaning, which is acceptable because the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the exact resource ('an app's REST endpoints') plus the fields returned (slug, board, allowed methods, column count). This clearly differentiates the tool from siblings like list_apps or get_app_spec without requiring schema inspection.
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 context is clear: this is the tool for enumerating an app's endpoints and their properties. It doesn't explicitly contrast itself with alternatives, but its scope is specific enough that an agent can infer when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_appsARead-onlyInspect
List the apps in the organization — id, slug, status. Call this first when you need an app id: the slug (app-xxxxxx) is what shows up in URLs and in generated code, and this is how you map it back to the app.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so no hidden side effects exist. The description adds useful behavioral context beyond the schema, explaining that the slug is what appears in URLs and generated code and how to map it back to the app id.
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 dense sentences with no filler. The core listing purpose is front-loaded, followed immediately by the most important usage note.
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 list operation with a single optional parameter, the description plus schema and annotations provide everything an agent needs to select and invoke the tool correctly. Return fields are stated, and the safety profile is covered by annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter organizationId is fully described in the schema, including its default behavior. The description adds no parameter-specific detail, which is acceptable since schema coverage is 100%.
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?
States a specific verb and resource ('List the apps in the organization') and the exact fields returned (id, slug, status). The slug-to-app-id mapping guidance strongly differentiates it from sibling list tools like list_projects and 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?
Explicitly instructs to call this tool first when an app id is needed, which is actionable usage guidance. It does not explicitly name alternatives or when not to use it, but the tool name and context make the scope clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_automationsARead-onlyInspect
List the automations on a board, so you can see what already runs before adding another.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | Board id (from list_boards / create_board) | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes safety, and the description confirms a read-only listing action. No side effects or contradictions are present, though output shape is not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence communicates the action, target, and purpose without extraneous detail.
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 listing tool, the description covers purpose and parameters adequately. The absence of an output schema is acceptable given the straightforward nature of the action, though a note on the returned automation list would be slightly richer.
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?
Both required parameters are documented with clear meanings and provenance hints (from list_boards / create_board and list_projects / create_project). Schema coverage is 100%, so the description adds sufficient context.
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?
States a specific verb ('List'), a specific resource ('automations on a board'), and a clear reason ('so you can see what already runs before adding another'). It is easily distinguished from the sibling create_automation tool.
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 indicates when to use the tool: before adding another automation. It does not name the alternative create_automation, but the context makes the intended workflow clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_boardsARead-onlyInspect
List the boards inside a project — id, name, description. Every other board tool needs a boardId, and this is the only way to discover one without being handed a URL.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based; defaults to 1 | |
| limit | No | Defaults to 50 | |
| projectId | Yes | Project id (from list_projects / create_project) |
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 the returned field set and the discovery role, which is useful context beyond the annotations. Pagination behavior is not described, but the page/limit parameters make it inferable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight, front-loaded sentence that covers the verb, resource, output fields, and the key usage rationale. Every clause earns its place; there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool, the description is complete: it names what is returned, identifies the required parent scope, and explains why the tool is needed. The absence of an output schema is compensated by listing the return fields, while schema and annotations cover parameters and safety.
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 meaning of projectId, page, and limit is already fully documented. The description adds no parameter-level detail beyond the implicit 'inside a project' scope, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('List'), a precise resource ('boards inside a project'), and the returned fields (id, name, description). The added note that every other board tool needs a boardId clearly differentiates it from the many board-related siblings without requiring schema inspection.
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 tells the agent when to use this tool: it is the only way to discover a boardId unless the user provides a URL, and all other board tools depend on that ID. This gives a clear decision rule for using it before board mutations or queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commentsARead-onlyInspect
List the comments (the correspondence thread) on an item, oldest first. Each comment includes its author and any @mentions. Needs projectId and itemId (get itemId from query_items).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page, default 1 | |
| limit | No | Page size, default 20 | |
| itemId | Yes | Item (row) id | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only, non-destructive behavior is covered. The description adds no extra behavioral context such as rate limits or authentication requirements, so it meets but does not exceed the baseline for tools 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 concise sentences, with the main purpose front-loaded. It avoids unnecessary detail and stays focused, making it easy to scan and understand.
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 explains the output format (comments with author and mentions), the ordering (oldest first), and the required parameters. Given the tool's simplicity and the absence of an output schema, it provides enough context for correct invocation without over-explaining.
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 all 4 parameters, so the baseline is 3. The description adds value by explicitly tying itemId to query_items and clarifying that projectId and itemId are required, which helps the agent understand how to obtain them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), the resource ('comments on an item'), and the ordering ('oldest first'). It also clarifies that each comment includes author and @mentions, distinguishing it from other comment tools like add_comment or delete_comment.
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 useful usage hint by telling the agent to get itemId from query_items. However, it does not explicitly name alternatives or state when not to use this tool, so it falls short of fully explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deploymentsARead-onlyInspect
List the hosted-frontend deployments of an app — versions, which one is live, and the public URL.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App id or slug (from list_apps / create_app) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description does not add extra behavioral details about side effects or requirements, so it meets the baseline for a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and resource, then lists the key output attributes. No unnecessary 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?
The description mentions that the output includes versions, the live deployment, and the public URL, which gives agents an idea of what to expect. It doesn't mention pagination or ordering, but those are minor for a list operation and no output schema is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for both parameters (appId and organizationId), including the default behavior for organizationId. The description does not add further clarification beyond what is 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 verb 'List' and the resource 'hosted-frontend deployments of an app', and it distinguishes the tool from siblings like deploy_frontend and rollback_deployment by specifying the output (versions, live status, public URL).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the appropriate use case (when you need to view deployment versions and status), but it does not explicitly contrast with alternative list tools such as list_apps or get_app_spec. Still, it provides enough guidance for a straightforward listing operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_organizationsARead-onlyInspect
List the organizations the authenticated user belongs to. Use the returned id as organizationId in other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 scoping to the authenticated user and the follow-up use of the id, but does not disclose details like pagination, ordering, or response 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 short sentences with no filler. The purpose is front-loaded and the follow-up usage instruction is immediately actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool, the description is complete: it states the scope, the result's key value, and how to use that value. No output schema exists, but the description gives enough context to invoke the tool and consume its result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are not a burden. The baseline of 4 applies, and the description does not need to explain any input fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('organizations the authenticated user belongs to'), making the tool's purpose clear. It is naturally distinguished from sibling tools like list_projects and list_boards by the organization resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates that this tool is for obtaining organization IDs, and instructs using the returned id as organizationId in other tools. It does not explicitly mention when not to use it or contrast with alternatives, but the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsARead-onlyInspect
List projects in an organization. The API returns 50 per page — an organization with more than that needs page 2 and beyond, so check the returned total before assuming a project does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based; defaults to 1 | |
| limit | No | Defaults to 50 | |
| organizationId | No | Defaults to the credential organization |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful behavioral detail beyond annotations: the API paginates at 50 per page and callers must check the returned total to avoid false negatives. This is valuable context for correct result interpretation.
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 filler. The primary action is front-loaded, and the additional pagination caveat is directly relevant to successful use. 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 simple read-only list operation, the description covers the key invocation concern: pagination and the need to verify totals. There is no output schema, but the description still communicates enough about what the caller must handle. It could mention the return format briefly, but the absence is minor given the tool's simplicity and annotation coverage.
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 meaning beyond the schema by explaining that the default page limit of 50 has real consequences: an organization with more projects requires pagination. This enriches the page and limit parameter semantics without repeating schema content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List projects in an organization.' This clearly identifies what the tool does, though it does not explicitly contrast itself with siblings like list_boards or list_organizations. The resource naming is enough for an agent to understand the basic 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?
The description gives clear context: this tool lists projects at the organization level, so an agent can infer when to call it over organization- or board-level alternatives. It does not explicitly state exclusions or alternative tool names, but the page-size guidance provides practical usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginAInspect
Connect this machine to an existing TaskLite account with email + password, or switch to a different account. Creates a personal API key named "claude-code" on that account and stores it, so the password is used once and never saved. Replaces the current connection if there is one. Prefer connect when the user already has a tl_ key.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address | ||
| password | Yes | Used once to mint an API key; never stored |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses all important side effects: creates a personal API key named 'claude-code', stores it, uses password only once, and replaces the current connection. This is transparent about what the tool does beyond just authenticating.
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 and well-structured: first sentence states the action, second explains the side effect, third provides alternative usage. 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?
Provides all necessary context: what the tool does, its side effects, and when to use an alternative. Since there is no output schema, the description adequately covers the tool's behavior and usage 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% with adequate descriptions for both email and password. The description does not add extra meaning beyond the schema, but the baseline is 3 given 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 specific action: connecting to an existing TaskLite account with email/password, or switching accounts. It also distinguishes itself from the sibling 'connect' tool by noting when to prefer it.
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 provides a usage condition: 'Prefer connect when the user already has a tl_ key.' It also explains the side effect of creating and storing an API key, giving clear guidance on how and when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_appAInspect
Publish an app — required before its API endpoints accept external calls.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App id or slug (from list_apps / create_app) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not reveal side effects or state changes beyond 'publish'. It is neither read-only nor destructive per annotations, but no detail is given about what happens during publishing (e.g., whether it is reversible or triggers a deployment).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant information. It is well-structured and to the point.
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 adequately explains the tool's purpose and prerequisite, and the schema covers parameters. It lacks information about return values or error behavior, but this is not critical for a publish action. Overall, it provides sufficient context for basic usage.
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 description does not add meaning beyond the parameter schema, which already has clear descriptions for appId and organizationId. The description provides no extra context about parameter usage or relationships.
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 'Publish' and the resource 'app', and provides a specific purpose: it is required before API endpoints accept external calls. This gives an unambiguous understanding of what the tool does and distinguishes it from other app-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (before external calls are accepted) but does not explicitly contrast it with alternatives like build_backend or deploy_frontend. It lacks explicit guidance on when to prefer this over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_statusARead-onlyInspect
Whether an app can send push notifications to phones, and how many devices are registered. Push goes out through the customer's OWN Firebase project, so it has to be configured once per app before send_push automations do anything. This tool never returns the key.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App id or slug (from list_apps / create_app) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds valuable behavior details: it never returns the key, and it explains the dependency on the customer's own Firebase project. This helps the agent understand side effects and security boundaries.
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 concise sentences with no redundant wording. It packs the essential purpose, configuration prerequisite, and a key security behavior into a compact, readable form.
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 gives enough context for a simple read-only status tool: what it checks, what it reports, and what it never returns. It does not describe exact output structure, but no output schema is provided and the tool is low-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?
The schema already provides 100% coverage for both parameters with clear descriptions. The tool description does not add additional parameter semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks whether an app can send push notifications and reports the number of registered devices. It distinguishes this read-only status check from send-related tools like send_test_push.
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 explains that Firebase must be configured before send_push automations work, implying this tool should be used to verify configuration readiness. It does not explicitly name alternative tools, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_itemsARead-onlyInspect
List items (rows) of a board, including their cell values. Returns all items unless limit/page are given (the API defaults to 50 per page when unpaged, so the tool pages through and concatenates). Narrow the result with search, status, priority and sort instead of fetching everything. This is the admin view; the REST endpoints of a published app take a fuller grammar — filter[column][gte], relation filters, per-field search — see get_app_spec.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page, only with limit | |
| sort | No | Sort by title, createdAt, updatedAt or status; prefix with "-" for descending, e.g. "-createdAt". Anything else keeps the board order | |
| limit | No | Page size; omit to fetch all items | |
| search | No | Free text; matches the row title and its text cells | |
| status | No | Only rows with one of these statuses, comma separated: "todo,in_progress" (task boards only) | |
| boardId | Yes | Board id (from list_boards / create_board) | |
| archived | No | Which rows to include. Default active | |
| priority | No | Only rows with one of these priorities, comma separated (task boards only) | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnly=true and destructiveHint=false. The description adds useful behavioral context about pagination defaults (50 per page, auto-pagination) and notes it is the admin view, but does not mention auth or rate limits.
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 yet information-dense, front-loading the core purpose and then adding pagination, filtering, and admin-view context without fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description sufficiently covers the tool's behavior: what it returns, pagination, filtering options, and when to use it. It also points to get_app_spec for advanced filtering, making it complete for the intended use.
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 detailed parameter descriptions (e.g., sort format, status/priority task-board-only). The tool description adds a couple of behavioral nuances (page only with limit, omit limit to fetch all), slightly enriching beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List items (rows) of a board' with a specific verb 'list' and resource 'board'. It distinguishes from sibling tools like create_item and get_board_schema, and clarifies it is the admin view.
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 explains when to use this tool (to list items, with pagination and filtering), advises narrowing results instead of fetching everything, and points to get_app_spec for more advanced REST grammar, making the when/where alternatives clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_columnsAIdempotentInspect
Set the display order of a board's columns. Pass every column id in the wanted order (get_board_schema lists them).
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | Board id (from list_boards / create_board) | |
| columnIds | Yes | Column ids in the new order (every column of the board) | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish mutating, idempotent, non-destructive behavior. The description adds that the order is set as a complete list rather than a partial patch, which is useful, but it does not disclose response behavior or failure modes. This is adequate but not rich.
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 tight sentences with no filler. The core action comes first, and the critical full-list requirement is stated in the second sentence.
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 three-parameter reorder tool with a fully documented schema and safe/idempotent annotations, the description is nearly complete. It covers the full-set requirement and points to get_board_schema; it only omits explicit output/failure details, which are less critical here.
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% and the columnIds schema already states 'new order' and 'every column of the board.' The description's main added value is pointing to get_board_schema as the source for valid column ids, which is helpful but not a substantial semantic addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') and a precise resource ('display order of a board's columns'), which distinguishes it from siblings like create_column, update_column, and delete_column. The action is immediately clear and not a tautology.
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 clear operational context: pass every column id in the wanted order and use get_board_schema to obtain those ids. It does not explicitly name alternatives or exclusion conditions, but for a simple reorder operation the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_deploymentAInspect
Point the live URL back at a previous deployment version (see list_deployments for available versions).
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App id or slug (from list_apps / create_app) | |
| version | Yes | Deployment version number (from list_deployments) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose that this action overwrites the current live deployment, nor does it mention whether the change is reversible, the required permissions, or any confirmation step. The destructiveHint annotation is false, but the action has a significant impact on the live environment, so transparency is lacking.
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, direct sentence with no fluff. It efficiently conveys the purpose and points to a related tool, making it concise and well-structured.
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 is adequate for the operation's simplicity, but it omits details about the return value or success/failure indicators. Given that no output schema is provided, this is a minor gap and does not hinder basic usage.
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 cover appId and version thoroughly, and the description adds minimal extra meaning (e.g., 'previous deployment version'). Since the schema coverage is 100%, the description does not need to compensate, but it also does not enrich the parameters further.
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 ('Point the live URL back') and the target resource ('a previous deployment version'), and references list_deployments for available versions, distinguishing it from sibling tools like deploy_frontend or list_deployments.
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 implicitly guides usage by referencing list_deployments to find versions, but does not explicitly contrast with deploy_frontend or state conditions for when a rollback is preferred over a new deployment. Still, the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchARead-onlyInspect
Full-text search across the projects, boards and items of the organization. Returns { results: [{ id, title, url }] } — the shape ChatGPT connectors and deep research expect; pass a result id to fetch for the full record. When you already know the board, query_items is cheaper and complete.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results, default 20 | |
| query | Yes | Search text | |
| projectId | No | Limit the search to one project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only annotation already signals safety; the description adds behavior by specifying the return shape and instructing to pass a result id to fetch full records. It does not mention sorting or result count, but the no-side-effect nature is clear.
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 concise sentences; the purpose is front-loaded, and every sentence adds useful information: scope, return shape, and alternative tool. No unnecessary detail.
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?
Even without an output schema, the description gives the exact result shape and next-step guidance. It references the relevant sibling query_items. It omits error behavior and pagination depth, but these are not critical for a simple search 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 parameters have descriptions in the schema, but they are minimal ('Search text', 'Max results, default 20'). The tool description adds full-text context but does not clarify query syntax, whether projectId is an ID or name, or how limit behaves 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?
Description clearly states the verb 'full-text search' and the resource scope ('projects, boards and items'), and distinguishes this tool from query_items by scope. It also describes the return shape, making the tool's purpose unmistakable even among many siblings.
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 tells the agent when to use this tool (search across the organization) and when to prefer an alternative ('When you already know the board, query_items is cheaper and complete'). This is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_test_pushAInspect
Send one real push notification to the given app users, to prove the chain works before an automation depends on it. Confirm with the user first: this reaches actual phones.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Notification body | |
| appId | Yes | App id or slug (from list_apps / create_app) | |
| title | No | Notification title; defaults to "TaskLite" | |
| userIds | Yes | App user ids to notify (the same ids row-level security uses) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description prominently discloses that this sends a real push notification and that it reaches actual phones, which is the key behavioral side effect. It also advises confirming with the user first, providing important transparency 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 concise and well structured, using two sentences to communicate the action, purpose, and an important user-confirmation caveat without unnecessary detail.
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 provides sufficient context for a test push tool: what it sends, to whom, and why. It does not describe return values or failure behavior, but there is no output schema requiring that, so the omission is acceptable.
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 five parameters are described in the schema, and the description adds helpful context such as referencing list_apps/create_app for appId and tying userIds to row-level security. Some details, such as body being optional while appId and userIds are required, are not explicitly clarified, but overall semantics are clear.
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: sending one real push notification to specified app users, and explains its purpose: to prove the chain works before relying on an automation. It is easy to distinguish from sibling tools because it explicitly frames itself as a test.
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 usage context by saying the tool should be used to 'prove the chain works before an automation depends on it' and instructs to confirm with the user first. It does not explicitly name alternative tools, but the intended scenario is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cellAInspect
Set a single cell value on an item by columnId.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | The new cell value; shape depends on the column type | |
| itemId | Yes | Item (row) id | |
| boardId | Yes | Board id (from list_boards / create_board) | |
| columnId | Yes | Column id (from get_board_schema) | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description implies mutation but does not elaborate on overwriting behavior, validation, or return values.
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, clear, and direct sentence with no filler. It front-loads the verb and object, making the tool's purpose immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Invocation details are complete: all required parameters are explained, and references to get_board_schema help the agent determine value shapes. No output schema is provided, so return-value documentation is not required.
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 five parameters are described, with helpful provenance for IDs (e.g., boardId from list_boards/create_board, columnId from get_board_schema). The value parameter notes that its shape depends on the column type.
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 defines the operation: 'Set a single cell value on an item by columnId.' It is specific and distinct from sibling tools like update_item, which implies broader updates.
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 explicit guidance is provided on when to choose this over alternatives such as update_item. The intended use is only inferred from the purpose, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_upAInspect
Create a brand-new TaskLite account + organization and connect this machine — no website visit needed. A strong random password is generated locally and never shown or stored; for web access the user later uses "forgot password" with this email. Ask the user for email, their name, and a business name before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The user's full name | |
| Yes | Email address | ||
| organizationName | Yes | Business/organization name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently discloses the side effects: creating an account and organization, connecting the machine, generating a password locally, and not showing or storing it. This is especially important given the openWorldHint and readOnlyHint annotations, and the description fully aligns with them.
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 and well-structured, using two focused sentences to convey purpose, side effects, and caller instructions. There is no redundant or extraneous 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?
The description covers the essential context: what the tool does, what the agent should ask for, and important security-related behavior. It does not describe failure cases or return behavior, but given the absence of an output schema and the clear side-effect disclosure, it is sufficiently complete for the tool's 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?
The input schema already provides clear descriptions for all three required parameters, and the tool description mostly restates them rather than adding deeper semantic meaning. It does not introduce ambiguity, but it also does not significantly extend the schema's parameter-level 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 clearly states the tool creates a brand-new TaskLite account and organization and connects the machine, distinguishing it from login, connection_status, and other account-related tools. It also explicitly notes that no website visit is needed, further clarifying its unique 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?
The description explicitly instructs the agent to ask the user for email, name, and business name before calling, and explains the sign-up flow including the locally generated password and forgot-password behavior. This gives clear and actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_app_endpointAInspect
Change an existing endpoint — most often to set exposedColumns on one that was created without them. Get the endpoint id from list_app_endpoints and the column ids from get_board_schema.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Human-readable name | |
| slug | No | URL slug: lowercase letters, digits and dashes | |
| appId | Yes | App id or slug (from list_apps / create_app) | |
| isActive | No | Whether it is active | |
| endpointId | Yes | Endpoint id (from list_app_endpoints) | |
| allowedMethods | No | HTTP methods the endpoint accepts: GET, POST, PATCH, DELETE | |
| exposedColumns | No | Replacement list of exposed columns (same shape as create_app_endpoint) | |
| organizationId | No | Organization id; defaults to the credential organization when omitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions changing an endpoint but does not disclose side effects (e.g., whether exposedColumns is replaced entirely, whether other fields are updated, or if there are permission requirements). Annotations only say destructiveHint false, which doesn't cover mutation semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence that states the primary purpose and how to obtain the necessary ids. No redundant or extraneous 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?
The description is sufficient for basic usage, but it does not mention that exposedColumns is a replacement list (vs. a merge), nor does it indicate what happens if other fields (name, slug, allowedMethods) are provided. These details are inferable from the schema but not spelled out.
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 covers all parameters with detailed descriptions, including reserved-word constraints for aliases. The description adds value by explicitly pointing to list_app_endpoints and get_board_schema as sources for the ids, which is not 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 action ('Change an existing endpoint') and the specific resource (endpoint). It distinguishes from create_app_endpoint by focusing on existing endpoints and the most common use case (setting exposedColumns).
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 a concrete scenario (set exposedColumns on an endpoint created without them) and tells where to get the needed ids (endpoint id from list_app_endpoints, column ids from get_board_schema). It does not explicitly contrast with create_app_endpoint, but the phrase 'existing endpoint' implies it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_boardAIdempotentInspect
Rename a board or change its description. Structure (columns) is changed with update_column / delete_column / reorder_columns.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Human-readable name | |
| boardId | Yes | Board id (from list_boards / create_board) | |
| projectId | Yes | Project id (from list_projects / create_project) | |
| description | No | Free-text description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not add behavioral details beyond the annotations. Annotations already indicate readOnly=false, destructive=false, and idempotent=true. The description simply restates the action without mentioning side effects, permissions, or partial-update semantics.
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, front-loaded with the primary purpose, and the second sentence cleanly separates scope from related tools. No unnecessary words or redundant details.
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?
While the description is clear on the primary action, it does not explicitly state whether missing optional parameters are preserved or cleared, which is a common ambiguity for update tools. It also omits any mention of prerequisites (e.g., needing an existing board) beyond what is implied by the schema. Given the simplicity of the operation, the description is adequate but not fully comprehensive.
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 provides full coverage of all parameters with descriptions, including their sources (e.g., boardId from list_boards/create_board). The tool description does not add further semantic meaning or clarify optional/partial update behavior, 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: renaming a board or changing its description. It also explicitly differentiates from sibling tools for column structure changes, making its scope 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 indirectly indicates when to use by stating what it does and explicitly points to update_column/delete_column/reorder_columns for structural changes. It does not fully enumerate all alternative tools, but the column differentiation is the most relevant and sufficient for this context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_columnAIdempotentInspect
Change a column after the fact: rename it, change its type (e.g. number -> currency), replace settings (dropdown options), or set isRequired / isHidden. A type change converts existing values (number↔currency, text→number/date/checkbox, anything→text) and clears the ones that cannot convert; the response carries conversion: { converted, cleared }. settings.validation rules apply here too.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Human-readable name | |
| type | No | New column type (same list as create_column) | |
| force | No | Skip the name/type sanity check | |
| boardId | Yes | Board id (from list_boards / create_board) | |
| columnId | Yes | Column id (from get_board_schema) | |
| isHidden | No | Hide the column in the TaskLite UI | |
| settings | No | Replaces the column settings, e.g. { options: [...] } for dropdown/status | |
| projectId | Yes | Project id (from list_projects / create_project) | |
| isRequired | No | Require a non-blank value on every App API create | |
| description | No | Free-text description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by explaining the type-conversion behavior: existing values are converted where possible, unconvertible values are cleared, and the response contains conversion: { converted, cleared }. This is critical behavioral information, especially the data-clearing side effect, and the annotations alone would not convey it.
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 yet information-dense: it identifies the operation, gives concrete examples, explains conversion side effects, and mentions response content. There is no filler or redundant restatement of the tool name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description appropriately discloses the key return detail (the conversion result). It also covers the main mutation semantics. It does not fully explain the 'force' sanity check or the exact behavior of the settings object, but the schema provides partial context and the description covers the highest-risk behavior.
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 covers all 10 parameters, so the baseline is 3. The description adds meaningful semantics by explaining how 'type' changes affect existing values and that 'settings' validation rules continue to apply, going beyond the simple property descriptions 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 identifies the operation: changing an existing column after creation, and enumerates the concrete actions (rename, type change, settings replacement, isRequired/isHidden). This makes it easy to distinguish from siblings like create_column or update_board without needing to inspect schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'after the fact' and the list of modifiable attributes make it clear this tool is for updating an existing column rather than creating one. It does not explicitly name alternatives or state when not to use it, but the context is strong enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_commentAInspect
Edit the text of an existing comment. Only the author can edit their comment. Needs projectId, itemId and the commentId.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | Item (row) id | |
| content | Yes | The new comment text | |
| commentId | Yes | Comment id (from list_comments) | |
| projectId | Yes | Project id (from list_projects / create_project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only operation, so the description does not need to restate that editing mutates state. It adds valuable behavioral context beyond annotations by specifying the author-only restriction, which is an important permission constraint for an agent to respect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundant filler. The core action is front-loaded, followed by the essential authorization constraint and required identifiers. 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 simple mutation tool with four fully documented parameters and no output schema, the description covers the key context: what action is performed, who may perform it, and which identifiers are needed. It could mention the required content parameter more explicitly, but the schema covers that, so the tool is adequately 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 input schema already provides full descriptions for all four parameters, so the baseline is appropriate. The description adds some clarity by associating projectId, itemId, and commentId as required identifiers, though it omits the also-required 'content' parameter. Overall, it does not significantly enhance 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 states a specific action ('Edit the text of an existing comment') on a clear resource (comments), which immediately distinguishes it from sibling comment tools like add_comment, delete_comment, and list_comments. The purpose is unambiguous and actionable.
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 by noting that only the author can edit, and by listing the required identifiers (projectId, itemId, commentId). It does not explicitly name alternative tools or exclusion conditions, but the context is sufficient for an agent to know when this tool applies versus comment creation/deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_itemCInspect
Update item fields (title, description, status, priority, dueDate, tags).
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags as an array of strings | |
| title | No | Item title, shown as the row name | |
| itemId | Yes | Item (row) id | |
| status | No | Status value (todo, in_progress, done, or a value from the board's status options) | |
| boardId | Yes | Board id (from list_boards / create_board) | |
| dueDate | No | Due date, ISO 8601 (YYYY-MM-DD or full timestamp) | |
| priority | No | Priority: low, medium, high or urgent | |
| projectId | Yes | Project id (from list_projects / create_project) | |
| description | No | Free-text description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations (readOnlyHint=false, destructiveHint=false) only confirm that this mutates without destroying; the description adds no behavioral context on top of that. It does not disclose partial-update semantics, whether omitted fields are preserved, validation of status/priority values, or what happens if the item does not exist. For a mutation tool, an agent cannot predict side effects from this text.
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 one-sentence description is front-loaded with verb and resource and contains no filler; every word earns its place. The compact parenthetical field list works as a quick reference for the 6 mutable fields. It is appropriately sized given the schema carries the detailed parameter documentation.
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 9-parameter mutation tool with no output schema, this description is too thin: it omits partial-update semantics, the distinction from set_cell, and any expectation about results or errors. The rich input schema is not enough to make the tool safely invokable without behavioral context. The three required IDs (projectId, boardId, itemId) are at least documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and individual descriptions are informative (e.g., status values, dueDate ISO 8601 format, projectId provenance from list_projects). The description's field list is a helpful at-a-glance overview but adds no meaning beyond the schema. Baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Update item fields" states a specific verb and resource, and the parenthetical enumerates exactly the mutable fields (title, description, status, priority, dueDate, tags), making its purpose obvious against create_item and delete_item. It falls short of 5 because it does not differentiate from set_cell, which also modifies item data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives: set_cell for single-cell updates, create_item for new items, or update_board for board-level settings are never mentioned. An agent must infer usage entirely from the tool name and sibling list; no prerequisites or when-not conditions are stated.
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.
41 tool updates
v0.13.0- Changed
add_comment2 fields changed- added
Input schema / properties / itemId / descriptionAdded value: +"Item (row) id" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Added
build_backend - Changed
configure_external_access1 field changed- added
Input schema / properties / registrationPolicy / descriptionAdded value: +"How external sign-ups are admitted: open, approval or closed"
- Changed
create_app3 fields changed- added
Input schema / properties / name / descriptionAdded value: +"Human-readable name" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
create_app_api_key4 fields changed- added
Input schema / properties / appId / descriptionAdded value: +"App id or slug (from list_apps / create_app)" - added
Input schema / properties / name / descriptionAdded value: +"Human-readable name" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted" - added
Input schema / properties / scopesAdded value: +{ + "description": "Permissions recorded on the key: [\"read\"] or [\"read\",\"write\"]. Omit to match the app: write when any endpoint accepts POST, PATCH or DELETE.", + "items": { + "enum": [ + "read", + "write" + ], + "type": "string" + }, + "type": "array" +}
- Changed
create_app_endpoint13 fields changed- added
Input schema / properties / allowedMethods / descriptionAdded value: +"HTTP methods the endpoint accepts: GET, POST, PATCH, DELETE" - added
Input schema / properties / appId / descriptionAdded value: +"App id or slug (from list_apps / create_app)" - added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / exposedColumns / descriptionAdded value: +"Columns the endpoint reads and writes, with the JSON key each one gets; without it the endpoint returns bare metadata" - added
Input schema / properties / exposedColumns / items / properties / alias / descriptionAdded value: +"JSON key exposed for this column: letters, digits, underscore. Never one of the reserved item fields id, title, description, status, priority, dueDate, assignedTo, createdAt, updatedAt, order, appUserId — a business status column becomes repairStatus or orderStatus, not status." - added
Input schema / properties / exposedColumns / items / properties / columnId / descriptionAdded value: +"Column id (from get_board_schema)" - added
Input schema / properties / exposedColumns / items / properties / readOnly / descriptionAdded value: +"Expose the column for reading only; writes to it are refused with 400" - added
Input schema / properties / name / descriptionAdded value: +"Human-readable name" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted" - added
Input schema / properties / rowLevelSecurity / descriptionAdded value: +"Row-level security: when enabled, each app user sees and edits only their own rows" - added
Input schema / properties / rowLevelSecurity / properties / enabled / descriptionAdded value: +"Scope every request to the calling app user (X-App-User header)" - added
Input schema / properties / rowLevelSecurity / properties / filterByUserId / descriptionAdded value: +"Also filter reads to rows the user created" - added
Input schema / properties / slug / descriptionAdded value: +"URL slug: lowercase letters, digits and dashes"
- Changed
create_automation7 fields changed- added
Input schema / properties / actions / items / properties / config / descriptionAdded value: +"Action-specific config, e.g. { url, method, headers, responseMapping } for http_request" - added
Input schema / properties / actions / items / properties / type / descriptionAdded value: +"Column type: text, rich_text, number, status, date, datetime, duration, people, checkbox, dropdown, label, priority, link, email, phone, relation, lookup, rollup, rating, currency, file" - added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / isActive / descriptionAdded value: +"Whether it is active" - added
Input schema / properties / name / descriptionAdded value: +"Human-readable name" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)" - added
Input schema / properties / trigger / descriptionAdded value: +"Event that starts the automation: item_created, status_changed, column_value_changed, date_approaching, or scheduled (cron)"
- Changed
create_board4 fields changed- added
Input schema / properties / description / descriptionAdded value: +"Free-text description" - added
Input schema / properties / kindAdded value: +{ + "description": "\"tasks\": with the built-in task columns (status, priority, assignee, due date, tags). \"data\": only the columns you add. Default tasks.", + "enum": [ + "tasks", + "data" + ], + "type": "string" +} - added
Input schema / properties / name / descriptionAdded value: +"Human-readable name" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
create_column5 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / isRequired / descriptionAdded value: +"Require a non-blank value on every App API create" - added
Input schema / properties / name / descriptionAdded value: +"Human-readable name" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)" - added
Input schema / properties / type / descriptionAdded value: +"Column type: text, rich_text, number, status, date, datetime, duration, people, checkbox, dropdown, label, priority, link, email, phone, relation, lookup, rollup, rating, currency, file"
- Changed
create_item8 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / cells / descriptionAdded value: +"Cell values keyed by column id: { \"<columnId>\": value }. Scalars, { amount, currency } for currency, { relatedItemIds: [...] } for relations" - added
Input schema / properties / description / descriptionAdded value: +"Free-text description" - added
Input schema / properties / priority / descriptionAdded value: +"Priority: low, medium, high or urgent" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)" - added
Input schema / properties / status / descriptionAdded value: +"Status value (todo, in_progress, done, or a value from the board's status options)" - added
Input schema / properties / tags / descriptionAdded value: +"Tags as an array of strings" - added
Input schema / properties / title / descriptionAdded value: +"Item title, shown as the row name"
- Changed
create_project3 fields changed- added
Input schema / properties / description / descriptionAdded value: +"Free-text description" - added
Input schema / properties / name / descriptionAdded value: +"Human-readable name" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted"
- Changed
delete_board2 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
delete_column3 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / columnId / descriptionAdded value: +"Column id (from get_board_schema)" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
delete_comment3 fields changed- added
Input schema / properties / commentId / descriptionAdded value: +"Comment id (from list_comments / add_comment)" - added
Input schema / properties / itemId / descriptionAdded value: +"Item id (from query_items / create_item)" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
delete_item3 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / itemId / descriptionAdded value: +"Item id (from query_items / create_item)" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Added
delete_project - Changed
deploy_frontend5 fields changed- changed
Input schema / properties / dir / descriptionPrevious value: -"Path to the BUILD OUTPUT directory (the one containing index.html), not the project root"New value: +"Local path to the BUILD OUTPUT directory (the one containing index.html), not the project root. Only where the MCP runs on the same machine as the files" - added
Input schema / properties / filesAdded value: +{ + "description": "The site files inline. Must include index.html. Up to 500 files / 8MB decoded — right for a frontend written in the conversation", + "items": { + "additionalProperties": false, + "properties": { + "content": { + "description": "File content. Text as-is; binary as base64 with encoding \"base64\"", + "type": "string" + }, + "encoding": { + "description": "Default utf8", + "enum": [ + "utf8", + "base64" + ], + "type": "string" + }, + "path": { + "description": "Path inside the site, e.g. \"index.html\", \"app.js\", \"css/style.css\"", + "type": "string" + } + }, + "required": [ + "path", + "content" + ], + "type": "object" + }, + "maxItems": 500, + "type": "array" +} - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted" - added
Input schema / properties / zipUrlAdded value: +{ + "description": "Public https URL of a zip of the BUILD OUTPUT (index.html at the root, or inside a single top-level folder). Up to 50MB", + "format": "uri", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "appId", - "dir" -]New value: +[ + "appId" +]
- Changed
export_project1 field changed- added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
get_app_spec2 fields changed- added
Input schema / properties / appId / descriptionAdded value: +"App id or slug (from list_apps / create_app)" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted"
- Changed
get_board_schema2 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
get_frontend_prompt3 fields changed- added
Input schema / properties / appId / descriptionAdded value: +"App id or slug (from list_apps / create_app)" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted" - added
Input schema / properties / tool / descriptionAdded value: +"Target tool the prompt is written for"
- Changed
list_app_endpoints2 fields changed- added
Input schema / properties / appId / descriptionAdded value: +"App id or slug (from list_apps / create_app)" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted"
- Changed
list_apps1 field changed- added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted"
- Changed
list_automations2 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
list_boards1 field changed- added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
list_comments2 fields changed- added
Input schema / properties / itemId / descriptionAdded value: +"Item (row) id" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
list_deployments2 fields changed- added
Input schema / properties / appId / descriptionAdded value: +"App id or slug (from list_apps / create_app)" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted"
- Changed
login1 field changed- added
Input schema / properties / email / descriptionAdded value: +"Email address"
- Changed
publish_app2 fields changed- added
Input schema / properties / appId / descriptionAdded value: +"App id or slug (from list_apps / create_app)" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted"
- Added
push_status - Changed
query_items7 fields changed- added
Input schema / properties / archivedAdded value: +{ + "description": "Which rows to include. Default active", + "enum": [ + "active", + "archived", + "all" + ], + "type": "string" +} - added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / priorityAdded value: +{ + "description": "Only rows with one of these priorities, comma separated (task boards only)", + "type": "string" +} - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)" - added
Input schema / properties / searchAdded value: +{ + "description": "Free text; matches the row title and its text cells", + "type": "string" +} - added
Input schema / properties / sortAdded value: +{ + "description": "Sort by title, createdAt, updatedAt or status; prefix with \"-\" for descending, e.g. \"-createdAt\". Anything else keeps the board order", + "type": "string" +} - added
Input schema / properties / statusAdded value: +{ + "description": "Only rows with one of these statuses, comma separated: \"todo,in_progress\" (task boards only)", + "type": "string" +}
- Changed
reorder_columns3 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / columnIds / descriptionAdded value: +"Column ids in the new order (every column of the board)" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
rollback_deployment3 fields changed- added
Input schema / properties / appId / descriptionAdded value: +"App id or slug (from list_apps / create_app)" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted" - added
Input schema / properties / version / descriptionAdded value: +"Deployment version number (from list_deployments)"
- Added
send_test_push - Changed
set_cell4 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / columnId / descriptionAdded value: +"Column id (from get_board_schema)" - added
Input schema / properties / itemId / descriptionAdded value: +"Item (row) id" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
sign_up1 field changed- added
Input schema / properties / email / descriptionAdded value: +"Email address"
- Changed
update_app_endpoint11 fields changed- added
Input schema / properties / allowedMethods / descriptionAdded value: +"HTTP methods the endpoint accepts: GET, POST, PATCH, DELETE" - added
Input schema / properties / appId / descriptionAdded value: +"App id or slug (from list_apps / create_app)" - added
Input schema / properties / endpointId / descriptionAdded value: +"Endpoint id (from list_app_endpoints)" - added
Input schema / properties / exposedColumns / descriptionAdded value: +"Replacement list of exposed columns (same shape as create_app_endpoint)" - added
Input schema / properties / exposedColumns / items / properties / alias / descriptionAdded value: +"JSON key exposed for this column: letters, digits, underscore. Never one of the reserved item fields id, title, description, status, priority, dueDate, assignedTo, createdAt, updatedAt, order, appUserId — a business status column becomes repairStatus or orderStatus, not status." - added
Input schema / properties / exposedColumns / items / properties / columnId / descriptionAdded value: +"Column id (from get_board_schema)" - added
Input schema / properties / exposedColumns / items / properties / readOnly / descriptionAdded value: +"Expose the column for reading only; writes to it are refused with 400" - added
Input schema / properties / isActive / descriptionAdded value: +"Whether it is active" - added
Input schema / properties / name / descriptionAdded value: +"Human-readable name" - added
Input schema / properties / organizationId / descriptionAdded value: +"Organization id; defaults to the credential organization when omitted" - added
Input schema / properties / slug / descriptionAdded value: +"URL slug: lowercase letters, digits and dashes"
- Changed
update_board4 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / description / descriptionAdded value: +"Free-text description" - added
Input schema / properties / name / descriptionAdded value: +"Human-readable name" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
update_column7 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / columnId / descriptionAdded value: +"Column id (from get_board_schema)" - added
Input schema / properties / description / descriptionAdded value: +"Free-text description" - added
Input schema / properties / isHidden / descriptionAdded value: +"Hide the column in the TaskLite UI" - added
Input schema / properties / isRequired / descriptionAdded value: +"Require a non-blank value on every App API create" - added
Input schema / properties / name / descriptionAdded value: +"Human-readable name" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
update_comment3 fields changed- added
Input schema / properties / commentId / descriptionAdded value: +"Comment id (from list_comments)" - added
Input schema / properties / itemId / descriptionAdded value: +"Item (row) id" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)"
- Changed
update_item9 fields changed- added
Input schema / properties / boardId / descriptionAdded value: +"Board id (from list_boards / create_board)" - added
Input schema / properties / description / descriptionAdded value: +"Free-text description" - added
Input schema / properties / dueDate / descriptionAdded value: +"Due date, ISO 8601 (YYYY-MM-DD or full timestamp)" - added
Input schema / properties / itemId / descriptionAdded value: +"Item (row) id" - added
Input schema / properties / priority / descriptionAdded value: +"Priority: low, medium, high or urgent" - added
Input schema / properties / projectId / descriptionAdded value: +"Project id (from list_projects / create_project)" - added
Input schema / properties / status / descriptionAdded value: +"Status value (todo, in_progress, done, or a value from the board's status options)" - added
Input schema / properties / tags / descriptionAdded value: +"Tags as an array of strings" - added
Input schema / properties / title / descriptionAdded value: +"Item title, shown as the row name"
44 tool updates
v0.7.0- First observed
add_comment - First observed
configure_external_access - First observed
connect - First observed
connection_status - First observed
create_app - First observed
create_app_api_key - First observed
create_app_endpoint - First observed
create_automation - First observed
create_board - First observed
create_column - First observed
create_item - First observed
create_project - First observed
delete_board - First observed
delete_column - First observed
delete_comment - First observed
delete_item - First observed
deploy_frontend - First observed
disconnect - First observed
export_project - First observed
fetch - First observed
get_app_spec - First observed
get_board_schema - First observed
get_frontend_prompt - First observed
list_app_endpoints - First observed
list_apps - First observed
list_automations - First observed
list_boards - First observed
list_comments - First observed
list_deployments - First observed
list_organizations - First observed
list_projects - First observed
login - First observed
publish_app - First observed
query_items - First observed
reorder_columns - First observed
rollback_deployment - First observed
search - First observed
set_cell - First observed
sign_up - First observed
update_app_endpoint - First observed
update_board - First observed
update_column - First observed
update_comment - First observed
update_item
TDQS
Scored across 48 tools
Most tools target a distinct resource+action (projects, boards, columns, items, comments, apps, automations, deployments), and overlapping pairs like login/connect and query_items/search/fetch are separated by explicit credential/scope guidance. A few adjacent tools (build_backend vs the step-by-step creates, update_item vs set_cell) could be confused, but their descriptions call out when to use which.
The set overwhelmingly follows verb_noun snake_case (list_projects, create_column, update_item, delete_board, rollback_deployment). Minor deviations exist — add_comment vs create_comment, query_items vs list_items, connection_status vs get_connection_status, and bare verbs like login/connect — but they are easy to predict and not chaotic.
48 tools is a very large surface for one server, well beyond the 16-25 'heavy' range. Even with a broad scope spanning auth, schema design, apps, automations, and deployment, the count will force agents to browse and compare many similar CRUD tools.
Core workflows are well covered: projects/boards/columns have full CRUD, items and comments have full CRUD, and app endpoints plus deployment have create/list/update. But several lifecycle gaps stand out — automations can be created and listed but not updated/deleted, apps have no delete/unpublish/revoke-key operations, and projects cannot be renamed/updated.
Maintenance
Related MCP Connectors
Build and run a backend from plain English. Data, logic, endpoints, auth and jobs, deployed live.
Build, deploy, and host full-stack web apps from any MCP client. DB, auth, storage, cron included.
Build and publish full-stack apps from your coding agent: models, rules, pages, auth, per-app MCP.
Build multi-tenant apps over MCP. Schemas, CRUD, deploys — access control enforced server-side.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceGenerates production-ready MCP servers from natural language, OpenAPI specs, database schemas, GraphQL schemas, or ontologies.40 npm1MIT
- AlicenseNot gradedqualityBmaintenanceAuto-generates MCP servers from any data source, enabling AI clients to query databases, spreadsheets, and APIs with zero code.5MIT
- FlicenseNot gradedqualityBmaintenanceAutomatically generates, validates, and deploys remote MCP servers from natural language descriptions, with a web dashboard for management.-
- AlicenseNot gradedqualityCmaintenanceMCP server that lets Claude, ChatGPT, or VS Code build a complete, machine-checked model of your domain and generate an app from it.Apache 2.0