Local services & SaaS
Buildertrend
Schedules, daily logs, change orders and selections for builders.
12 endpoints
ConstructionOnline opens its API only to Business and Enterprise companies that ask for it, and has no MCP server (checked 13 Nov 2026). Cotlet runs a hosted ConstructionOnline MCP server with 31 tools that ChatGPT, Claude and your scripts use in your own account, on any plan. Bids, RFIs, invoices and anything sent outside your company wait for your OK.
31 tools Read and write
ConstructionOnline has a private REST API with read and write access. Only companies on Business or Enterprise subscriptions are eligible, and access is turned on after they write to its development team. No ConstructionOnline MCP server or official ChatGPT or Claude connector was verified.
| What you need | ConstructionOnline API | Zapier | Cotlet |
|---|---|---|---|
| Ask ChatGPT or Claude to do the work | No MCP server verified | Fixed zaps, no agent | Hosted MCP server |
| Which plans | Business or Enterprise, on request | Team and up, not in the trial | Any plan, your own login |
| Estimates, bids, RFIs and invoices | Endpoints not verified | Published triggers and actions only | 31 tools, writes after your OK |
| Who builds and fixes it | Your developers | You, in Zapier | Cotlet |
Checked 13 Nov 2026. Sources: Does ConstructionOnline have an API? · Who is eligible for the API? · Who is the API for? · ConstructionOnline API documentation · ConstructionOnline + Zapier integration · FAQ: Zapier integration · Integrations · KB: Lead Tracking · KB: Opportunities · KB: Estimating · KB: Items Database & Costbooks · KB: Redline Takeoff · KB: Bid Tracking · KB: Purchasing · KB: Change Orders · KB: Invoicing · KB: Payment Applications · KB: Scheduling · KB: Daily Logs · KB: RFIs · KB: Submittals · KB: Punch Lists · KB: Permit Tracking · KB: Insurance & Certificates
Once, in a browser we host for you.
One address in its settings.
It drafts the RFI, you approve the send.
Your agent works in your own signed-in Cloud Browser. Writes, and anything a client, sub or vendor receives, wait for your OK. Who can see your session
Sign in to ConstructionOnline in a Cloud Browser. Open app.constructiononline.com in your Cotlet Cloud Browser and sign in with your own company user.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.
Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.
ConstructionOnline runs on the shared address https://cotlet.dev/mcp/v1, one connector for every app you activate. Activated ConstructionOnline after connecting? Refresh the connector to see its 31 tools.
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: constructiononline_read One tool per section of the ConstructionOnline Knowledge Base. Read tools run at once. Write tools take an `action`; `list` and `get` only read, the other actions change ConstructionOnline and ask first.
From the first call log to an opportunity that converts into a project.
`get` also returns the contact's projects and history. Contact details can be public or private. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_contacts
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/contacts/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `update`, `import`, `convert_to_lead`. `list` and `get` only read. |
| contact string | string | Contact name, for `get`, `update` and `convert_to_lead`. |
| fields object | object | Name, company, email, phone, type; public or private details. |
| file_url string | string | For `import`: the spreadsheet of contacts. |
{
"action": "action"
} {
"contact": "Example Electric",
"type": "Subcontractor",
"email": "office@example.com",
"projects": [
"Hillcrest addition"
],
"saved": true
} Leads move through the statuses, stages, types and sources you set in Lead Tracking. Events appear on the lead calendar by sales rep. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_leads
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/leads/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `update`, `log_call`, `add_event`. `list` and `get` only read. |
| lead string | string | Lead name, for `get` and the writes on one lead. |
| fields object | object | Contact details, status, stage, type, source and sales rep. |
| note string | string | For `log_call`: what was said. For `add_event`: the event title. |
| date string | string | ISO date and time of the call or event. |
{
"action": "action"
} {
"lead": "Example Homeowner, kitchen and deck",
"stage": "Site visit",
"source": "Website",
"next_event": "2026-11-17T10:00",
"saved": true
} Converting carries the opportunity into a project. A proposal is what the client reads, so the agent shows its content first. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_opportunities
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/opportunities/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `add_estimate`, `create_proposal`, `convert_to_project`. `list` and `get` only read. |
| opportunity string | string | Opportunity name or number. |
| fields object | object | For `create`: client, address, type and expected value. |
{
"action": "action"
} {
"opportunity": "OPP-118 Hillcrest addition",
"stage": "Proposal",
"estimate": "Addition, base scope",
"converted": false
} Most tools take a project, so `list` is usually the first call. Adding company users to a project is part of `update`. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_projects
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/projects/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `update`. `list` and `get` only read. |
| project string | string | Project name or number, for `get` and `update`. |
| template string | string | For `create`: a project template. |
| fields object | object | Number, type, address, scope of work, currency, initial price, initial duration, cost code list, key roles, status, taxes. |
{
"action": "action"
} {
"project": "Hillcrest addition",
"number": "2026-014",
"status": "In progress",
"initial_price": 186000,
"saved": true
} Costbooks and Redline takeoffs into OnCost estimates, then bid packages and purchase orders. The agent does not measure plans itself.
Costbook items must be enabled for estimates before they can be inserted. Archived costbooks can be activated again. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_costbooks
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/costbooks/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `update`, `insert_into_estimate`, `archive`. `list` only reads. |
| costbook string | string | Costbook name. |
| items array | array | Item name, unit and cost. |
| project string | string | For `insert_into_estimate`. |
{
"action": "action"
} {
"costbook": "Residential 2026",
"items": 214,
"inserted": [
{
"item": "Framing lumber, 2x6",
"unit": "lf",
"cost": 1.85
}
]
} The agent reads and moves takeoff data; it does not measure drawings. Measurements are made in Redline Takeoff on the plan sheets. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_takeoffs
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/takeoffs/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `get`, `start`, `send_to_estimate`. `get` only reads. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| from string | string | For `start`: `scratch`, `estimate` or `template`. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"takeoff": "Addition takeoff",
"layers": [
"Walls",
"Roof"
],
"sent_to_estimate": true
} Estimates group items in categories and subcategories, with company overhead and margin, item markup and tax settings. The agent shows you the lines and total before saving. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_estimates
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/estimates/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `get`, `create`, `add_items`, `set_status`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| source string | string | For `create`: `blank`, `template`, `excel` or `takeoff`. |
| items array | array | Category, subcategory, item, quantity, unit cost, markup, tax and classification. |
| status string | string | For `set_status`. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"estimate": "Addition, base scope",
"categories": 3,
"total": 48650,
"saved": true
} `get` returns the bid sheet so you can compare submissions before you award work. Invitations reach people outside your company, so the agent lists recipients first. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_bids
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/bids/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `add_bidders`, `send_invitations`, `enter_bid`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| package string | string | Bid package name. |
| bidders array | array | Contacts invited to bid. |
| amount number | number | For `enter_bid`: the bid received. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"package": "Electrical rough-in",
"bids": [
{
"bidder": "Example Electric",
"amount": 14800
},
{
"bidder": "Sample Sparks",
"amount": 16250
}
]
} Purchasing in ConstructionOnline also tracks bills, expenses, receipts and payments. A purchase order commits money to a vendor, so the agent shows vendor, lines and total first. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_purchase_orders
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/purchase-orders/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `set_approval`, `email`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| from string | string | For `create`: `estimate`, `change_order` or `scratch`. |
| vendor string | string | Vendor contact. |
| items array | array | Description, quantity and unit cost. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"purchase_order": "PO-031",
"vendor": "Example Lumber Co",
"total": 9850,
"approval": "Pending"
} Change orders, selections, invoices and payment applications. Drafting and sending are separate actions.
An approved change order can become a purchase order or an invoice. The agent shows you the lines before saving, because the change moves the contract value. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_change_orders
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/change-orders/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `set_status`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| title string | string | Change order title. |
| items array | array | Description, quantity and price per line. |
| cost_code string | string | Cost code from the project's cost code list. |
| estimate_subcategory string | string | Estimate subcategory to link to. |
| status string | string | For `set_status`, from ConstructionOnline's change order statuses. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"change_order": "CO-04 Add egress window",
"total": 3200,
"status": "Pending",
"saved": true
} Client price follows the selection markup settings. `send` reaches your client. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_selections
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/selections/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `add_category`, `add_selection`, `add_choice`, `send`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| category string | string | Selections category, for example Kitchen. |
| selection string | string | For example Cabinet hardware. |
| choice object | object | Name, vendor, client price, image and attachments. |
| allowance number | number | Allowance for the selection. |
| due string | string | ISO due date. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"selection": "Window style",
"allowance": 4200,
"choices": 3,
"due": "2026-11-27"
} Creating and emailing are separate calls, so you read the invoice before it goes out. An emailed invoice has reached your client. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_invoices
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/invoices/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `email`, `record_payment`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| from string | string | For `create`: `estimate` or `change_order`. |
| invoice string | string | Invoice number, for `get`, `email` and `record_payment`. |
| amount number | number | For `record_payment`. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"invoice": "INV-1042",
"total": 3200,
"status": "Draft",
"emailed": false
} Payment applications are built from the project's existing financial data for progress billing. Emailing reaches your client. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_payment_applications
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/payment-applications/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `email`, `export`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| period_end string | string | ISO date the application covers up to. |
| format string | string | For `export`: `pdf` or `aia`. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"application": "Pay App 3",
"period_end": "2026-11-30",
"this_period": 28400
} Schedules, calendars, to dos, GamePlan, daily logs, checklists and punch lists, time and files.
Workdays and observed holidays shape the dates. Predecessors move dependent tasks, so the agent tells you which tasks a change shifts. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_schedule
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/schedule/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `get`, `create`, `add_task`, `update_task`, `add_milestone`. `get` only reads. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| source string | string | For `create`: `blank`, `template`, `estimate` or `ms_project`. |
| task object | object | Name, group, start, duration, predecessors, resource, notes, ASAP flag. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"task": "Frame walls",
"start": "2026-11-18",
"duration_days": 4,
"predecessors": [
"Pour footings"
],
"saved": true
} Calendars can sync to Google or Outlook through ConstructionOnline's own settings, which no tool changes. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_calendar
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/calendar/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `update`, `delete`. `list` only reads. |
| project string | string | Leave empty for the company calendar. |
| event object | object | Title, start, end, calendar, cost code. |
{
"action": "action"
} {
"project": "Hillcrest addition",
"event": "Framing inspection",
"start": "2026-11-24T09:00",
"saved": true
} Assigned resources see the to do on their list. Private to dos stay with you. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_todos
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/todos/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `update`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| title string | string | To do title. |
| fields object | object | Due date, priority, resources, trade, type, category, stage, tags, cost impact, linked schedule task. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"todo": "Confirm window delivery",
"due": "2026-11-19",
"priority": "High",
"stage": "Open",
"saved": true
} GamePlan compiles each person's key activities across ConstructionOnline into one automated list. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_gameplan
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/gameplan/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `get`, `create_quick`, `create_email`. `get` only reads. |
| user string | string | Company user the GamePlan is for. |
{
"action": "action"
} {
"user": "Project manager",
"items": [
{
"type": "To do",
"title": "Confirm window delivery",
"due": "2026-11-19"
},
{
"type": "RFI",
"title": "RFI-07 Header size",
"due": "2026-11-18"
}
]
} Weather tracking fills in the day's weather when it is enabled. The agent writes only what you gave it. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_daily_logs
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/daily-logs/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `export_hours`. `list` and `export_hours` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| type string | string | Daily log type, or one of your custom logs. |
| date string | string | ISO date. |
| notes string | string | What happened on site, in your words. |
| cost_code string | string | Cost code from the project's cost code list. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"date": "2026-11-13",
"type": "Work log",
"notes": "Footings poured, inspection passed.",
"saved": true
} Both lists track items, item issues, assigned resources and progress, and can be signed and shared from ConstructionOnline. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_checklists
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/checklists/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `add_item`, `complete_item`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| kind string required | string | `checklist` or `punch_list`. |
| list string | string | Name of the checklist or punch list. |
| item object | object | Item, issue, assigned resource, cost code. |
{
"action": "action",
"project": "project",
"kind": "kind"
} {
"project": "Hillcrest addition",
"kind": "punch_list",
"list": "Final walk",
"items": 14,
"complete": 9
} Hours feed the employee and project time summaries, so each entry waits for your OK. Clock-in requirements and geofencing stay as set in ConstructionOnline. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_time
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/time/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `add_entry`, `edit`. `list` and `get` only read. |
| employee string | string | Company user. |
| project string | string | Project the time is for. |
| date string | string | ISO date. |
| hours number | number | Hours worked. |
{
"action": "action"
} {
"employee": "Carpenter A",
"project": "Hillcrest addition",
"date": "2026-11-13",
"hours": 8,
"saved": true
} Folders and albums can be private. Deleted files can be restored in ConstructionOnline. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_files
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/files/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `upload_files`, `upload_photos`, `create_folder`. `list` only reads. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| folder string | string | Folder or album name. |
| file_urls array | array | Links the Cloud Browser downloads attachments from. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"album": "Footings",
"uploaded": 6
} RFIs, submittals, transmittals, meetings and Envoy chat. Most of these reach people outside your company.
An RFI goes to the people you name, so the agent shows the question and recipients first. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_rfis
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/rfis/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `resend`, `resolve`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| rfi string | string | RFI number or subject. |
| question string | string | For `create`. |
| to array | array | Who answers. |
| cost_code string | string | Cost code from the project's cost code list. |
{
"action": "create",
"project": "Hillcrest addition",
"question": "Confirm header size at the new 6 ft opening on sheet S-201.",
"to": [
"Example Engineering"
]
} {
"project": "Hillcrest addition",
"rfi": "RFI-07 Header size at new opening",
"status": "Open",
"sent_to": [
"Example Engineering"
]
} Emailing sends the submittal to its reviewers. The summary can be exported to Excel. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_submittals
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/submittals/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `email`, `respond`, `close`, `revise`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| submittal string | string | Submittal number or title. |
| file_urls array | array | Links the Cloud Browser downloads attachments from. |
| response string | string | For `respond`. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"submittal": "SUB-05 Window product data",
"status": "Open",
"revision": 0
} A transmittal is the formal record of what you sent to whom. Emailing reaches the recipients. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_transmittals
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/transmittals/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `email`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| subject string | string | What is transmitted. |
| to array | array | Recipients. |
| file_urls array | array | Links the Cloud Browser downloads attachments from. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"transmittal": "TR-12 Revised framing plans",
"to": [
"Example Framing"
],
"emailed": false
} Meetings run in Agenda mode and Minutes mode and can start from a template. Invitations reach attendees. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_meetings
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/meetings/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `send_invitations`, `record_minutes`, `add_action_item`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| meeting string | string | Meeting title. |
| attendees array | array | Contacts invited. |
| notes string | string | Agenda or minutes. |
{
"action": "action",
"project": "project"
} {
"project": "Hillcrest addition",
"meeting": "Weekly OAC meeting",
"attendees": 5,
"action_items": 3
} Envoy Chat is ConstructionOnline's instant messaging for project teams. Messages reach people at once, so each one waits for your OK. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_chat
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/chat/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create_chat`, `create_channel`, `send`. `list` and `get` only read. |
| chat string | string | Chat or channel name. |
| members array | array | For a new chat or channel. |
| message string | string | For `send`. |
{
"action": "action"
} {
"chat": "Hillcrest addition",
"message": "Inspection passed, framing starts Tuesday.",
"sent": true
} Warranty service, permits and insurance expirations, TrueVision dashboards, reports and plan sheets.
Warranties keep each item's service history from request to completion. A service appointment involves the homeowner, so it waits for your OK. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_warranties
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/warranties/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `add_issue`, `schedule_service`. `list` and `get` only read. |
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| issue string | string | What needs service. |
| appointment string | string | For `schedule_service`: ISO date and time. |
{
"action": "action",
"project": "project"
} {
"project": "Maple Court new build",
"issue": "Sticking patio door",
"appointment": "2026-11-20T08:00",
"status": "Scheduled"
} Permits are tracked across all projects; insurance and certificates are tracked for expirations. `list` is the quick way to see what expires soon. By default you confirm each call; you can switch that off for this tool.
MCP callconstructiononline_write → manage_compliance
REST endpointPOST https://cotlet.dev/api/v1/constructiononline/compliance/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `update`, `archive`. `list` and `get` only read. |
| kind string required | string | `permit`, `insurance`, `license`, `bond` or `certification`. |
| record object | object | Name, number, holder or project, issue and expiry dates. |
{
"action": "action",
"kind": "kind"
} {
"kind": "insurance",
"records": [
{
"holder": "Example Electric",
"policy": "General liability",
"expires": "2026-12-01"
}
]
} TrueVision is ConstructionOnline's business intelligence view over sales, project health, financials, scheduling and resources. The tool returns what the dashboard shows your user, as text. Nothing is changed.
MCP callconstructiononline_read → view_truevision
REST endpointGET https://cotlet.dev/api/v1/constructiononline/truevisions/view
| Name | Type | Description |
|---|---|---|
| dashboard string required | string | `sales`, `project_health`, `financial`, `wip`, `multi_project_schedule` or `resourcetrak`. |
| project string | string | Narrow to one project where the dashboard allows it. |
{
"dashboard": "dashboard"
} {
"dashboard": "wip",
"projects": [
{
"project": "Hillcrest addition",
"contract": 186000,
"billed": 92000,
"percent_complete": 52
}
]
} Reports carry your company logo or letterhead and header and footer settings from Company Reporting. The agent returns the report; saving it into ConstructionOnline is a separate choice in the app.
MCP callconstructiononline_read → create_report
REST endpointGET https://cotlet.dev/api/v1/constructiononline/reports/create
| Name | Type | Description |
|---|---|---|
| report string required | string | `opportunities`, `leads`, `rfi_summary`, `submittal_summary`, `employee_time` or `project_time`. |
| project string | string | For project reports. |
| from string | string | ISO date. |
| to string | string | ISO date. |
{
"report": "report"
} {
"report": "rfi_summary",
"project": "Hillcrest addition",
"open": 2,
"resolved": 9
} Returns sheet information, revisions, pinned items, assigned contacts and comments as text. It does not draw markups or measure.
MCP callconstructiononline_read → view_redline_planroom
REST endpointGET https://cotlet.dev/api/v1/constructiononline/redline-planrooms/view
| Name | Type | Description |
|---|---|---|
| project string required | string | Project name or number, as manage_projects `list` returns it. |
| sheet string | string | Sheet name or number; leave empty for the list. |
{
"project": "project"
} {
"project": "Hillcrest addition",
"sheets": [
{
"sheet": "A-101 Floor plan",
"revision": "Rev 2",
"comments": 3
},
{
"sheet": "S-201 Framing",
"revision": "Rev 1",
"comments": 0
}
]
} Your signed-in ConstructionOnline browser profile, AES-256-GCM encrypted, in Finland. Never your password.
The 31 ConstructionOnline tools. The session cookie stays in the Cloud Browser.
The projects and records your company user and its permissions open, and nothing more.
Company users and permissions, account settings, accounting, Zapier, HubSpot, Docusign and calendar sync settings.
You sign in again yourself, in the same Cloud Browser.
Disable ConstructionOnline for agents, reset the browser, or change your password.
You type your ConstructionOnline password yourself; the agent only uses the session that sign-in leaves behind. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results).
ConstructionOnline is a wide product, from OnCost estimates to OnGuard permits and Redline plan sheets. When one of those screens changes, Cotlet updates the server, and your prompts and scripts keep the same tool names.
Your plan still decides what exists: a feature your subscription lacks is not there for the agent either. Your user's permissions decide which projects it opens.
If ConstructionOnline signs you out, one click in the Cotlet console reopens the Cloud Browser so you can sign in again.
list shows it open until it is resolved. | Action | How to put it right |
|---|---|
| Lead, project, schedule or to do fields | Call the same tool again with the earlier values |
| File deleted by mistake | Restore it from ConstructionOnline's deleted files |
| RFI, submittal, transmittal or bid invitation sent | Already with the recipient: follow up with them directly |
| Invoice or payment application emailed | Already with your client: talk to them before changing it |
All 28 write tools ask first: by default you confirm each call, and you can switch that off per tool. The 3 read tools, TrueVision, reports and plan sheets, run at once.
{
"name": "manage_rfis",
"arguments": {
"action": "create",
"project": "Hillcrest addition",
"question": "Confirm header size at the new 6 ft opening on sheet S-201.",
"to": [
"Example Engineering"
]
}
} curl -X POST https://cotlet.dev/api/v1/constructiononline/rfis/manage \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"create","project":"Hillcrest addition","question":"Confirm header size at the new 6 ft opening on sheet S-201.","to":["Example Engineering"]}' {
"project": "Hillcrest addition",
"rfi": "RFI-07 Header size at new opening",
"status": "Open",
"sent_to": [
"Example Engineering"
]
} The example sends RFI-07 to the engineer and returns it as Open. A cron job or n8n flow can make the same call over REST at /api/v1/constructiononline with the same key and price, in JSON. Failed calls are free.
About $23 a monthfor a contractor with two active projects, 3,900 credits. Your ConstructionOnline plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Daily logs on two projects | 2 × 20 | 400 |
| Schedule and to do updates | 2 × 20 | 400 |
| Lead follow-ups and call logs | 1 × 40 | 400 |
| RFIs, submittals and transmittals | 1 × 30 | 300 |
| Estimates from costbooks | 4 × 5 | 200 |
| Bids and purchase orders | 2 × 10 | 200 |
| Change orders and invoices | 2 × 10 | 200 |
| Monday open-items review | 4 × 4 | 160 |
| Time entries | 1 × 8 | 80 |
| Payment applications | 2 × 2 | 40 |
| Insurance and permit check | 2 × 1 | 20 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 240 calls | 3,900 |
The smallest pack, 5,000 credits for $29, covers this month. More projects in progress mean more calls.
Credit packs are one-time purchases, not a subscription. The month above is built from our own assumptions, not measured customer usage.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| ConstructionOnline API | Private REST API, read and write, for your own code. | Business or Enterprise, on request; you build, host and fix the client. |
| Zapier integration | Connects ConstructionOnline to other apps without code. | Team plan and up, not in the trial; only the published triggers and actions. |
| HubSpot and Docusign | Lead sync and e-signatures, set up in ConstructionOnline. | Fixed jobs, not a route for an AI agent. |
| By hand | Open each module and click through. | One screen at a time, at the desk. |
If you have API access and your developers cover the job, use the API: it is the vendor's own route. Cotlet fits when you want ChatGPT, Claude or a script working in ConstructionOnline today, on your current plan, with nothing to host.
Take Group sp. z o.o. operates Cotlet. It is a Polish software company in the EU (VAT PL6342984273), active since 2019 and run by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Send questions about the ConstructionOnline tools to contact@cotlet.dev.
Sign up free at https://cotlet.dev/signup?app=constructiononline, turn on ConstructionOnline under Integrations in the console and sign in at https://app.constructiononline.com/ in your Cloud Browser. Then connect your AI agent and ask it about a project. The trial needs no card.
ConstructionOnline has a private REST API with read and write access for companies on Business or Enterprise subscriptions, turned on only after they ask its development team (checked 13 Nov 2026). It also connects to Zapier on Team plans and up. No ConstructionOnline MCP server or official ChatGPT or Claude connector was verified. Cotlet does not use that API: it works in your own signed-in ConstructionOnline account, on any plan.
The Zapier integration, for Team, Business and Enterprise plans, runs the triggers and actions ConstructionOnline publishes there. Cotlet lets ChatGPT, Claude or a script work across the screens with the tools on this page. You can use both.
No. ClientLink and TeamLink are ConstructionOnline's portals for clients, subs and vendors. The tools here run as your company user.
Not for Cotlet. The vendor's own API needs one; Cotlet works through your sign-in, so the tools cover what your current plan and permissions show.
Only in how it is called. Both carry the same 31 tools, inputs, answers, API key and price. Agents use MCP; scripts and n8n HTTP steps use REST.
No. Cotlet is independent and not affiliated with ConstructionOnline.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy