MCP Server Trello
The MCP Server Trello enables seamless interaction with Trello boards through a type-safe, rate-limited, and error-handled API.
Fetch cards from a specific list using
get_cards_by_list_idRetrieve all lists from the board with
get_listsFetch recent activity on the board via
get_recent_activityAdd new cards to a list using
add_card_to_listUpdate existing cards with
update_card_detailsArchive cards using
archive_cardAdd new lists to the board with
add_list_to_boardArchive lists using
archive_listFetch assigned cards for the current user via
get_my_cardsHandle rate limiting (300 requests/10s per API key, 100 requests/10s per token)
Provide robust error handling for various error conditions
Enables comprehensive Trello board management with capabilities for interacting with cards, lists, and board activities. Supports creating and updating cards, managing lists, tracking recent activity, and handling assigned tasks while respecting Trello's API rate limits.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Server Trelloadd a card to the backlog list for the new login feature"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server Trello
A Model Context Protocol (MCP) server that provides tools for interacting with Trello boards. This server enables seamless integration with Trello's API while handling rate limiting, type safety, and error handling automatically.
Features
Full Trello Board Integration: Interact with cards, lists, and board activities
Built-in Rate Limiting: Respects Trello's API limits (300 requests/10s per API key, 100 requests/10s per token)
Type-Safe Implementation: Written in TypeScript with comprehensive type definitions
Input Validation: Robust validation for all API inputs
Error Handling: Graceful error handling with informative messages
Related MCP server: MCP Trello
Installation
npm install @modelcontextprotocol/mcp-server-trelloConfiguration
Add the server to your MCP settings file with the following configuration:
{
"mcpServers": {
"trello": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-trello"],
"env": {
"TRELLO_API_KEY": "your-api-key",
"TRELLO_TOKEN": "your-token",
"TRELLO_BOARD_ID": "your-board-id"
}
}
}
}Required Environment Variables
TRELLO_API_KEY: Your Trello API key (get from https://trello.com/app-key)TRELLO_TOKEN: Your Trello token (generate using your API key)TRELLO_BOARD_ID: ID of the Trello board to interact with (found in board URL)
Available Tools
get_cards_by_list_id
Fetch all cards from a specific list.
{
name: 'get_cards_by_list_id',
arguments: {
listId: string // ID of the Trello list
}
}get_lists
Retrieve all lists from the configured board.
{
name: 'get_lists',
arguments: {}
}get_recent_activity
Fetch recent activity on the board.
{
name: 'get_recent_activity',
arguments: {
limit?: number // Optional: Number of activities to fetch (default: 10)
}
}add_card_to_list
Add a new card to a specified list.
{
name: 'add_card_to_list',
arguments: {
listId: string, // ID of the list to add the card to
name: string, // Name of the card
description?: string, // Optional: Description of the card
dueDate?: string, // Optional: Due date (ISO 8601 format)
labels?: string[] // Optional: Array of label IDs
}
}update_card_details
Update an existing card's details.
{
name: 'update_card_details',
arguments: {
cardId: string, // ID of the card to update
name?: string, // Optional: New name for the card
description?: string, // Optional: New description
dueDate?: string, // Optional: New due date (ISO 8601 format)
labels?: string[] // Optional: New array of label IDs
}
}archive_card
Send a card to the archive.
{
name: 'archive_card',
arguments: {
cardId: string // ID of the card to archive
}
}add_list_to_board
Add a new list to the board.
{
name: 'add_list_to_board',
arguments: {
name: string // Name of the new list
}
}archive_list
Send a list to the archive.
{
name: 'archive_list',
arguments: {
listId: string // ID of the list to archive
}
}get_my_cards
Fetch all cards assigned to the current user.
{
name: 'get_my_cards',
arguments: {}
}Rate Limiting
The server implements a token bucket algorithm for rate limiting to comply with Trello's API limits:
300 requests per 10 seconds per API key
100 requests per 10 seconds per token
Rate limiting is handled automatically, and requests will be queued if limits are reached.
Error Handling
The server provides detailed error messages for various scenarios:
Invalid input parameters
Rate limit exceeded
API authentication errors
Network issues
Invalid board/list/card IDs
Development
Prerequisites
Node.js 16 or higher
npm or yarn
Setup
Clone the repository
git clone https://github.com/modelcontextprotocol/server-trello.git
cd server-trelloInstall dependencies
npm installBuild the project
npm run buildRunning Tests
npm testContributing
Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Built with the Model Context Protocol SDK
Uses the Trello REST API
Available Tools
9 toolsadd_card_to_listC
Add a new card to a specified list
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | Description of the card | |
| dueDate | No | Due date for the card (ISO 8601 format) | |
| labels | No | Array of label IDs to apply to the card | |
| listId | Yes | ID of the list to add the card to | |
| name | Yes | Name of the card |
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 states the tool adds a card but lacks details on permissions required, whether the operation is idempotent, error handling, or what happens on success (e.g., returns a card ID). This is a significant gap for a mutation tool with zero annotation coverage.
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 zero waste—it directly states the tool's purpose without fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like side effects, return values, or error conditions, which are critical for an agent to use this tool effectively in context with its siblings.
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 5 parameters thoroughly. The description adds no parameter-specific information beyond what the schema provides, such as explaining relationships between fields or usage tips. Baseline 3 is appropriate when 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?
The description clearly states the action ('Add a new card') and target resource ('to a specified list'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'update_card_details' or 'archive_card' beyond the basic verb, missing explicit distinction in scope or 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a list ID), exclusions, or comparisons to siblings like 'update_card_details' for modifying existing cards or 'get_cards_by_list_id' for retrieval, leaving usage context implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_list_to_boardC
Add a new list to the board
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the new list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the action without disclosing behavioral traits. It doesn't cover permissions needed, whether the list is editable after creation, error conditions, or what happens if a duplicate name is used, leaving significant 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, efficient sentence with zero waste, front-loading the core action. It's appropriately sized for a simple tool, earning full marks for conciseness.
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 this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral context, error handling, or return values, making it inadequate for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'name' parameter fully. The description adds no additional meaning beyond implying a list is created, aligning with the baseline score when 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?
The description clearly states the verb ('add') and resource ('new list to the board'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'add_card_to_list' or 'archive_list', which also modify board components, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing board), exclusions, or comparisons to siblings like 'get_lists' for listing or 'archive_list' for removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_cardC
Send a card to the archive
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | ID of the card to archive |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Send a card to the archive' implies a destructive/mutative operation, but it doesn't specify whether this is reversible, what permissions are required, whether it affects related data, or what happens after archiving. The description lacks critical behavioral context 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 perfectly concise at just four words, front-loading the essential action without any wasted words. Every element ('Send', 'a card', 'to the archive') earns its place by conveying core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address what 'archive' means operationally, whether the action is permanent or reversible, what the expected outcome is, or how this fits within the broader card management workflow with sibling tools.
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 the single parameter 'cardId' clearly documented in the schema. The description adds no additional parameter information beyond what the schema provides, which is acceptable given the high schema coverage but doesn't enhance understanding.
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 ('Send') and target resource ('a card to the archive'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'archive_list' or explain what distinguishes archiving from deletion or other card 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., card must exist), when archiving is appropriate versus deleting or moving cards, or how this relates to sibling tools like 'update_card_details' or 'get_my_cards'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_listC
Send a list to the archive
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ID of the list to archive |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose whether archiving is reversible, requires specific permissions, affects related data, or has side effects, leaving significant 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, direct sentence with zero wasted words, efficiently conveying the core action. It is appropriately sized for a simple tool and front-loaded with essential 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 mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavior, outcomes, error conditions, or integration with sibling tools, failing to compensate for the missing structured data.
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 the single parameter 'listId' clearly documented in the schema. The description adds no additional parameter context beyond implying 'listId' is needed, meeting the baseline for high schema coverage without extra value.
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 ('Send') and target resource ('a list to the archive'), making the purpose immediately understandable. It doesn't differentiate from sibling tools like 'archive_card' or specify what 'archive' means in this context, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'archive_card' or other list-related operations. The description lacks context about prerequisites, consequences, or typical use cases, offering minimal practical direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cards_by_list_idB
Fetch cards from a specific Trello list
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ID of the Trello list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool fetches cards but doesn't describe what 'fetch' entails—e.g., whether it returns all cards, supports pagination, requires authentication, or has rate limits. For a read operation with zero annotation coverage, this leaves critical behavioral traits unspecified.
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 sentence with zero wasted words. It front-loads the core purpose ('Fetch cards') and specifies the scope ('from a specific Trello list'), making it efficient and easy to parse. Every word earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description is minimally adequate but incomplete. It lacks behavioral details (e.g., response format, error handling) and usage context, which are important given no annotations. However, the purpose is clear, and the parameter is well-documented in the schema, making it functional but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'listId' documented as 'ID of the Trello list'. The description adds no additional meaning beyond this, such as format examples or where to obtain the ID. Given high schema coverage, the baseline score of 3 is appropriate, as the schema adequately covers 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 action ('Fetch') and target resource ('cards from a specific Trello list'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_my_cards' or 'get_recent_activity' that also retrieve cards or activity data, leaving some ambiguity about when to choose this specific 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for selecting this over siblings like 'get_my_cards' (which might fetch cards across lists), or any constraints on usage. The agent must infer usage from the name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listsB
Retrieve all lists from the specified board
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves data, implying a read-only operation, but doesn't cover aspects like authentication needs, rate limits, error conditions, or what happens if no lists exist. This leaves significant gaps for a tool with zero annotation coverage.
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 that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the return values look like (e.g., list format, fields included) or address behavioral aspects like pagination or error handling. For a data retrieval tool with no structured support, this leaves too many unknowns for effective 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?
The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description appropriately doesn't add parameter details beyond what the schema provides, earning a baseline score of 4 for zero-parameter tools as per the rules.
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 ('Retrieve') and resource ('all lists from the specified board'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from sibling tools like 'get_cards_by_list_id' or 'get_my_cards', which also retrieve data but target 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a board context), exclusions, or comparisons to sibling tools like 'get_recent_activity' for different data types. Usage is implied by the action but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_cardsB
Fetch all cards assigned to the current user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'fetch' implies a read-only operation, it doesn't specify critical details like whether this requires authentication, how results are paginated or sorted, what happens if no cards are assigned, or potential rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that front-loads the essential information ('fetch all cards assigned to the current user') with zero wasted words. It's appropriately sized for a simple, parameterless tool and efficiently communicates the core purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. However, it lacks context about the return format (e.g., what data fields are included, if it's a list of objects) and behavioral traits like error handling or dependencies. For a read operation with no structured output documentation, more completeness would be helpful for an agent to use it effectively.
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 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately adds no parameter details, as it's a parameterless tool. This earns a baseline 4, as the description doesn't need to compensate for any schema gaps.
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 ('fetch') and resource ('cards assigned to the current user'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_cards_by_list_id' or 'get_recent_activity', which also retrieve card-related data but with different scopes or filters.
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. For example, it doesn't clarify if this should be used instead of 'get_cards_by_list_id' when needing all user cards versus cards in a specific list, or how it relates to 'get_recent_activity' for recent updates. Without such context, the agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_activityC
Fetch recent activity on the Trello board
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of activities to fetch (default: 10) |
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 states 'fetch' implies a read operation, but doesn't cover aspects like authentication needs, rate limits, error handling, or what 'recent activity' entails (e.g., time range, types of activities). This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a tool that fetches data. It lacks details on return format, error cases, or behavioral traits, which are crucial for an agent to use the tool effectively in context with its siblings.
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 the parameter 'limit' fully documented in the schema. The description doesn't add any parameter-specific details beyond what the schema provides, such as constraints or examples, so it meets the baseline for high schema coverage without extra value.
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 ('fetch') and resource ('recent activity on the Trello board'), making the purpose understandable. It doesn't explicitly distinguish from siblings like 'get_cards_by_list_id' or 'get_my_cards', which also retrieve data but focus on different resources, so it misses full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention context, prerequisites, or exclusions, leaving the agent to infer usage based on tool names alone, which is insufficient for optimal selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_card_detailsC
Update an existing card's details
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | ID of the card to update | |
| description | No | New description for the card | |
| dueDate | No | New due date for the card (ISO 8601 format) | |
| labels | No | New array of label IDs for the card | |
| name | No | New name for the card |
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 states 'Update an existing card's details,' which implies a mutation operation, but fails to mention critical aspects like required permissions, whether updates are reversible, potential side effects (e.g., notifications), or rate limits. This leaves significant gaps for an agent to understand the tool's behavior safely.
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 that directly states the tool's purpose without any unnecessary words. It is front-loaded and wastes no space, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., permissions, side effects), usage context, and what the tool returns, leaving the agent with insufficient guidance for safe and effective 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 description coverage is 100%, with each parameter clearly documented in the input schema (e.g., 'cardId' as ID, 'dueDate' in ISO 8601 format). The description adds no additional meaning beyond what the schema provides, such as explaining relationships between parameters or usage examples. This meets the baseline for high schema coverage but doesn't enhance understanding.
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 ('Update') and resource ('an existing card's details'), making the purpose immediately understandable. However, it doesn't differentiate this tool from potential siblings like 'archive_card' or 'add_card_to_list' beyond the general 'update' action, which is why it doesn't reach a perfect score.
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. For example, it doesn't mention prerequisites (e.g., needing the card ID), when not to use it (e.g., for archiving vs. updating), or how it relates to siblings like 'archive_card' or 'get_cards_by_list_id' for retrieval before updating.
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. Dates show when Glama detected each change.
9 tool updates
v1.0.0- First observed
add_card_to_list - First observed
add_list_to_board - First observed
archive_card - First observed
archive_list - First observed
get_cards_by_list_id - First observed
get_lists - First observed
get_my_cards - First observed
get_recent_activity - First observed
update_card_details
TDQS
Each tool has a clearly distinct purpose with no ambiguity: adding cards/lists, archiving cards/lists, fetching cards by list/board/user, getting activity, and updating cards. The descriptions reinforce this by specifying unique actions on different Trello entities.
The naming is mostly consistent with a verb_noun pattern (e.g., add_card_to_list, archive_card, get_cards_by_list_id), but there are minor deviations like 'get_my_cards' (which could be 'get_cards_by_user' for full consistency) and 'get_recent_activity' (which doesn't follow the verb_noun structure as tightly).
With 9 tools, this is well-scoped for a Trello server, covering core operations like CRUD for cards and lists, archiving, and activity tracking. Each tool earns its place without feeling excessive or insufficient for managing Trello boards.
The toolset provides strong coverage for Trello's domain, including create (add_card_to_list, add_list_to_board), read (get_cards_by_list_id, get_lists, get_my_cards, get_recent_activity), update (update_card_details), and delete/archive (archive_card, archive_list). A minor gap is the lack of a tool to update list details, but agents can work around this.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
- KaneraOAuthapp.kanera
Manage Kanera workspaces, boards, cards, checklists, comments, notes, automations, and reports.
Connect AI agents to 1000+ apps with managed authentication and tool-calling.
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceFacilitates interaction with Trello boards via the Trello API, offering features like rate limiting, type safety, input validation, and error handling for seamless management of cards, lists, and board activities.2,688437MIT
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Trello boards through comprehensive card, list, and board management tools. Includes built-in rate limiting, type safety, and support for operations like creating cards, updating details, managing members, and tracking board activity.13710MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Trello boards, lists, and cards through the Trello REST API. Supports board management, card operations, member management, labels, and checklists through natural language.1691ISC
- AlicenseNot gradedqualityDmaintenanceProvides seamless integration with Trello's API to manage boards, lists, and cards through natural language. It supports full CRUD operations, card movement, and the ability to load Trello resources directly into an LLM's context for analysis.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/diegofornalha/mcp-server-trello'
If you have feedback or need assistance with the MCP directory API, please join our Discord server