0.0 / 30
What changed in the harness
Selection accuracy 95→98, token cost up 12%, unconfirmed writes 0%→0%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
19.2 / 30
03Economics
13.3 / 20
04Discoverability
9.4 / 20
Highest-impact fix
Estimated gain +30 pointsAdd explicit identity and permission preflight tools
Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
Defects and rewrites.
42 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
trello_search |
no_return_description |
Search across boards, cards, and members by keyword or phrase. Use it when you know part of a name or text but not the exact item, and narrow results with modelTypes or boardIds. Returns the matching boards, cards, and members with descriptions capped by descriptionMaxLength (0 excludes them) and minimal fields by default unless compact is false. |
trello_get_user_boards |
name_restates_behavior no_return_description |
Starting point for exploring a Trello workspace: lists the boards available to the authenticated user, optionally filtered to open, closed, or all. Use it to discover board IDs/URLs before calling get_board_details or get_lists. Returns an array of boards with their metadata (id, name, url, status). |
get_board_details |
no_return_description |
Retrieve a board's metadata and its lists. Start with includeDetails=false for a lightweight overview, then drill into specific cards with get_card or trello_get_list_cards; only set includeDetails=true on small boards when you need a full overview. Returns the board's metadata and lists, and when includeDetails=true also all cards with descriptions capped by descriptionMaxLength and minimal card fields unless compact is false. |
get_card |
name_restates_behavior no_return_description |
Fetches a single card's full record so you can read its content, status, members, and attachments in one call. Use it after you have a cardId from a search or board/list listing. Returns the card's fields (name, description, list position, due dates, etc.); set includeDetails=true to also include members, labels, checklists, and activity badges. |
create_card |
no_return_description |
Add a new task, idea, or item to a list. Requires a name and the destination list ID (from get_lists); optionally add a description, due/start dates, assigned members, and labels. Returns the created card with its id so you can reference it in follow-up calls. |
update_card |
no_return_description |
Modify properties of an existing card in place, such as its name, description, due date, or list membership, and archive or unarchive it with closed. Use it instead of recreating a card when details change. Returns the updated card. |
move_card |
no_return_description |
Change a card's workflow status by moving it to another list (e.g., from 'To Do' to 'In Progress'). Pass the destination list ID and an optional position within that list. Returns the moved card with its new list and position. |
trello_add_comment |
no_return_description |
Append a note, update, or discussion message to a card. Use it to record context or conversation without editing the card itself. Returns the created comment action. |
trello_get_list_cards |
name_restates_behavior no_return_description |
View everything in one workflow column. Use it to enumerate the tasks/items in a list, optionally filtered to open or closed cards and narrowed to specific fields. Returns an array of cards from the list with minimal fields by default unless compact is false. |
trello_create_list |
no_return_description |
Add a workflow column to a board, such as 'To Do', 'In Progress', or 'Done'. Use it when the board's current columns don't cover the needed stages. Returns the newly created list with its id and position. |
list_boards |
no_return_description |
Enumerate the boards the user can access on their Trello account. Use it as a discovery step to find a board ID or URL before operating on it, optionally filtered by status. Returns an array of board summaries (id, name, url, status). |
get_lists |
no_return_description |
See the columns in a board to understand its workflow. Use it to pick the ID of the list where you want to create or move cards, optionally filtered to open or closed lists. Returns the board's lists with their ids, names, and positions. |
trello_get_member |
name_restates_behavior no_return_description |
Inspect a user's profile and what they can access. Use it with 'me' for the authenticated user or a member ID/username to understand their boards and organizations, optionally limited by the boards and organizations parameters. Returns the member's profile fields (full name, username, bio, url) plus their boards and organizations as requested. |
trello_get_board_cards |
name_restates_behavior no_return_description |
List the cards on a board, optionally narrowed by status, assigned member, attachments, or member detail inclusion. Use it to survey a board's work or find cards for a specific assignee. Returns the board's cards with descriptions capped by descriptionMaxLength and minimal fields by default unless compact is false. |
trello_get_card_actions |
name_restates_behavior no_return_description |
Review a card's activity trail: comments, updates, and creation events. Use it to track what changed, when, and by whom, filtered to commentCard, updateCard, or createCard actions. Returns an array of action records with timestamps and the comment text or change details, up to the limit. |
trello_get_card_attachments |
name_restates_behavior no_return_description |
List every file or link attached to a card. Use it to locate shared resources on a card, optionally selecting which fields to return (e.g., name, url, mimeType, date). Returns the card's attachments. |
trello_get_card_attachment |
name_restates_behavior no_return_description |
Fetch metadata for one specific attachment (file or link) on a card using its attachment ID, with optional field selection. Use it after trello_get_card_attachments to inspect a particular resource. Returns the attachment's details such as name, url, mimeType, and date. |
trello_delete_card_attachment |
name_restates_behavior no_return_description |
Remove an attachment (file or link) from a card by its ID. Use it to clean up outdated or incorrect resources on a card. Returns confirmation that the attachment was deleted. |
trello_get_card_checklists |
name_restates_behavior no_return_description |
Read the checklists on a card and their items to see task progress. Use it to verify what is done and what remains before considering a task complete; set checkItems to 'none' for checklist names only. Returns the card's checklists and, by default, their items. |
trello_get_board_members |
name_restates_behavior no_return_description |
See who can access a board. Use it before assigning cards or changing permissions to confirm which member IDs are available. Returns an array of members on the board with their profile details. |
trello_get_board_labels |
name_restates_behavior no_return_description |
See the label options defined on a board so you can categorize cards with trello_add_label_to_card. Use it to discover the label name/ID pairs available before creating or assigning labels. Returns the board's labels with their ids, names, and colors. |
trello_create_label |
name_restates_behavior no_return_description |
Add a new color-coded label to a board so it can be used to categorize cards. Requires a name and a color (e.g., green, yellow, red, blue). Returns the created label with its id, name, and color. |
trello_update_label |
name_restates_behavior no_return_description |
Rename or recolor an existing label. Use it to keep label semantics in sync with the board's workflow or fix a mis-spelled label name. Returns the updated label with its new name and color. |
trello_add_label_to_card |
name_restates_behavior no_return_description |
Categorize a card by assigning an existing label to it. Use it in combination with trello_get_board_labels to apply the correct label ID to a card. Returns the card with the label applied. |
trello_remove_label_from_card |
name_restates_behavior no_return_description |
Remove an existing label from a Trello card when re-categorizing or cleaning up tags. Provide the card's ID (cardId) and the ID of the label to detach (labelId); the label is removed from the card but the label definition on the board remains. Returns the updated card reflecting the removed label. |
trello_delete_label |
name_restates_behavior no_return_description |
Permanently delete a label definition from a Trello board, useful for removing unused or obsolete labels. Provide the label's ID (labelId). Note this removes the label from the board; labels on cards that used it will no longer reference it. Returns the deleted label or a success confirmation. |
trello_add_member_to_card |
name_restates_behavior no_return_description |
Assign a member to a Trello card so they appear as a collaborator, for example to indicate ownership or responsibility. Accepts a card ID or URL (cardId) and the member's ID (memberId). Returns the updated card with the newly added member. |
trello_remove_member_from_card |
name_restates_behavior no_return_description |
Remove a member from a Trello card when they should no longer be assigned, for example after the work is handed off or completed. Accepts a card ID or URL (cardId) and the member's ID (memberId). Returns the updated card without that member. |
trello_archive_card |
no_return_description |
Archive or unarchive a Trello card, moving it out of (or back into) the active board view. Set value to true to archive and false to unarchive; cardId accepts an ID or URL. Returns the updated card reflecting its new archived state. |
trello_create_checklist |
no_return_description |
Create a new checklist (a list of check items) on a card, optionally copying items from an existing checklist via idChecklistSource and placing it at the position given by pos (top, bottom, or a positive number). Returns the created checklist object. |
trello_get_checklist |
params_unexplained no_return_description |
Retrieve a single checklist and all of its check items so you can see item names and completion states. Provide the checklist's Trello ID (checklistId) and optionally pass fields to limit which properties are returned. Returns the checklist object including its check items. |
trello_update_checklist |
no_return_description |
Update an existing checklist's name and/or position on its card. Provide the checklist's ID (checklistId) plus the new name and/or pos (top, bottom, or a positive number). Returns the updated checklist object. |
trello_delete_checklist |
no_return_description |
Delete a checklist and all of its check items from a card permanently, useful for removing outdated task lists. Provide the checklist's ID (checklistId). Returns the deleted checklist or a success confirmation. |
trello_get_checklist_field |
name_restates_behavior params_unexplained no_return_description |
Read a single field of a checklist, either its name or its position (only name and pos are supported). Provide the checklist's Trello ID (checklistId) and the field to retrieve. Returns the current value of the requested field. |
trello_update_checklist_field |
name_restates_behavior params_unexplained no_return_description |
Update a single field of a checklist, either its name or its position (only name and pos are supported). Provide the checklist's Trello ID (checklistId), the field to change, and the new value. Returns the updated checklist reflecting the change. |
trello_get_board_for_checklist |
name_restates_behavior params_unexplained no_return_description |
Find the board that contains a given checklist, useful for navigating upward from a checklist to its parent board. Provide the checklist's Trello ID (checklistId). Returns the board object the checklist belongs to. |
trello_get_card_for_checklist |
name_restates_behavior params_unexplained no_return_description |
Find the card that contains a given checklist, useful for navigating upward from a checklist to its parent card. Provide the checklist's Trello ID (checklistId). Returns the card object the checklist belongs to. |
trello_get_check_items |
params_unexplained no_return_description |
Retrieve all check items on a checklist, optionally filtered by completion state (all, complete, or incomplete; defaults to all). Provide the checklist's Trello ID (checklistId). Returns a list of the checklist's check items. |
trello_create_check_item |
no_return_description |
Add a new item to a checklist, for example a new task or sub-task. Provide the checklist's ID (checklistId) and the item text (name); optionally set its position (pos), whether it starts checked, a due date in ISO 8601 format (due), or an assigned member (idMember). Returns the created check item. |
trello_get_check_item |
name_restates_behavior params_unexplained no_return_description |
Retrieve a single check item from within a checklist to inspect its name, state, due date, or assigned member. Provide the checklist's Trello ID (checklistId) and the check item's ID (checkItemId). Returns the check item object with its current details. |
trello_delete_check_item |
params_unexplained no_return_description |
Remove a specific check item from a checklist, useful for deleting tasks that are no longer needed. Provide the checklist's ID (checklistId) and the ID of the check item to remove (checkItemId). Returns the deleted check item or a success confirmation. |
trello_update_check_item |
no_return_description |
Update a check item on a card: rename it, check/uncheck it via state (complete or incomplete), move it with pos, set or remove a due date (null removes), or assign/unassign a member (null unassigns). Provide the card's ID (cardId) and the check item's ID (checkItemId). Returns the updated check item. |
Selection evidence
Confusable tool pairs.
10 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
trello_update_checklist |
trello_update_checklist_field |
high | Both update a checklist's name/position with near-identical descriptions. A task like 'rename checklist X' fits both equally (update_checklist has a name param; update_checklist_field uses field='name', value), so an agent can pick the wrong one. |
trello_get_card_checklists |
trello_get_card_for_checklist |
medium | Direction swap: 'get the checklist(s) for card X' provides a cardId, but the similarly-named tool reads as 'get the card for a checklist' and requires a checklistId, inviting mismatched input/output. |
trello_get_card_attachments |
trello_get_card_attachment |
medium | Singular/plural twins. Natural phrasing like 'get the attachment on card X' (without a specific attachment ID) matches the singular tool by name, but that tool requires an attachmentId the user never gave. |
trello_get_check_items |
trello_get_check_item |
medium | Singular/plural pair on the same subject. 'Show me the check item on checklist X' without a checkItemId could wrongly select trello_get_check_item (which needs the ID) instead of trello_get_check_items for all items. |
trello_get_card_checklists |
trello_get_checklist |
medium | 'Get the checklist for card X' can match trello_get_checklist by the literal phrase 'get the checklist,' but that tool requires a checklistId and returns one checklist; the card-level tool taking a cardId is the correct pick. |
trello_get_board_for_checklist |
trello_get_card_for_checklist |
medium | Identical shape ('get the X that a checklist belongs to') with the same checklistId input. A task like 'where does checklist X live?' never says whether board or card is meant, so the agent may return the wrong parent object. |
trello_get_checklist |
trello_get_checklist_field |
low | 'Get the name/position of checklist X' can be satisfied by either tool: get_checklist returns the full checklist including those fields, while get_checklist_field returns only the field. Same inputs fit both, so the general getter may be chosen when the field-specific tool is intended. |
trello_get_list_cards |
get_lists |
medium | The verb 'list' collides with the noun. 'List the cards in list X' or 'get the list cards' can greedily match get_lists (get all lists on a board) instead of trello_get_list_cards, since both names share 'get'/'list'. |
trello_get_checklist |
trello_get_card_for_checklist |
low | Both consume a checklistId and start with 'get...checklist.' A task like 'get checklist X and which card it belongs to' may settle on get_checklist when get_card_for_checklist was the specific intent. |
get_card |
trello_get_list_cards |
low | Shared 'get card' tokens. 'Get the cards for a list' could select get_card (which expects a specific cardId) rather than trello_get_list_cards, or vice versa; the ID type supplied is the only disambiguator. |
Compare the field