Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Trello MCP server

Vendor MCP
Open markdown

The Trello MCP connector routes your AI agent's tool calls to Trello's own MCP server through Scalekit. Each user signs in to Trello once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 15 tools.

Tools
15
What they doRead · write · destructive
9 · 6 · 09 read6 write0 destructive
Users sign in with
OAuth app
Scalekit's or your own

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Trello MCP connection

    In AgentKit > Connections, create a Trello MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Trello, so you don't need to register an OAuth app.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'trellomcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Trello MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'trellomcp_trello_read_board',
    toolInput: { action: 'list' },
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • trellomcp_trello_read_boardRead Trello boards.Read-only

    Trello Read Board

    Read Trello boards. Supports listing boards the authenticated user is a member of, listing all boards a user can access within a specific workspace (regardless of membership), fetching a single board by ARI or URL, and listing labels on a board. Actions: - "list" — paginated boards the authenticated user is a member of, across all workspaces. Use this for "my boards", "boards I'm on". It does NOT include boards the user could access but has not joined — for those, use "list_by_workspace". By default only open (non-archived) boards are returned; pass filter="all" to include archived boards or filter="closed" for only archived ones. Always include each board's url verbatim in the response. Optionally also filtered by visibility (limit defaults to 25, max 100). The open/closed filter is applied server-side (exact), whereas the visibility filter is applied per page — keep paginating via pageInfo.endCursor while pageInfo.hasNextPage is true to find all matches. - "list_by_workspace" — paginated boards the user can access within ONE workspace (requires workspaceId), regardless of whether they are a member. Use this when the user names a workspace: "boards in <workspace>", "what's in this workspace". Supports the same open/closed filter, visibility filter, and pagination as "list". Always include each board's url verbatim in the response. - "get" — return a single board by ARI or board URL (e.g. https://trello.com/b/<shortLink>/<slug>), including id, objectId, name, closed, shortLink, lastActivityAt, and url. Always include the board url verbatim as the full literal URL — never replace it with a label such as "View on Trello" or hide it behind link text; never omit it. Embeds the first 25 open lists with a listsHasMore flag; for the full set call trelloReadList with action="list_by_board". - "list_labels" — paginated labels on a board (requires boardId; limit defaults to 25, max 100); paginate via nextCursor while hasMore is true.

    Inputs

    actionstringrequired
    Action to perform. "list" — paginated boards the authenticated user is a member of, across all workspaces. Use this for "my boards", "boards I'm on". It does NOT include boards the user could access but has not joined — for those, use "list_by_workspace". By default only open (non-archived) boards are returned; pass filter="all" to include archived boards or filter="closed" for only archived ones. Always include each board's url verbatim in the response. Optionally also filtered by visibility (limit defaults to 25, max 100). The open/closed filter is applied server-side (exact), whereas the visibility filter is applied per page — keep paginating via pageInfo.endCursor while pageInfo.hasNextPage is true to find all matches. "list_by_workspace" — paginated boards the user can access within ONE workspace (requires workspaceId), regardless of whether they are a member. Use this when the user names a workspace: "boards in <workspace>", "what's in this workspace". Supports the same open/closed filter, visibility filter, and pagination as "list". Always include each board's url verbatim in the response. "get" — return a single board by ARI or board URL (e.g. https://trello.com/b/<shortLink>/<slug>), including id, objectId, name, closed, shortLink, lastActivityAt, and url. Always include the board url verbatim as the full literal URL — never replace it with a label such as "View on Trello" or hide it behind link text; never omit it. Embeds the first 25 open lists with a listsHasMore flag; for the full set call trelloReadList with action="list_by_board". "list_labels" — paginated labels on a board (requires boardId; limit defaults to 25, max 100); paginate via nextCursor while hasMore is true. "list_custom_fields" — paginated custom field definitions on a board (requires boardId; limit defaults to 25, max 100). Each field includes its name, type ('checkbox' | 'date' | 'list' | 'number' | 'text'), position, and options (present only for 'list' dropdown fields); paginate via nextCursor while hasMore is true. "list_activity" — paginated action/history events on a board: comments, card moves, member changes, attachments, checklists, due date updates, check item state changes, and custom field updates (requires boardId, which may be an ARI or a board URL; limit defaults to 50, max 100). Optionally filter by type. Paginate via nextCursor while hasMore is true. Every entry is an action on the card in its "card" field; name that entity type when you report one.one of listlist_by_workspacegetlist_labelslist_custom_fieldslist_activity
    boardIdstring
    Trello board identifier. Required for "get", "list_labels", "list_custom_fields", and "list_activity"; not allowed for other actions. For action="get" and action="list_activity", accepts an ARI (e.g. ari:cloud:trello::board/workspace/<workspaceId>/<boardId>) or a Trello board URL (e.g. https://trello.com/b/<shortLink>/<slug>). For all other actions, boardId must be a board ARI — board URLs/short links are not supported.
    cursorstring
    Pagination cursor. Only valid for paginated actions ("list", "list_by_workspace", "list_labels", "list_custom_fields", "list_activity").
    filterstring
    Filter boards by open/closed state. "open" (default) returns only active (non-archived) boards; "closed" returns only archived boards; "all" returns both. When the user asks broadly — "all my boards", "boards I can access", "list my boards" — use the default "open". Switch to "all" only when the user explicitly asks to include closed/archived boards (e.g. "including closed boards"), and "closed" when they want only archived ones. Only valid when action="list" or action="list_by_workspace".one of openclosedall
    limitinteger
    Maximum results per page, max 100. Defaults to 25 for "list", "list_by_workspace", "list_labels", and "list_custom_fields"; defaults to 50 for "list_activity". Only valid for paginated actions.
    typearray
    Filter board history by action type(s). Only valid when action="list_activity"; defaults to all action types when omitted.
    visibilitystring
    Filter boards by visibility ("private" | "workspace" | "public"). Only valid when action="list" or action="list_by_workspace".one of privateworkspacepublic
    workspaceIdstring
    Trello workspace identifier. Required for action="list_by_workspace"; not allowed for other actions. Accepts an ARI (e.g. ari:cloud:trello::workspace/<workspaceId>).
  • trellomcp_trello_read_cardFetch a Trello card's full details, or list cards across a board or list to surface open work items.Read-only

    Trello Read Card

    Fetch a Trello card's full details, or list cards across a board or list to surface open work items. Use this tool when you know the specific board, list, or card you want to inspect. For keyword-based discovery across all boards/cards, use trelloSearch instead. Actions: - "get": fetch a single card by id or card URL (cardIdOrUrl required). Returns core card fields and labels (up to 25; truncation signalled via labelsHasMore). - "list_by_board": fetch all cards for a board grouped by list (boardIdOrUrl required). Response: { lists: [{ id, name, cards: [...] }], hasNextPage, nextCursor }. Each page contains up to 25 lists (configurable via limit); each list contains all its cards. Filter by card state: "open" (default), "archived", or "all". Use cursor/limit to paginate over lists (max 50 lists per page). - "list_by_list": fetch cards in a Trello list (listId required) with cursor-based pagination. Use this when the user asks for cards in a list or all cards from a specific list. Response: { cards: [...], pageInfo: { hasNextPage, endCursor } }. Filter by card state: "open" (default), "archived", or "all". Use cursor/limit to paginate (max 50 cards per page). Due date timezone handling: Card due dates (due.date) are stored as UTC ISO 8601 timestamps. For "today" or date-based due-date requests, first call trelloReadMember (get_me) for prefs.timezone and interpret due dates in the user's local time.

    Inputs

    actionstringrequired
    Action to perform: "get" fetches a single card, "list_by_board" fetches cards grouped by list for a board, "list_by_list" fetches cards in a specific list, "get_comment" fetches a single comment on a card, "list_comments" lists comments on a card, "list_attachments" lists files/links attached to a card, "list_custom_field_items" lists the card's custom field values, "list_activity" lists the card's full activity history.one of getlist_by_boardlist_by_listget_commentlist_commentslist_attachmentslist_custom_field_itemslist_activity
    boardIdOrUrlstring
    Trello board identifier. Required for "list_by_board". Accepts an ARI (e.g. ari:cloud:trello::board/workspace/<workspaceId>/<boardId>). A Trello board URL is also accepted (e.g. https://trello.com/b/<shortLink>/<slug>).
    cardIdOrUrlstring
    Trello card identifier. Required for "get", "get_comment", "list_comments", "list_attachments", "list_custom_field_items", and "list_activity". For "get_comment", cardIdOrUrl must be a Trello card ARI. Accepts an ARI (e.g. ari:cloud:trello::card/workspace/<workspaceId>/<cardId>) or a Trello card URL (e.g. https://trello.com/c/<shortLink>/<slug>).
    commentIdstring
    Trello comment/action identifier. Required for "get_comment". Accepts an ARI (e.g. ari:cloud:trello::action/<actionId>).
    cursorstring
    Pagination cursor for the list actions, "list_comments", "list_attachments", "list_custom_field_items", and "list_activity". Not allowed for "get" or "get_comment".
    filterstring
    Card state filter for "list_by_board" and "list_by_list". One of: "open" (default), "archived", "all". Not allowed for "get", "get_comment", "list_comments", "list_attachments", "list_custom_field_items", or "list_activity".
    limitinteger
    Pagination limit (1-50) for the list actions, "list_comments", "list_attachments", "list_custom_field_items", and "list_activity" (default 25). Not allowed for "get" or "get_comment".
    listIdstring
    Trello list identifier. Required for "list_by_list". Accepts an ARI (e.g. ari:cloud:trello::list/workspace/<workspaceId>/<listId>).
  • trellomcp_trello_read_checklistRead Trello checklists (and their check items) attached to a card.Read-only

    Trello Read Checklist

    Read Trello checklists (and their check items) attached to a card. Supported actions: "list_by_card" — list checklists on a card (cardId required); cursor/limit page the checklists. "get" — fetch a single checklist by id (checklistId required). In both actions each checklist is returned with its complete `items` list embedded.

    Inputs

    actionstringrequired
    The read action to perform: "list_by_card" or "get".one of list_by_cardget
    cardIdstring
    Trello card ARI (e.g. "ari:cloud:trello::card/workspace/<workspaceId>/<cardId>"). Required for "list_by_card".
    checklistIdstring
    Trello checklist ARI (e.g. "ari:cloud:trello::checklist/workspace/<workspaceId>/<checklistId>"). Required for "get".
    cursorstring
    Pagination cursor for "list_by_card" (pages checklists). Not allowed for "get".
    limitinteger
    Pagination limit (1-100, default 25) for "list_by_card" (caps checklists). Not allowed for "get".
  • trellomcp_trello_read_inboxTriage and review the authenticated user's Trello Inbox — the personal quick-capture board where new cards and notifications land.Read-only

    Trello Read Inbox

    Triage and review the authenticated user's Trello Inbox — the personal quick-capture board where new cards and notifications land. Use this specifically for the user's Inbox board. For cards on other boards or lists, use trelloReadCard instead. Actions: - "get" — return the Inbox board details (id, objectId, lastActivityAt). No additional arguments are needed. - "list_cards" — list cards in the Inbox with optional filtering and pagination. Each card includes labels and up to 25 checklists (truncation signalled via checklistsHasMore). Filter by card state: "open" (default), "archived", or "all". Use cursor/limit to paginate (limit defaults to 25, max 50).

    Inputs

    actionstringrequired
    Action to perform. "get" returns the Inbox board details. "list_cards" returns paginated cards in the Inbox (filter/cursor/limit are optional).one of getlist_cards
    cursorstring
    Pagination cursor. Only valid when action="list_cards".
    filterstring
    Card state filter for "list_cards". One of: "open" (default), "archived", "all". Not allowed for "get".
    limitinteger
    Maximum number of cards to return per page. Defaults to 25, max 50. Only valid when action="list_cards".
  • trellomcp_trello_read_listRead Trello lists.Read-only

    Trello Read List

    Read Trello lists. Supported actions: "list_by_board" — list the open lists on a board (id, name, position, objectId) with cursor-based pagination (limit defaults to 25, max 50); "get" — return a single list by id, including up to 25 nested cards (id, name).

    Inputs

    actionstringrequired
    Action to perform. "list_by_board" requires boardId (cursor/limit are optional). "get" requires listId and does not allow pagination. "list_activity" requires listId and returns open cards with their 25 most recent activity entries each (cursor/limit are optional).one of list_by_boardgetlist_activity
    boardIdstring
    Trello board identifier. Required when action="list_by_board". Accepts an ARI (e.g. ari:cloud:trello::board/workspace/<workspaceId>/<boardId>).
    cursorstring
    Pagination cursor for "list_by_board" or "list_activity".
    limitinteger
    Maximum items to return per page. Defaults to 25, max 50. Counts lists when action="list_by_board" and cards when action="list_activity". Not valid when action="get".
    listIdstring
    Trello list identifier. Required when action="get" or action="list_activity". Accepts an ARI (e.g. ari:cloud:trello::list/workspace/<workspaceId>/<listId>).
  • trellomcp_trello_read_memberGet a Trello member's profile.Read-only

    Trello Read Member

    Get a Trello member's profile. Call action="get_me" FIRST before any due-date query (e.g. "cards due today", "overdue cards") to get prefs.timezone (e.g. "America/Los_Angeles") so due dates can be interpreted in the user's local time rather than UTC. Also use action="get_me" to look up the current user's username, fullName, email, or avatarUrl. Supported actions: "get_me" — returns the authenticated user's Trello member profile (id, username, fullName, email, avatarUrl, url, prefs) via the Trello GraphQL API.

    Inputs

    actionstringrequired
    The read action to perform. "get_me" returns the authenticated user's profile. "get" returns a specific member's profile by memberId. "list_by_board" returns a board's members and their board role by boardId. "list_by_workspace" returns a workspace's members and their workspace role by workspaceId. "list_by_card" lists members assigned to cardId.one of get_megetlist_by_boardlist_by_workspacelist_by_card
    boardIdstring
    Trello board identifier. Required for "list_by_board"; not allowed for other actions. Accepts an ARI (e.g. ari:cloud:trello::board/workspace/<workspaceId>/<boardId>).
    cardIdstring
    Trello card identifier. Required for "list_by_card"; not allowed for other actions. Accepts an ARI (e.g. ari:cloud:trello::card/workspace/<workspaceId>/<cardId>).
    cursorstring
    Pagination cursor. Only valid for member list actions.
    limitinteger
    Maximum number of members to return per page. Defaults to 25, max 100. Only valid for member list actions.
    memberIdstring
    Trello member identifier. Required for "get"; not allowed for any other action. Accepts an ARI (e.g. ari:cloud:trello::user/<memberId>).
    rolestring
    Only return members with this board role. Only valid when action="list_by_board" — workspace membership cannot be filtered by role.one of adminmemberobserver
    workspaceIdstring
    Trello workspace identifier. Required for "list_by_workspace"; not allowed for other actions. Accepts an ARI (e.g. ari:cloud:trello::workspace/<workspaceId>).
  • trellomcp_trello_read_plannerRead Trello Planner information for the authenticated user.Read-only

    Trello Read Planner

    Read Trello Planner information for the authenticated user. Supported actions: "get" — returns the current member's planner (id, primaryAccountId, primaryCalendarId, primaryCalendar details); "list_events" — lists calendar events for a given planner calendar in a time window (plannerCalendarId, providerAccountId, start, end required; limit defaults to 25, max 50; cursor-based pagination supported); "get_event" — returns a single calendar event by provider event id (eventId, providerAccountId, plannerCalendarId required). Timezone handling: start and end must be UTC ISO 8601. For relative time queries like "today" or "this week", first use the "get" action to retrieve primaryCalendar.timezone, then convert to UTC before calling "list_events".

    Inputs

    actionstringrequired
    Action to perform. "get" takes no additional args and returns the current member's planner. "list_events" requires plannerCalendarId, providerAccountId, start, end (cursor and limit optional). "get_event" requires eventId, providerAccountId, plannerCalendarId.one of getlist_eventsget_event
    cursorstring
    Pagination cursor. Only valid for "list_events".
    endstring
    Event window end as a UTC ISO 8601 date-time string. Must be after start. For relative queries like "today", first use the "get" action to retrieve primaryCalendar.timezone and convert to UTC. Required for "list_events".
    eventIdstring
    Provider event ID. Required for "get_event".
    limitinteger
    Maximum number of events to return. Defaults to 25, max 50. Only valid for "list_events".
    plannerCalendarIdstring
    Trello planner calendar identifier. Required for "list_events" and "get_event". Accepts an ARI (e.g. ari:cloud:trello::planner-calendar/<calendarId>).
    providerAccountIdstring
    Provider account ARI (e.g. Google account ARI like "ari:third-party:google::account/<id>"). Required for "list_events" and "get_event".
    startstring
    Event window start as a UTC ISO 8601 date-time string. For relative queries like "today", first use the "get" action to retrieve primaryCalendar.timezone and convert to UTC. Required for "list_events".
  • trellomcp_trello_read_workspaceRead Trello workspaces (organizations) the current user has access to.Read-only

    Trello Read Workspace

    Read Trello workspaces (organizations) the current user has access to. Supported actions: "list" — list workspaces visible to the authenticated user (cursor-based pagination, limit defaults to 25, max 100); "get" — fetch detailed data for a single workspace by id (typically used after "list" to drill into a workspace).

    Inputs

    actionstringrequired
    The read action to perform. "list" returns paginated workspaces; "get" returns a single workspace by id.one of listget
    cursorstring
    Pagination cursor for the next page. Only valid for "list" action.
    limitinteger
    Maximum number of workspaces to return (default 25, max 100). Only valid for "list" action.
    workspaceIdstring
    Trello workspace identifier. Required for "get" action. Accepts an ARI (e.g. ari:cloud:trello::workspace/<workspaceId>).