trello-guardrails-mcp
Provides tools for reading and organising Trello boards by name, including listing boards, lists, and cards, searching cards, creating cards, lists, and labels, adding labels and comments, moving and updating cards, and archiving cards or lists without deleting anything.
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., "@trello-guardrails-mcpmove the dialogue bug to Done"
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.
trello-guardrails-mcp
A small MCP server that lets Claude read and organise your Trello boards by name, with archive-only writes and no guessing on ambiguous names.
Why this exists
I plan most of my personal projects in Trello, across a few dozen boards. I wanted to say "move the dialogue bug to Done" in a Claude conversation and have it happen, without looking up board, list or card IDs first.
When an agent acts on your behalf, picking the wrong card or deleting a list is worse than doing nothing. So the server is built around a few rules that keep the agent's mistakes small, visible and reversible.
Atlassian also publishes an official remote Trello MCP server. This project is a local alternative with a narrower tool set, where each tool is designed around those rules.
Related MCP server: Trello MCP server
Features
The server exposes 14 tools.
Tool | What it does |
| Lists your open boards. |
| Lists the open lists on a board. |
| Lists the cards in a list, with due dates and the start of each description. |
| Shows one card's description, due date, URL and comments. |
| Searches cards across all boards by keyword (up to 20 results). |
| Creates a card in a list, with an optional description. |
| Creates a list on a board. |
| Creates a label on a board, with an optional color. |
| Adds an existing label to a card. |
| Adds a comment to a card. |
| Moves a card to another list on the same board. |
| Changes a card's name, description or due date. |
| Archives a card. |
| Archives a list. |
Design choices
Names instead of IDs
Every tool takes human names such as board_name="Game Jam" and card_name="dialogue bug". Trello IDs are 24-character hex strings. When a model has to copy them between calls, it can copy the wrong one and still get a valid request. Names are what the user says and what the model already has in context, so there is less to get wrong.
Matching that refuses to guess
Boards, lists, cards and labels are all resolved by one function, resolve(), which follows three steps.
An exact name match wins, ignoring case. Asking for
Donefinds "Done" even when "Not Done" also exists.If there is no exact match, a partial match is used, but only when exactly one item contains the text.
dialoguefinds "Fix dialogue bug" if no other card mentions dialogue.If two or more items match, the tool does nothing and returns the candidates, so the model can ask again with a clearer name. If nothing matches, the error lists the names that do exist.
The server never picks one of several matches on the model's behalf. A wrong guess on a write is harder to notice than an error.
Every reply says what was matched
When a partial match is used, the reply names both the real item and the text it came from. For example, Moved 'Fix dialogue bug' (matched from 'dialogue') to 'Done'. This lets the person reading the conversation see what the agent actually touched, without opening Trello.
No delete
The server has no delete tool and never sends an HTTP DELETE. The only removal actions are archive_card and archive_list, which use Trello's archive. Archived items can be restored from the board menu. A test in the suite fails if a DELETE call is ever added to the code.
Clear errors
Trello API errors are turned into short messages that include the status code and a hint, such as a revoked token (401) or a rate limit (429). The model can read the message and either fix its request or tell the user what went wrong.
Install
You need Python 3.10 or newer and uv. pip also works.
The short way
If you use Claude Code, you can ask it to do the setup for you with a prompt like this one.
Set up the Trello MCP server from https://github.com/cyber-sami/trello-guardrails-mcp for Claude Desktop and Claude Code. Read the README first. Create ~/.config/trello-mcp/config.json from the example with chmod 600, and leave the placeholders for me to fill in. Don't ask me to paste my key or token into this chat.
The last sentence matters. Your token then goes straight into a file you control and never appears in a conversation transcript. You still need the key and token from step 1 below.
The manual steps follow.
1. Get a Trello API key and token
Open the Trello Power-Up admin page, create a Power-Up and generate an API key for it.
On the same page, follow the Token link next to the key and approve access for your account.
2. Add the server to your client
You do not need to clone the repo. uvx fetches and runs it from GitHub.
Claude Code
claude mcp add --transport stdio --env TRELLO_API_KEY=your_key --env TRELLO_TOKEN=your_token trello -- uvx --from git+https://github.com/cyber-sami/trello-guardrails-mcp trello-mcpClaude Desktop
Open Settings, then Developer, then Edit Config, and add this to claude_desktop_config.json.
{
"mcpServers": {
"trello": {
"command": "uvx",
"args": ["--from", "git+https://github.com/cyber-sami/trello-guardrails-mcp", "trello-mcp"],
"env": {
"TRELLO_API_KEY": "your_key",
"TRELLO_TOKEN": "your_token"
}
}
}
}Restart Claude Desktop after saving. If it cannot find uvx, replace "uvx" with the full path that which uvx prints.
Keeping credentials out of the client config
If you do not want the token in your client config, leave out the env block and put the credentials in a file instead.
mkdir -p ~/.config/trello-mcp
cp config.example.json ~/.config/trello-mcp/config.json
chmod 600 ~/.config/trello-mcp/config.jsonThen fill in the two values. The server looks for credentials in this order.
The
TRELLO_API_KEYandTRELLO_TOKENenvironment variables.The JSON file named by the
TRELLO_CONFIGenvironment variable.~/.config/trello-mcp/config.json.
Running from a clone
git clone https://github.com/cyber-sami/trello-guardrails-mcp
cd trello-guardrails-mcp
uv sync
uv run pytest
uv run trello-mcpWith pip, run pip install . inside the clone. That installs the trello-mcp command.
Example prompts
"What's on my Game Jam board? Summarise what's in progress."
"Create a card called 'Record footstep sounds' in To Do on Game Jam, due next Friday."
"Move the dialogue bug to Done and add a comment saying it was fixed in the latest build."
"Find every card that mentions the interrogation scene."
"Create a red label called Blocker on Game Jam and put it on the lighting card."
"Archive the Ideas list on my Home board. I'll restore it if I need it."
Security notes
Credentials are read only from environment variables or a local JSON file outside the repo. Nothing in this repository contains a real key or token, and .gitignore excludes .env and config.json files. When you use the env block, your MCP client stores the token in its own config file in plain text, so treat that file as sensitive.
The key and token are sent to api.trello.com in the Authorization header over HTTPS. They are never put in URLs, so they stay out of proxy logs and error messages.
A Trello token has the same access as your account on every board you can see. The server can read boards, lists, cards and comments. It can create cards, lists, labels and comments, move and rename cards, change descriptions and due dates, and archive cards and lists. It cannot delete anything, change board members or settings, or touch attachments and checklists. If you want a narrower blast radius, create a token that expires, or use a separate Trello account that only belongs to the boards you want Claude to manage.
Card titles, descriptions and comments are text written by people, and the model reads them as tool output. A card shared with you could contain instructions aimed at the model. Your MCP client's tool approval prompts are the defence against that, so keep write tools on "ask" if you work on boards with people you don't trust.
Limitations
update_cardreplaces the name or description rather than editing it. The previous text is not kept by this server, though Trello's activity log may show it.An empty field means "leave unchanged", so a description or due date cannot be cleared through this server.
move_cardonly moves cards within one board.Name lookups fetch the board's lists or cards on every call, with no caching. This is fine for personal boards and slower on very large ones.
search_cardsreturns at most 20 results, andget_cardsshows only the first 100 characters of each description.get_card_detailsshows the comments Trello returns by default, which is the most recent 50.Checklists, attachments, members, custom fields and board creation are not supported.
The server runs over stdio only, one user per process. It is not built to be hosted for several users.
Due dates are passed to Trello as given, without validation.
How it was built
I designed this server, decided on its tool set and guardrails, tested it against my own boards and maintain it. The code was written by Claude Code working from my specifications and reviews. The test suite runs without network access by replacing the Trello API with a fake.
License
MIT. See LICENSE.
Available Tools
14 toolsadd_commentAdd CommentC
Add a comment to a card.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | ||
| card_name | Yes | ||
| board_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without revealing side effects, permission requirements, or what happens on failure. The mutation implied by 'add' is obvious, but nothing else 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 a single sentence with no filler, making it appropriately concise. However, it may be too terse to be fully useful, but for a simple tool, the brevity is acceptable. The key information (action and target) 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?
While the tool is simple and an output schema exists (which may cover return values), the description is incomplete for a 3-parameter tool. It doesn't explain what each parameter does or any constraints, and it lacks usage context such as 'requires an existing card.' The minimalism leaves too much to inference.
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 0%, and the description adds no meaning to the parameters beyond their names. board_name, card_name, and comment are self-explanatory, but the description doesn't clarify formats, uniqueness constraints, or how they relate. For a tool with 0% coverage, the description must compensate but fails to.
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 ('Add') and resource ('a comment to a card'), which is specific and actionable. It doesn't explicitly name sibling tools, but the action is unambiguous and distinct from operations like create_card or update_card.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites such as the card needing to exist. There is no mention of when not to use it or how it differs from update_card or create_card.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_labelAdd LabelC
Add an existing label to a card by label name.
| Name | Required | Description | Default |
|---|---|---|---|
| card_name | Yes | ||
| board_name | Yes | ||
| label_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action without mentioning side effects (e.g., whether the label is added to the card's label list, whether it overwrites existing labels, idempotency, or permission requirements). The mutation nature is implied but not elaborated.
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, efficient sentence with no wasted words. It front-loads the action and resource. However, it is so brief that it sacrifices necessary detail, though conciseness itself is well-executed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, 0% parameter coverage, and no mention of return values or error conditions, the description is incomplete for a mutation tool. It does not explain what happens if the label does not exist, whether the operation is idempotent, or what the output schema contains. The agent lacks sufficient context 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 0%, so the description must compensate. It clarifies that label_name is used by name, but board_name and card_name are not explained beyond their names. No format, constraints, or relationships between parameters are provided, leaving the agent to guess.
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 ('Add'), a resource ('label to a card'), and a key constraint ('existing label' and 'by label name'). This clearly distinguishes it from create_label and other card-related tools. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the label must already exist but does not explicitly state when to use this tool versus create_label, nor does it mention prerequisites like ensuring the label exists on the board. No alternative tools are referenced, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_cardArchive CardB
Archive (close) a card on a board. Archived cards can be restored in Trello.
| Name | Required | Description | Default |
|---|---|---|---|
| card_name | Yes | ||
| board_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds useful behavioral context by clarifying that archiving means 'close' and that archived cards can be restored in Trello, implying reversibility. However, it does not disclose permissions, idempotency, or behavior when the card is already archived.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core action is front-loaded in the first sentence, and the second sentence adds a meaningful behavioral note about restoration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter archive action, the description is mostly adequate and an output schema exists, so return values need not be explained. However, it omits edge-case guidance such as handling duplicate card names, and it does not reference the sibling archive_list tool to disambiguate 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?
Schema description coverage is 0%, so the description must compensate, but it only indirectly references the parameters via 'a card on a board.' It does not explain whether names must be exact, how duplicate card names are handled, or any other semantic detail about board_name or card_name.
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 ('Archive') and a clear resource ('a card on a board'), with the parenthetical '(close)' removing ambiguity. It differentiates from the sibling archive_list by explicitly targeting cards rather than lists.
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 states what the tool does but gives no guidance on when to choose it over alternatives such as archive_list, move_card, or update_card. There is no mention of exclusions, prerequisites, or conditions that would route an agent to a different sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_listArchive ListB
Archive (close) a list on a Trello board. Archived lists can be restored in Trello.
| Name | Required | Description | Default |
|---|---|---|---|
| list_name | Yes | ||
| board_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It adds one useful consequence—archived lists can be restored in Trello—but it does not mention effects on cards, permission requirements, or whether restoration via the API is possible.
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 front-loaded: the first sentence states the action and object, and the second adds a relevant consequence. No words are wasted, though it is terse to the point of leaving gaps in other dimensions.
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 (two string parameters, no nesting) and has an output schema, so return-value documentation is unnecessary. However, the description omits parameter semantics and does not provide enough context for an agent to confidently distinguish when to select this tool rather than a sibling mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not clarify the meaning, format, or relationship of board_name and list_name. The parameter names are somewhat self-explanatory, but the description adds no semantic value beyond the schema itself.
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 ('Archive') with a parenthetical synonym ('close') and a clear object ('a list on a Trello board'). It also distinguishes itself from the sibling tool archive_card by explicitly targeting lists, not cards.
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 this tool is for archiving lists identified by board and list name, but it gives no explicit guidance on when to choose this tool over alternatives like archive_card, nor any exclusions or prerequisites. The usage context is inferable but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cardCreate CardC
Create a new card in a list on a board.
| Name | Required | Description | Default |
|---|---|---|---|
| card_name | Yes | ||
| list_name | Yes | ||
| board_name | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It merely states the action without revealing side effects, permissions, idempotency, or return value. The agent learns nothing about what happens on success or failure, making this a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the action. It is concise and free of filler. However, it omits critical context that would justify a 5, but for being a simple one-liner it is appropriately sized.
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 four parameters (three required) and an output schema, the description is far too sparse. It does not explain the meaning of required fields, the optional description purpose, or what the tool returns. Even a minimal agent would struggle to use it correctly without external knowledge.
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 0%, so the description should compensate by explaining the parameters (board_name, list_name, card_name, description). It does not mention any of them. The agent must rely solely on the parameter names, which is inadequate for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'card', and it narrows the scope with 'in a list on a board.' This differentiates it from siblings like create_list (list creation) and update_card (modification). It lacks an explicit contrast with those siblings, so it doesn't fully earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like update_card or move_card. The description does not mention prerequisites (e.g., board and list must exist) or exclusions. An agent has to infer usage solely from the name and description, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_labelCreate LabelA
Create a new label on a Trello board. Color must be one of: yellow, purple, blue, red, green, orange, black, sky, pink, lime, or empty for no color.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| board_name | Yes | ||
| label_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the create operation and the valid color set, but it does not mention potential duplicate-label behavior, required permissions, or failure handling. This is adequate for a simple additive create tool but leaves some behavioral context unstated.
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 core action is front-loaded, and the color constraint is the second essential piece of information. Nothing is redundant or wasteful.
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 3-parameter create tool with an output schema, the description covers the only non-obvious input constraint (color values) and specifies the target resource (a Trello board). It lacks explicit sibling differentiation, but that is largely a usage-guidance concern rather than a completeness gap for invoking 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 0%, so the description must add meaning. It provides the full valid color enumeration and clarifies that an empty string means no color. The other parameters, board_name and label_name, are reasonably self-explanatory given the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create'), the resource ('a new label'), and the scope ('on a Trello board'). It is distinct from sibling create_card/create_list, though it does not explicitly differentiate itself from the similarly named add_label.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as add_label, which likely serves a different purpose (e.g., attaching an existing label to a card). The intended usage is only implied by the tool's name and generic create phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_listCreate ListB
Create a new list on a Trello board.
| Name | Required | Description | Default |
|---|---|---|---|
| list_name | Yes | ||
| board_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Create a new list' and does not mention side effects, duplicate handling, permission requirements, or failure behavior. For a mutating tool, this is a notable transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no filler. It front-loads the action and resource, and every word contributes to understanding what the tool does.
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 with only two required string parameters and no nested objects, and an output schema exists, so return-value documentation is unnecessary. However, the lack of behavioral context such as duplicate policy or error cases leaves room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and only lists parameter names (board_name, list_name). The description echoes these concepts with 'list' and 'Trello board' but adds no format, constraints, or guidance beyond what the parameter names already imply.
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'), the resource ('a new list'), and the context ('on a Trello board'). It is distinct from siblings like create_card without needing explicit contrast, though it does not name or differentiate itself from related list operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when the agent wants to create a list on a board, but it gives no explicit when-to-use/when-not-to-use guidance and does not reference alternatives such as get_lists or archive_list. Usage context is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_boardsGet BoardsA
List all open Trello boards the user has access to.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the action (list) and scope (open, accessible boards), which implies a read-only operation. However, it does not disclose potential behavioral traits such as authentication requirements, pagination, or rate limits. For a simple list tool this is acceptable but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no redundancy. It immediately states the action and scope, making it easy to parse and act upon.
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 output schema exists, the description need not explain return values. The tool has no parameters, and the description fully captures its purpose and scope. There is nothing missing 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?
There are zero parameters, and schema coverage is 100% (trivially). The description adds meaningful context by specifying 'open' and 'user has access to', which clarifies the filtering criteria beyond the empty schema. This exceeds the baseline for a parameterless tool.
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 a clear resource ('open Trello boards') with an explicit scope ('the user has access to'). It unambiguously distinguishes itself from sibling tools like get_lists and get_cards, which operate on different resources.
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 implies when to use this tool (when you need boards), but does not explicitly name alternatives or exclusion conditions. Given the clear resource focus, an agent can infer the appropriate context without further guidance, though explicit routing would be more helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_card_detailsGet Card DetailsB
Get full details of a specific card including description, due date, and comments.
| Name | Required | Description | Default |
|---|---|---|---|
| card_name | Yes | ||
| board_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'Get' implies a read-only operation with no side effects, but this is not stated explicitly. It also does not disclose any authentication requirements, rate limits, or failure behaviors. For a simple retrieval tool this is acceptable but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to specifying the action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema is present (though not shown here), so return format is covered. However, the description omits any error scenarios, prerequisites (e.g., existence of board and card), or behavior when multiple cards share the same name. For a straightforward retrieval, this is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only parameter names with zero description coverage. The tool description does not elaborate on what 'board_name' and 'card_name' mean, their format, or how to find them. Since the schema gives no guidance and the description adds none, the agent must rely on naming conventions alone, which is insufficient.
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 ('Get') and resource ('full details of a specific card') and explicitly lists included fields (description, due date, comments). It implies a single card vs. the sibling 'get_cards' which likely lists cards, though it does not name the sibling directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving detailed information about one card, but provides no explicit guidance on when to choose this over get_cards or search_cards. No exclusions or alternatives are mentioned, leaving the selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cardsGet CardsC
Get all cards in a specific list on a board.
| Name | Required | Description | Default |
|---|---|---|---|
| list_name | Yes | ||
| board_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get all cards' without mentioning whether this is read-only (likely but not stated), whether it returns card details or summaries, pagination, or any side effects. For a read operation, the lack of explicit safety confirmation is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the action and resource. It earns its place with no waste, though it could add a bit more context without becoming bloated.
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 an output schema, return values are covered, but the description lacks guidance on parameter semantics, behavioral expectations, and usage context. For a tool with no annotations and 0% schema coverage, this is incomplete. An agent would need to infer how to specify board_name and list_name and what 'all cards' means in terms of output.
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 0%, so the description must compensate for the two parameters. It mentions 'board' and 'list' in the text, which maps to board_name and list_name, but doesn't explain what values are expected (e.g., exact names vs IDs) or how they relate. The description adds minimal 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 states a specific verb ('Get') and resource ('all cards in a specific list on a board'), which clearly distinguishes it from siblings like get_boards and get_lists. It doesn't explicitly name a sibling alternative, but the scope is clear enough to differentiate it from get_card_details and search_cards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you need all cards in a specific list. It doesn't explicitly state when not to use it or mention alternatives like get_card_details for a single card or search_cards for filtered results. The context is clear but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listsGet ListsA
Get all open lists on a Trello board.
| Name | Required | Description | Default |
|---|---|---|---|
| board_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It transparently discloses that the operation retrieves only open lists and is scoped to a board, and the 'Get' verb implies a read-only behavior. It omits details like ordering or result shape, but those are partially covered by the presence of 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?
One compact, front-loaded sentence that conveys the verb, resource, scope, and board context without any filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one required parameter and an output schema, the description provides essential call context. Minor gaps include lack of explicit guidance on board_name format and what happens when no open lists exist, but overall the definition is sufficient 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?
The schema only defines board_name as a string with no description. The tool description compensates by clarifying that the parameter represents the Trello board whose open lists should be fetched. It does not specify whether a name or ID is expected, but the single self-describing parameter makes the meaning reasonably 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 identifies the action ('Get'), the resource ('open lists'), and the scope ('on a Trello board'). This distinguishes it from sibling tools like get_boards, get_cards, and list-mutation 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 clearly states when to use the tool: when the agent needs open lists for a particular board. It also implicitly excludes archived lists via 'open lists', though it does not explicitly name sibling alternatives or state when not to use them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_cardMove CardB
Move a card to a different list on the same board.
| Name | Required | Description | Default |
|---|---|---|---|
| card_name | Yes | ||
| board_name | Yes | ||
| target_list_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without revealing side effects, prerequisites (e.g., card and list must exist), failure modes, or reversibility. The verb 'move' implies mutation, but that's minimal; an agent lacks information about what happens if the target list doesn't exist or if the card isn't found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and its scope. It contains no fluff or redundant phrasing, earning its place by conveying the core purpose 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?
Given the presence of an output schema (which reduces the need to describe returns) and a simple 3-string-parameter schema, one might expect a compact description to be sufficient. However, the lack of annotations and absence of behavioral details (e.g., does it validate existence, does it move within the board only, what errors occur) makes it incomplete for an agent to invoke correctly without risk of failure. The description is too sparse for a mutation 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 description coverage is 0%, so the description must compensate by explaining parameter meaning. It does not mention any parameters at all. While the parameter names (board_name, card_name, target_list_name) are somewhat self-explanatory, the description adds no semantics about their expected format, required identifiers, or how they relate. The agent must rely solely on names, which is insufficient for a tool with no 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 verb 'move' applied to a 'card', with a specific destination ('different list on the same board'). This distinguishes it from siblings like create_card, archive_card, and update_card, which have different actions. The phrasing is concise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: if you need to move a card to another list on the same board, use this tool. It does not explicitly contrast with alternatives or provide when-not-to-use guidance, but the constraint 'same board' gives some context. No exclusions or alternative routing are mentioned, so it falls short of a clear usage guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cardsSearch CardsA
Search for cards across all boards by keyword (max 20 results).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses a meaningful behavior: the result limit of 20 and the cross-board scope. However, it does not mention which card fields are searched (name, description, etc.), ordering, or failure behavior, leaving some uncertainty for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. The verb and resource are front-loaded, followed by the scope and limit. Every word adds value, making it an exemplary concise definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one param, no annotations), the description covers the essential context: scope, search mechanism, and result cap. The output schema exists, so return structure is handled elsewhere. A minor gap is lack of detail on which fields are searched, but this is unlikely to prevent 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?
The schema provides only a required string 'query' with no description, so coverage is 0%. The description compensates by specifying that the parameter is a keyword, directly clarifying its semantic meaning. For a single simple parameter, this is sufficient; no further format details are critical.
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 ('Search'), a specific resource ('cards across all boards'), and a behavioral constraint ('max 20 results'). This distinguishes it from siblings like get_cards or get_card_details, which imply narrower scopes. The agent can immediately understand what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'across all boards' clearly indicates the tool is for cross-board keyword search, which gives a usable context for when to invoke it. It does not explicitly name alternatives or exclusion criteria, but the scope is clear enough to avoid obvious misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_cardUpdate CardA
Update a card's name, description, or due date (ISO 8601, e.g. 2026-05-15). Leave fields empty to keep them unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| due_date | No | ||
| new_name | No | ||
| card_name | Yes | ||
| board_name | Yes | ||
| new_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It adds the important partial-update semantics (empty fields are no-ops) and the ISO 8601 date format requirement, which are real behavioral traits beyond the tool name. However, it does not mention whether updates are destructive, require permissions, or affect other card fields, leaving notable gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the verb, resource, and fields, then adds the format and behavior. It contains no fluff and every clause adds value. Slightly more structure could include the identifying parameters, but as written it is efficient and readable.
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 output schema covers return values, but the description leaves major gaps for a mutation tool. It does not explain how the card is identified via board_name and card_name, which are required parameters, nor does it note prerequisites like an existing card/board or error conditions. The description addresses the update fields but not the targeting mechanism, making it incomplete for safe 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 0%, so the description must compensate. It maps 'name, description, due date' to new_name, new_description, and due_date, and adds the empty-field meaning. However, it does not explain the required identifiers board_name and card_name, which are essential for the agent to target the correct card. The description covers only 3 of 5 parameters meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a card's name, description, or due date, with a specific verb and resource. It differentiates from siblings like create_card, archive_card, and move_card by explicitly listing the updatable fields, so an agent can identify the correct operation.
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 it: when changing one or more of the three named fields. It also provides a usage rule, 'Leave fields empty to keep them unchanged,' which guides the agent on how to perform a partial update. It does not explicitly name alternatives or exclusions, but the context is sufficiently clear.
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.
14 tool updates
v0.1.0- First observed
add_comment - First observed
add_label - First observed
archive_card - First observed
archive_list - First observed
create_card - First observed
create_label - First observed
create_list - First observed
get_boards - First observed
get_card_details - First observed
get_cards - First observed
get_lists - First observed
move_card - First observed
search_cards - First observed
update_card
TDQS
Scored across 14 tools
Each tool targets a distinct Trello resource and action. Even similar tools like get_cards vs get_card_details and create_label vs add_label are clearly separated by their descriptions.
All tool names follow a consistent snake_case verb_noun pattern, such as get_boards, create_card, archive_list, and move_card. There are no mixed conventions or vague verbs.
14 tools is well-scoped for a Trello server, covering boards, lists, cards, labels, comments, and search without unnecessary duplication. Each tool earns its place in the set.
The toolset covers core Trello workflows well: listing, creating, updating, archiving, moving, commenting, labeling, and searching. Minor gaps exist, such as no create_board, no get_labels, and no remove_label_from_card, but common agent workflows are still achievable.
Maintenance
Related MCP Connectors
Give Claude only the Google Drive files you choose. Every action logged.
AI agents use CalmBoard MCP to access board data, tasks, insights, and project workflows.
Create, read and live-edit visual boards, Kanban plans, Gantt timelines and diagrams with AI agents.
- hedwigOAuthcom.hedwig-ai
Read, arrange, and build agents on your Hedwig email board from any AI client. Nothing ever sends.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Claude to manage Trello boards, lists, and cards through natural language, using tools like list_boards, add_card, and move_card.MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to manage Trello boards, lists, and cards through natural language.232 npmISC
- FlicenseNot gradedqualityDmaintenanceEnables Claude to interact with Trello boards, lists, cards, and labels through a set of MCP tools.-
- AlicenseNot gradedqualityCmaintenanceEnables Claude to manage Trello boards, lists, cards, labels, and checklists via the Trello REST API, allowing natural language task management.232 npmISC