MCP tools reference
Buildertrend MCP tools
12 tools for Buildertrend on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your own Buildertrend company user account (the role decides which jobs and actions you see)
- Integration page
- Buildertrend
| Endpoint | Access | Description |
|---|---|---|
| buildertrend_list_jobs | read | Jobs in your company with status, address, project manager and dates. |
| buildertrend_get_schedule | read | Schedule items with start and end dates, assignees, predecessors and status. |
| buildertrend_list_daily_logs | read | Daily logs, newest first, with notes, author and who they are shared with. |
| buildertrend_list_change_orders | read | Change orders with title, amount, line items and approval status. |
| buildertrend_list_selections | read | Selections with options, allowance and approval status. |
| buildertrend_list_tasks | read | Tasks with assignees, deadline, checklist and status. |
| buildertrend_create_daily_log | write | New daily log with notes for a job. Internal unless you share it. |
| buildertrend_create_task | write | New task on a job with assignees, deadline and checklist. |
| buildertrend_update_schedule_item | write | Move or resize a schedule item and optionally notify its assignees. |
| buildertrend_create_change_order | write | New change order with line items, saved unreleased. The client sees nothing yet. |
| buildertrend_release_change_order | write | Send a change order to the client to approve or decline in their portal. |
| buildertrend_approve_selection_choice | write | Approve a choice on the client's behalf, with a comment. |
List jobs
readMCP tool buildertrend_list_jobs
Returns the jobs your account can see, with status, address and project manager. Use job_id from each item in the other tools. Status filters open, closed or presale jobs; the default is open. Search matches job name, address or client name.
Parameters
| Name | Type | Description |
|---|---|---|
| status | enum | open, closed, presale or all. Default: open. |
| search | string | Match job name, address or client name. |
| limit | integer | 1 to 100. Default: 50. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_list_jobs",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"jobs": [
{
"job_id": "4815162",
"name": "Maple Street Addition",
"status": "open",
"address": "214 Maple St, Austin, TX",
"project_manager": "Dana Ortiz",
"start_date": "2026-08-17"
},
{
"job_id": "4815390",
"name": "Hargrove Kitchen Remodel",
"status": "open",
"address": "88 Hargrove Ln, Austin, TX",
"project_manager": "Dana Ortiz",
"start_date": "2026-09-14"
}
]
},
"isError": false
} Get schedule
readMCP tool buildertrend_get_schedule
Returns schedule items in date order for one job, or for all open jobs when job_id is empty. Each item lists its assignees and predecessors, so your agent sees what follows a slipped item. The window defaults to today through 14 days ahead.
Parameters
| Name | Type | Description |
|---|---|---|
| job_id | string | One job, ID from list_jobs. Leave empty for all open jobs. |
| from | date | Items ending on or after this date. Default: today. |
| to | date | Items starting on or before this date. Default: 14 days ahead. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_get_schedule",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"items": [
{
"schedule_item_id": "90211734",
"job_id": "4815390",
"title": "Drywall hang",
"start_date": "2026-10-12",
"end_date": "2026-10-14",
"assignees": [
"Lone Star Drywall"
],
"predecessors": [
"Insulation"
],
"status": "scheduled"
}
]
},
"isError": false
} List daily logs
readMCP tool buildertrend_list_daily_logs
Returns daily logs newest first for one job, or for all open jobs. Each log shows its notes, author and visibility. Visibility is internal, subs and vendors, or client; private logs of other users are not returned.
Parameters
| Name | Type | Description |
|---|---|---|
| job_id | string | One job, ID from list_jobs. Leave empty for all open jobs. |
| since | date | Logs dated on or after this date. |
| limit | integer | 1 to 100. Default: 20. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_list_daily_logs",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"daily_logs": [
{
"daily_log_id": "23094417",
"job_id": "4815162",
"date": "2026-10-09",
"title": "Framing, second floor",
"author": "Sam Reyes",
"shared_with": [
"internal"
],
"notes": "Second floor walls framed and sheathed."
}
]
},
"isError": false
} List change orders
readMCP tool buildertrend_list_change_orders
Returns the change orders of one job with their line items, total and approval status. Filter by pending, approved or declined to see what still waits on the client.
Parameters
| Name | Type | Description |
|---|---|---|
| job_id required | string | Job ID from list_jobs. |
| approval_status | enum | pending, approved, declined or all. Default: all. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_list_change_orders",
"arguments": {
"job_id": "job_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"change_orders": [
{
"change_order_id": "771204",
"job_id": "4815162",
"title": "Added kitchen outlets",
"total": 640,
"approval_status": "pending",
"released": true,
"deadline": "2026-10-20"
}
]
},
"isError": false
} List selections
readMCP tool buildertrend_list_selections
Returns selections for one job, or for all open jobs when job_id is empty. Each selection lists its options, the allowance and its status. Status defaults to pending, the selections still waiting on the client.
Parameters
| Name | Type | Description |
|---|---|---|
| job_id | string | One job, ID from list_jobs. Leave empty for all open jobs. |
| status | enum | pending, approved, declined or all. Default: pending. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_list_selections",
"arguments": {
"status": "pending"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"selections": [
{
"selection_id": "55120",
"job_id": "4815390",
"title": "Kitchen backsplash tile",
"allowance": 1800,
"status": "pending",
"options": [
{
"choice_id": "o_1",
"title": "White subway 3x6"
},
{
"choice_id": "o_2",
"title": "Green zellige"
}
]
}
]
},
"isError": false
} List tasks
readMCP tool buildertrend_list_tasks
Returns tasks for one job or for all jobs, with assignees, deadline and checklist. Status defaults to open. Set assigned_to_me to see only your own.
Parameters
| Name | Type | Description |
|---|---|---|
| job_id | string | One job. Leave empty for all jobs. |
| status | enum | open, completed or all. Default: open. |
| assigned_to_me | boolean | Only tasks assigned to you. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_list_tasks",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"tasks": [
{
"task_id": "338810",
"job_id": "4815162",
"title": "Order window units",
"assignees": [
"Dana Ortiz"
],
"deadline": "2026-10-16T17:00:00-05:00",
"status": "open",
"checklist": [
{
"item": "Confirm sizes",
"done": true
},
{
"item": "Place order",
"done": false
}
]
}
]
},
"isError": false
} MCP tool buildertrend_create_daily_log
Creates a daily log on one job under your name. Visibility defaults to internal only; add subs or client to share it. Sharing reaches other people, which is why you confirm by default. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| job_id required | string | Job ID from list_jobs. |
| date | date | Log date. Default: today. |
| title | string | Short title for the log. |
| notes required | string | Work completed, site conditions and issues. |
| share_with | string[] | Any of internal, subs, client. Default: internal. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_create_daily_log",
"arguments": {
"job_id": "4815162",
"date": "2026-10-09",
"title": "Framing, second floor",
"notes": "Second floor walls framed and sheathed. Window rough openings checked against plans.",
"share_with": [
"internal"
]
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"daily_log_id": "23094417",
"job_id": "4815162",
"date": "2026-10-09",
"title": "Framing, second floor",
"shared_with": [
"internal"
],
"url": "https://buildertrend.net/app/DailyLogs/23094417"
},
"isError": false
} MCP tool buildertrend_create_task
Creates a task on one job. Assignees, deadline and checklist are optional. A task assigned to other people reaches them, so you confirm by default. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| job_id required | string | Job ID from list_jobs. |
| title required | string | What needs doing. |
| assignee_ids | string[] | Internal users or subs to assign. |
| deadline | datetime | ISO 8601 with time zone. |
| checklist | string[] | Checklist items, in order. |
| notes | string | Details for the assignees. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_create_task",
"arguments": {
"job_id": "job_8c41d2",
"title": "title"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"task_id": "338811",
"job_id": "4815162",
"title": "Order window units",
"assignees": [
"Dana Ortiz"
],
"deadline": "2026-10-16T17:00:00-05:00",
"status": "open"
},
"isError": false
} MCP tool buildertrend_update_schedule_item
Changes the start date or duration of one schedule item. With notify_assignees on, Buildertrend notifies the assigned users and subs, and only does so when the schedule is Online. Items that depend on it follow the schedule rules of the job. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| schedule_item_id required | string | Schedule item ID from get_schedule. |
| start_date | date | New start date. |
| duration_days | integer | New duration in working days. |
| notify_assignees | boolean | Notify the assigned users and subs. Default: true. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_update_schedule_item",
"arguments": {
"schedule_item_id": "90211734",
"start_date": "2026-10-14",
"notify_assignees": true
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"schedule_item_id": "90211734",
"start_date": "2026-10-14",
"end_date": "2026-10-16",
"notified": [
"Lone Star Drywall"
]
},
"isError": false
} MCP tool buildertrend_create_change_order
Creates a change order on one job and leaves it unreleased, so the client sees nothing until release_change_order. The total is the sum of the line items: quantity times unit cost, plus markup percent. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| job_id required | string | Job ID from list_jobs. |
| title required | string | Change order title. |
| description | string | Scope of the change, shown to the client. |
| line_items required | object | List of { description, cost_code, quantity, unit_cost, markup_percent }. |
| deadline | date | Date by which the client should respond. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_create_change_order",
"arguments": {
"job_id": "4815162",
"title": "Added kitchen outlets",
"description": "Eight added outlets along the kitchen island and back wall.",
"line_items": [
{
"description": "Add 8 outlets, kitchen",
"cost_code": "16-100",
"quantity": 8,
"unit_cost": 80,
"markup_percent": 0
}
],
"deadline": "2026-10-20"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"change_order_id": "771204",
"job_id": "4815162",
"title": "Added kitchen outlets",
"total": 640,
"released": false,
"deadline": "2026-10-20"
},
"isError": false
} MCP tool buildertrend_release_change_order
Releases one change order, so the client can approve or decline it in the Buildertrend portal. It reaches the client and involves money. Use list_change_orders to see the decision. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| change_order_id required | string | Change order ID from create_change_order or list_change_orders. |
| message | string | Note to the client with the release. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_release_change_order",
"arguments": {
"change_order_id": "change_order_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"change_order_id": "771204",
"released": true,
"approval_status": "pending"
},
"isError": false
} MCP tool buildertrend_approve_selection_choice
Approves one option of a selection for the client, the way Buildertrend lets a builder approve when a client cannot. A comment records why. It affects orders and costs, so you confirm by default. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| selection_id required | string | Selection ID from list_selections. |
| choice_id required | string | Choice to approve. |
| comments | string | Why you approve for the client, e.g. verbal OK on site. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buildertrend_approve_selection_choice",
"arguments": {
"selection_id": "selection_8c41d2",
"choice_id": "choice_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"selection_id": "55120",
"choice_id": "o_1",
"status": "approved",
"approved_on_behalf": true
},
"isError": false
}