mondayMonday.com API integration with managed OAuth. Manage boards, items, columns, groups, and workspaces using GraphQL. Use this skill when users want to create, update, or query Monday.com boards and items, manage tasks, or automate workflows. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Requires network access and valid Maton API key.
Install via ClawdBot CLI:
clawdbot install byungkyu/mondayAccess the Monday.com API with managed OAuth authentication. Manage boards, items, columns, groups, users, and workspaces using GraphQL.
# Get current user
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'query': '{ me { id name email } }'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/monday/v2', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
https://gateway.maton.ai/monday/v2
All requests use POST to the GraphQL endpoint. The gateway proxies requests to api.monday.com and automatically injects your OAuth token.
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEY
Environment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
Manage your Monday.com OAuth connections at https://ctrl.maton.ai.
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=monday&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'monday'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Response:
{
"connection": {
"connection_id": "ca93f2c5-5126-4360-b293-4f05f7bb6c8c",
"status": "ACTIVE",
"creation_time": "2026-02-05T20:10:47.585047Z",
"last_updated_time": "2026-02-05T20:11:12.357011Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "monday",
"metadata": {}
}
}
Open the returned url in a browser to complete OAuth authorization.
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If you have multiple Monday.com connections, specify which one to use with the Maton-Connection header:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'query': '{ me { id name } }'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/monday/v2', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Maton-Connection', 'ca93f2c5-5126-4360-b293-4f05f7bb6c8c')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If omitted, the gateway uses the default (oldest) active connection.
Monday.com uses a GraphQL API. All operations are sent as POST requests with a JSON body containing the query field.
POST /monday/v2
Content-Type: application/json
{"query": "{ me { id name email } }"}
Response:
{
"data": {
"me": {
"id": "72989582",
"name": "Chris",
"email": "chris.kim.2332@gmail.com"
}
}
}
POST /monday/v2
Content-Type: application/json
{"query": "{ users(limit: 20) { id name email } }"}
POST /monday/v2
Content-Type: application/json
{"query": "{ workspaces(limit: 10) { id name kind } }"}
Response:
{
"data": {
"workspaces": [
{ "id": "10136488", "name": "Main workspace", "kind": "open" }
]
}
}
POST /monday/v2
Content-Type: application/json
{"query": "{ boards(limit: 10) { id name state board_kind workspace { id name } } }"}
Response:
{
"data": {
"boards": [
{
"id": "8614733398",
"name": "Welcome to your developer account",
"state": "active",
"board_kind": "public",
"workspace": { "id": "10136488", "name": "Main workspace" }
}
]
}
}
POST /monday/v2
Content-Type: application/json
{"query": "{ boards(ids: [BOARD_ID]) { id name columns { id title type } groups { id title } items_page(limit: 20) { cursor items { id name state } } } }"}
POST /monday/v2
Content-Type: application/json
{"query": "mutation { create_board(board_name: \"New Board\", board_kind: public) { id name } }"}
Response:
{
"data": {
"create_board": {
"id": "18398921201",
"name": "New Board"
}
}
}
POST /monday/v2
Content-Type: application/json
{"query": "mutation { update_board(board_id: BOARD_ID, board_attribute: description, new_value: \"Board description\") }"}
POST /monday/v2
Content-Type: application/json
{"query": "mutation { delete_board(board_id: BOARD_ID) { id } }"}
POST /monday/v2
Content-Type: application/json
{"query": "{ items(ids: [ITEM_ID]) { id name created_at updated_at state board { id name } group { id title } column_values { id text value } } }"}
Response:
{
"data": {
"items": [
{
"id": "11200791874",
"name": "Test item",
"created_at": "2026-02-05T20:12:42Z",
"updated_at": "2026-02-05T20:12:42Z",
"state": "active",
"board": { "id": "8614733398", "name": "Welcome to your developer account" },
"group": { "id": "topics", "title": "Group Title" }
}
]
}
}
POST /monday/v2
Content-Type: application/json
{"query": "mutation { create_item(board_id: BOARD_ID, group_id: \"GROUP_ID\", item_name: \"New item\") { id name } }"}
POST /monday/v2
Content-Type: application/json
{"query": "mutation { create_item(board_id: BOARD_ID, group_id: \"GROUP_ID\", item_name: \"New task\", column_values: \"{\\\"status\\\": {\\\"label\\\": \\\"Working on it\\\"}}\") { id name column_values { id text } } }"}
POST /monday/v2
Content-Type: application/json
{"query": "mutation { change_simple_column_value(board_id: BOARD_ID, item_id: ITEM_ID, column_id: \"name\", value: \"Updated name\") { id name } }"}
POST /monday/v2
Content-Type: application/json
{"query": "mutation { change_column_value(board_id: BOARD_ID, item_id: ITEM_ID, column_id: \"status\", value: \"{\\\"label\\\": \\\"Done\\\"}\") { id name } }"}
POST /monday/v2
Content-Type: application/json
{"query": "mutation { delete_item(item_id: ITEM_ID) { id } }"}
POST /monday/v2
Content-Type: application/json
{"query": "mutation { create_column(board_id: BOARD_ID, title: \"Status\", column_type: status) { id title type } }"}
Response:
{
"data": {
"create_column": {
"id": "color_mm09e48w",
"title": "Status",
"type": "status"
}
}
}
Common column types: status, text, numbers, date, people, dropdown, checkbox, email, phone, link, timeline, tags, rating
POST /monday/v2
Content-Type: application/json
{"query": "mutation { create_group(board_id: BOARD_ID, group_name: \"New Group\") { id title } }"}
Response:
{
"data": {
"create_group": {
"id": "group_mm0939df",
"title": "New Group"
}
}
}
Monday.com uses cursor-based pagination for items with items_page and next_items_page.
# First page
POST /monday/v2
{"query": "{ boards(ids: [BOARD_ID]) { items_page(limit: 50) { cursor items { id name } } } }"}
# Next page using cursor
POST /monday/v2
{"query": "{ next_items_page(cursor: \"CURSOR_VALUE\", limit: 50) { cursor items { id name } } }"}
Response includes cursor when more items exist (null when no more pages):
{
"data": {
"boards": [{
"items_page": {
"cursor": "MSw5NzI4...",
"items": [...]
}
}]
}
}
const response = await fetch('https://gateway.maton.ai/monday/v2', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.MATON_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: `{ boards(limit: 10) { id name items_page(limit: 20) { items { id name } } } }`
})
});
const data = await response.json();
import os
import requests
response = requests.post(
'https://gateway.maton.ai/monday/v2',
headers={
'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}',
'Content-Type': 'application/json'
},
json={
'query': '{ boards(limit: 10) { id name items_page(limit: 20) { items { id name } } } }'
}
)
data = response.json()
color_mm09e48w)group_mm0939df, topics)account query may require additional OAuth scopes. If you receive a scope error, contact Maton support at support@maton.ai with the specific operations/APIs you need and your use-casepublic, private, shareactive, archived, deleted, all| Status | Meaning |
|--------|---------|
| 400 | Missing Monday.com connection or GraphQL validation error |
| 401 | Invalid or missing Maton API key |
| 403 | Insufficient OAuth scope for the operation |
| 429 | Rate limited |
| 4xx/5xx | Passthrough error from Monday.com API |
GraphQL errors are returned in the errors array:
{
"data": {},
"errors": [
{
"message": "Unauthorized field or type",
"path": ["account"],
"extensions": { "code": "UNAUTHORIZED_FIELD_OR_TYPE" }
}
]
}
MATON_API_KEY environment variable is set:echo $MATON_API_KEY
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
monday. For example:https://gateway.maton.ai/monday/v2https://gateway.maton.ai/v2Generated Mar 1, 2026
Marketing teams use this skill to create and manage boards for tracking campaign tasks, deadlines, and deliverables. It automates updates on item statuses and integrates with Monday.com to streamline collaboration across team members, ensuring real-time visibility into campaign progress.
Development teams leverage the skill to automate the creation and updating of items in Monday.com boards for bug tracking, feature requests, and sprint planning. It enables seamless synchronization of tasks with other tools via GraphQL queries, reducing manual entry and improving workflow efficiency.
Service-based businesses use the skill to manage client onboarding boards, tracking stages from initial contact to project completion. It facilitates automated updates on client items and integrates with Monday.com to monitor support tickets, enhancing customer service and operational transparency.
Retail and logistics companies employ the skill to monitor inventory levels and supply chain activities through Monday.com boards. It automates data queries for items like stock counts and shipment statuses, providing real-time insights to optimize inventory management and reduce delays.
Event organizers use the skill to create boards for planning events, managing tasks such as vendor coordination, attendee lists, and schedule updates. It integrates with Monday.com to automate item tracking and team communication, ensuring smooth execution and timely adjustments.
Companies offer this skill as part of a broader SaaS platform that integrates Monday.com with other business tools, charging subscription fees based on usage tiers. It generates revenue through monthly or annual licenses, targeting businesses seeking to automate workflows across multiple applications.
Agencies provide consulting services to help clients set up and customize the Monday.com skill for specific use cases, such as project management or CRM. Revenue comes from one-time setup fees and ongoing support contracts, leveraging expertise in API integration and workflow optimization.
Developers offer a free version of the skill with basic Monday.com integration, while premium features like advanced automation or multi-connection support are paid. Revenue is generated through upsells and enterprise plans, appealing to small businesses scaling their operations.
💬 Integration Tip
Ensure the MATON_API_KEY environment variable is set and test connection management via the control panel before deploying to production workflows.
Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.
Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to...
Build, debug, and deploy websites using HTML, CSS, JavaScript, and modern frameworks following production best practices.
YouTube Data API integration with managed OAuth. Search videos, manage playlists, access channel data, and interact with comments. Use this skill when users want to interact with YouTube. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).
Scaffold, test, document, and debug REST and GraphQL APIs. Use when the user needs to create API endpoints, write integration tests, generate OpenAPI specs, test with curl, mock APIs, or troubleshoot HTTP issues.
Search for jobs across LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs using the JobSpy MCP server.