Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Monday MCP server

Vendor MCP
Open markdown

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

Tools
94
What they doRead · write · destructive
44 · 38 · 1244 read38 write12 destructive
Users sign in with
OAuth app
Scalekit's or your own

What you can do

  • Manage boards and items: create boards, groups, columns, and items, and update item column values in bulk
  • Search and read workspaces: search boards, docs, and folders and read board structure, items, and activity
  • Post updates and notify: comment on items, read updates, and send notifications to users
  • Create docs and forms: write and edit monday docs, build forms, and submit form responses
  • Automate workflows: create, list, activate, or delete board automations and plan, build, and publish workflows
  • Analyze board data: calculate insights across board data and build dashboards and widgets

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 Monday MCP connection

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

    Scalekit credentials are available for Monday.com, so you don't need to register an OAuth app. To show your own app on the consent screen, use your own credentials instead.

    Use your own OAuth app

    Monday MCP uses Dynamic Client Registration (DCR) with PKCE — no client ID or secret is needed. Scalekit registers the OAuth client automatically the first time a user authorizes the connection, so creating the connection in Scalekit is the only setup step.

    1. Create the Monday MCP connection in Scalekit

      In the Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Monday MCP and click Create.

    2. Have your user authorize the connection

      Send the user through the connection’s authorization link (the magic link Scalekit generates, or the link returned by the SDK). The user signs in to monday.com and grants access.

      On first authorization, Scalekit completes Dynamic Client Registration and PKCE behind the scenes, then stores and refreshes tokens for every user who connects — no further configuration is needed.

  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 = 'mondaymcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Monday 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: 'mondaymcp_allwidgetsschema',
    toolInput: {},
    })
    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
  • mondaymcp_agentcatalogBrowse the account-wide catalog of available trigger types and skills for monday platform agents.Read-only

    AgentCatalog

    Browse the account-wide catalog of available trigger types and skills for monday platform agents. READ-ONLY — no agent_id required. Use this tool to discover what's available BEFORE wiring anything to a specific agent. ACTIONS: - list_triggers: { block_reference_ids? } — returns available trigger types. Each entry has block_reference_id (required for manage_agent_triggers action:"add"), name, description, field_schemas (describes field_values shape), and required_fields (fields to collect from the user). Note: only triggers that can be added programmatically appear here. OAuth/3rd-party triggers (Slack, Gmail, Salesforce, etc.) require user setup in the monday.com UI and will not appear here. - list_skills: {} — returns available skills with id, name, description. Never guess or invent a skill id — always look it up here before calling manage_agent_skills action:"add". USAGE EXAMPLES: - List all trigger types: { "action": "list_triggers" } - Fetch specific trigger: { "action": "list_triggers", "block_reference_ids": ["some-block-ref-id"] } - List all skills: { "action": "list_skills" } RELATED TOOLS: - manage_agent_triggers — use block_reference_id from list_triggers to attach a trigger to a specific agent - manage_agent_skills — use skill id from list_skills, or action:"create" to author a new skill, then attach to an agent - manage_agent — manage the agent entity itself (create, update, delete, activate, etc.)

    Inputs

    actionstringrequired
    "list_triggers" — fetch available trigger types with block_reference_id, field_schemas, and required_fields. Call before using manage_agent_triggers action:"add". "list_skills" — fetch available skills with id, name, description. Call before using manage_agent_skills action:"add".one of list_triggerslist_skills
    block_reference_idsarray
    Used with action:"list_triggers". Fetch specific trigger types by block_reference_id. Omit to return all trigger types.
  • mondaymcp_allapireadExecute read-only GraphQL queries against the monday.com API.Read-only

    Run read-only Query on the monday.com API

    Execute read-only GraphQL queries against the monday.com API. Only queries are accepted — mutations are rejected with an error before the request is sent. Use get_graphql_schema and get_type_details tools first to understand the schema before crafting your query.

    Inputs

    querystringrequired
    Custom GraphQL query/mutation. you need to provide the full query / mutation
    variablesstringrequired
    JSON string containing the variables for the GraphQL operation
  • mondaymcp_allwidgetsschemaFetch complete JSON Schema 7 definitions for all available widget types in monday.com.Read-only

    AllWidgetsSchema

    Fetch complete JSON Schema 7 definitions for all available widget types in monday.com. This tool is essential before creating widgets as it provides: - Complete schema definitions for all supported widgets - Required and optional fields for each widget type - Data type specifications and validation rules - Detailed descriptions of widget capabilities Use this tool when you need to: - Understand widget configuration requirements before creating widgets - Validate widget settings against official schemas - Plan widget implementations with proper data structures The response includes JSON Schema 7 definitions that describe exactly what settings each widget type accepts.

    Inputs

    This tool takes no inputs.

  • mondaymcp_boardinsightsThis tool allows you to calculate insights about board's data by filtering, grouping and aggregating columns.Read-only

    BoardInsights

    This tool allows you to calculate insights about board's data by filtering, grouping and aggregating columns. For example, you can get the total number of items in a board, the number of items in each status, the number of items in each column, etc. Use this tool when you need to get a summary of the board's data, for example, you want to know the total number of items in a board, the number of items in each status, the number of items in each column, etc.[REQUIRED PRECONDITION]: Before using this tool, if new columns were added to the board or if you are not familiar with the board's structure (column IDs, column types, status labels, etc.), first use get_board_info to understand the board metadata. This is essential for constructing proper filters and knowing which columns are available.[IMPORTANT]: For some columns, human-friendly label is returned inside 'LABEL_<column_id' field. E.g. for column with id 'status_123' the label is returned inside 'LABEL_status_123' field.

    Inputs

    boardIdnumberrequired
    The id of the board to get insights for
    aggregationsarray
    The aggregations to get. Before sending the aggregations, read guidelines.aggregation from get_column_type_info with fetchMode "guidelines" for a relevant column type on this board. Transformative functions and plain columns (no function) must be in group by.
    filtersarray
    The configuration of filters to apply on the items. Use get_board_info for column ids and types on the board. Before sending the filters, use get_column_type_info with fetchMode "guidelines" and use data.guidelines.filter (null if that type has no documented rules).
    filtersOperatorstring
    The operator to use for the filtersone of andordefault and
    groupByarray
    The columns to group by. All columns in the group by must be in the aggregations as well without a function.
    limitnumber
    The limit of the resultsdefault 1000
    orderByarray
    The columns to order by, will control the order of the items in the response
  • mondaymcp_exploremeetingsDiscover meetings by topic, or list/browse meetings by date and access.Read-only

    Explore Meetings

    Discover meetings by topic, or list/browse meetings by date and access. Returns meetings ranked by keyword relevance (matched against title and AI gist — not semantic). USE THIS FIRST for topic/theme questions ("what did we decide about pricing", "find meetings about the acme deal") AND for listing/browsing ("list my recent meetings", "meetings from last week", "my last 10 meetings"). When query is omitted, returns recent meetings filtered by date/access only — this is the tool for listing. Pass returned ids to get_meetings_content for full content, or to search_meetings_content for matching passages. Only indexed meetings are candidates.

    Inputs

    accessstring
    Filter by access level. OWN: meetings the user participated in or invited the bot to. SHARED_WITH_ME: shared with the user or their team. SHARED_WITH_ACCOUNT: shared with the entire account. ALL: all accessible meetings. Default: OWN.one of OWNSHARED_WITH_MESHARED_WITH_ACCOUNTALLdefault OWN
    limitinteger
    Maximum number of meetings to return (1-20). Keep small - the top-ranked few are usually enough.default 10
    querystring
    What to look for, matched against each meeting's title and AI gist and ranked by relevance. Omit or leave empty to browse by date/access filters only. Pass the core subject or entity, roughly 1-4 words (e.g. "pricing roadmap" or "acme renewal"), not the full question. Drop instruction words, filler, and synonyms, which dilute the ranking.default
    start_time_fromstring
    Only include meetings that started at or after this UTC ISO 8601 timestamp (e.g. 2026-07-28T00:00:00Z).
    start_time_tostring
    Only include meetings that started at or before this UTC ISO 8601 timestamp (e.g. 2026-07-28T23:59:59Z).
  • mondaymcp_getactionRetrieve a saved action by ID.Read-only

    Get Action

    Retrieve a saved action by ID. Example: id: "550e8400-e29b-41d4-a716-446655440000"

    Inputs

    idstringrequired
    Action ID
  • mondaymcp_getassetsGet assets (files) by their IDs.Read-only

    GetAssets

    Get assets (files) by their IDs. Returns file metadata including name, extension, size, public URL (valid for 1 hour), thumbnail URL, upload date, and who uploaded it.

    Inputs

    idsarrayrequired
    Array of asset IDs to fetch
  • mondaymcp_getautomationrunsRead automation/workflow run history.Read-only

    GetAutomationRuns

    Read automation/workflow run history. Read-only. Modes: - "history": paginated run feed (state, duration, error reason). Use "filters" to narrow results and "nextPageOffset" to page (offset-only — next page = previous offset + returned count). - "detail": single run by "triggerUuid" (required) — returns block steps and MCP tool calls. Set "includeToolEvents": false to skip tool calls. Scope: provide "boardId" for a specific board or "accountWide": true. One is required. Known event states: "success", "failure", "exhausted".

    Inputs

    modestringrequired
    history = paginated run feed, detail = single run by triggerUuidone of historydetail
    accountWideboolean
    Set true to query account-wide (required if no boardId)
    blockEventsOffsetinteger
    detail: block-events page offset
    boardIdstring
    Target a specific board by numeric ID
    filtersobject
    history: run filters
    includeToolEventsboolean
    detail: include MCP tool calls (default true)
    nextPageOffsetinteger
    history: page offset (offset-only pagination)
    toolEventsOffsetinteger
    detail: tool-events page offset
    triggerUuidstring
    detail: required — the run UUID to inspect

Workflows

Get items from a board

Use mondaymcp_getboarditemspage to fetch items from a monday.com board. You need the board’s numeric ID, which you can find in the board URL (https://mycompany.monday.com/boards/<BOARD_ID>).

const items = await actions.executeTool({
connector: 'mondaymcp',
identifier: 'user_123',
toolName: 'mondaymcp_getboarditemspage',
toolInput: {
boardId: 1234567890,
limit: 50,
},
});
console.log(items);

Create an item and add an update

Use mondaymcp_createitem to add a new item to a board, then mondaymcp_createupdate to post a comment or status update on it.

// Step 1 — create the item
const newItem = await actions.executeTool({
connector: 'mondaymcp',
identifier: 'user_123',
toolName: 'mondaymcp_createitem',
toolInput: {
boardId: 1234567890,
name: 'Fix login bug',
columnValues: '{}',
groupId: 'topics',
},
});
const itemId = newItem.id;
// Step 2 — post an update on the item
await actions.executeTool({
connector: 'mondaymcp',
identifier: 'user_123',
toolName: 'mondaymcp_createupdate',
toolInput: {
itemId,
body: 'Assigned to the auth team. Expected fix in next sprint.',
},
});

Update column values on an item

Use mondaymcp_changeitemcolumnvalues to set structured column data — such as status, date, or assignee — on an existing item.

await actions.executeTool({
connector: 'mondaymcp',
identifier: 'user_123',
toolName: 'mondaymcp_changeitemcolumnvalues',
toolInput: {
boardId: 1234567890,
itemId: 9876543210,
// Column values are JSON-encoded per the monday.com column type
columnValues: JSON.stringify({
status: { label: 'In Progress' },
date4: { date: '2025-08-01' },
}),
},
});

Search across monday.com

Use mondaymcp_search to find boards, items, docs, or workspaces by keyword.

const results = await actions.executeTool({
connector: 'mondaymcp',
identifier: 'user_123',
toolName: 'mondaymcp_search',
toolInput: {
searchTerm: 'Q3 roadmap',
searchType: 'BOARD',
},
});
console.log(results);