Local services & SaaS
Buildertrend
Schedules, daily logs, change orders and selections for builders.
12 endpoints
Buildern documents a gated API and no Buildern MCP server (checked 13 Nov 2026). Cotlet runs a hosted Buildern MCP server with 21 tools that ChatGPT and Claude use in your own contractor account. Estimates, invoices and anything that reaches a client or a sub wait for your OK.
21 tools Read and write
Buildern publishes API documentation at api.buildern.com/v1/docs and directs API access through its contact flow. No Buildern MCP server and no official ChatGPT or Claude connector was verified.
| What you need | Buildern API | By hand | Cotlet |
|---|---|---|---|
| Ask ChatGPT or Claude to do the work | No MCP server verified | Copy and paste | Hosted MCP server |
| Start today with your own login | Request access first | Your login | Your login, once |
| Estimates, schedules, bills and invoices | Endpoints not verified | One screen at a time | 21 tools, writes after your OK |
| Run from n8n or a script | After access, your own code | Manual only | REST, same key |
Checked 13 Nov 2026. Sources: Buildern API documentation · Buildern contact page · Buildern AI · Buildern Help Center · Help: Buildern AI · Help: Quickbooks Online Integration · Help: Xero Integration · Help: Users, Roles, Permissions · Help: Projects · Help: Dashboards · Help: Takeoff · Help: Estimates · Help: Cost Codes · Help: Proposals · Help: Schedule · Help: Bid Requests / Request for Quote · Help: Selections and Allowances · Help: Purchase Orders · Help: Bills · Help: Budget Tab · Help: Change Orders / Variations · Help: Client Invoices · Help: To-Dos · Help: Daily Logs / Site diary · Help: Timesheets · Help: Files · Help: Clients · Help: Subcontractors & Vendors · Help: Templates
Once, in a browser we host for you.
One address in its settings.
Price a takeoff, then approve the estimate.
Your agent works in your own signed-in Cloud Browser. Writes, and anything that reaches a client or a sub, wait for your OK. Who can see your session
Sign in to Buildern in a Cloud Browser. Open app.buildern.com in your Cotlet Cloud Browser and sign in with your own Buildern 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.
Buildern sits on the shared address https://cotlet.dev/mcp/v1 with every other app you enable, so one connector covers them all. Turned Buildern on after connecting? Refresh the connector and the 21 Buildern tools appear.
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: buildern_read One tool per workflow in the Buildern Help Center. Most take an `action`: `list` and `get` only read, the other actions write and ask first.
Start here: most other tools take a project name. Dashboards and the Budget tab are read only.
Most tools take a project, so this is usually the first call: `list` finds the project, `get` reads it. `create` and `update` save the fields you give and leave the rest as they are. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_projects
REST endpointPOST https://cotlet.dev/api/v1/buildern/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 ID, for `get` and `update`. |
| fields object | object | For `create` and `update`: name, client, address and the other project fields you want set, in Buildern's own labels. |
{
"action": "action"
} {
"project": "Oak Lane kitchen remodel",
"client": "Example Homeowner",
"address": "12 Oak Lane, Springfield",
"saved": true
} Returns the figures and lists the dashboard shows to your signed-in user, as text. Nothing is changed, so it runs without asking.
MCP callbuildern_read → view_dashboards
REST endpointGET https://cotlet.dev/api/v1/buildern/dashboards/view
| Name | Type | Description |
|---|---|---|
| dashboard string | string | Dashboard to open, by the name Buildern shows. Leave empty for the first one your role sees. |
| project string | string | Project name or ID. Leave empty to cover every project your role can open. |
{
"dashboard": "Company overview",
"project": null,
"widgets": [
{
"title": "Open projects",
"value": 3
},
{
"title": "To-dos due this week",
"value": 7
}
]
} Returns the rows of the project's Budget tab as your role sees them. Use it before a client meeting or at the end of a week to compare with bills and purchase orders. It changes nothing and runs without asking.
MCP callbuildern_read → manage_budget_tab
REST endpointGET https://cotlet.dev/api/v1/buildern/budget-tabs/manage
| Name | Type | Description |
|---|---|---|
| project string required | string | Project name or ID, as list in manage_projects returns it. |
{
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"rows": [
{
"cost_code": "Cabinetry",
"budget": 4340
},
{
"cost_code": "Countertops",
"budget": 3570
},
{
"cost_code": "Tile",
"budget": 720
}
]
} From measured quantities to the document your client reads. The agent enters quantities you give it; it does not measure drawings.
The agent enters the quantities you hand it; it does not measure drawings by itself. Read a saved takeoff back with `get` to price it in create_estimates. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → perform_takeoff
REST endpointPOST https://cotlet.dev/api/v1/buildern/takeoff/perform
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`. `list` and `get` only read. |
| project string required | string | Project name or ID, as list in manage_projects returns it. |
| takeoff string | string | Takeoff name, for `get` and `create`. |
| items array | array | For `create`: measured items, each with description, quantity and unit, as you or your estimator give them. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"takeoff": "Kitchen, base scope",
"items": [
{
"description": "Base cabinets",
"quantity": 14,
"unit": "lf"
},
{
"description": "Quartz countertop",
"quantity": 42,
"unit": "sq ft"
},
{
"description": "Backsplash tile",
"quantity": 30,
"unit": "sq ft"
}
],
"saved": true
} Each line can carry a cost code from manage_cost_codes. The agent shows you the lines and the total before it saves. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → create_estimates
REST endpointPOST https://cotlet.dev/api/v1/buildern/estimates
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`. `list` and `get` only read. |
| project string required | string | Project name or ID, as list in manage_projects returns it. |
| name string | string | Estimate name, for `get` and `create`. |
| lines array | array | For `create`: description, cost_code, quantity, unit and unit_cost per line. |
{
"action": "create",
"project": "Oak Lane kitchen remodel",
"name": "Kitchen remodel, base scope",
"lines": [
{
"description": "Base cabinets, supply and install",
"cost_code": "CAB",
"quantity": 14,
"unit": "lf",
"unit_cost": 310
},
{
"description": "Quartz countertop",
"cost_code": "CTP",
"quantity": 42,
"unit": "sq ft",
"unit_cost": 85
},
{
"description": "Backsplash tile",
"cost_code": "TIL",
"quantity": 30,
"unit": "sq ft",
"unit_cost": 24
}
]
} {
"project": "Oak Lane kitchen remodel",
"estimate": "Kitchen remodel, base scope",
"lines": 3,
"total": 8630,
"saved": true
} Run `list` first to see the codes you already have, so the list does not grow duplicates. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_cost_codes
REST endpointPOST https://cotlet.dev/api/v1/buildern/cost-codes/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `update`. `list` and `get` only read. |
| code string | string | The cost code, for `create` and `update`. |
| name string | string | What the code covers, for example Cabinetry. |
{
"action": "action"
} {
"cost_codes": [
{
"code": "CAB",
"name": "Cabinetry"
},
{
"code": "CTP",
"name": "Countertops"
},
{
"code": "TIL",
"name": "Tile"
}
]
} A proposal is what your client reads, so the agent shows you its title and the estimate behind it before saving. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → create_proposals
REST endpointPOST https://cotlet.dev/api/v1/buildern/proposals
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`. `list` and `get` only read. |
| project string required | string | Project name or ID, as list in manage_projects returns it. |
| title string | string | Proposal title, for `get` and `create`. |
| estimate string | string | For `create`: the estimate the proposal is based on. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"proposal": "Kitchen remodel proposal",
"estimate": "Kitchen remodel, base scope",
"saved": true
} A template is reused on future projects, so the agent shows you its name and source before saving. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_templates
REST endpointPOST https://cotlet.dev/api/v1/buildern/templates/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`. `list` and `get` only read. |
| name string | string | Template name, for `create`. |
| from_record string | string | For `create`: an existing Buildern record to start the template from, by name. |
{
"action": "action"
} {
"template": "Kitchen remodel, standard scope",
"from_record": "Kitchen remodel, base scope",
"saved": true
} Dates, to-dos, the daily log or site diary, crew hours and project files.
Your crews and subcontractors plan around these dates, so every move waits for your OK and the agent tells you which item it changed. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_schedule
REST endpointPOST https://cotlet.dev/api/v1/buildern/schedule/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 ID, as list in manage_projects returns it. |
| task string | string | Schedule item, for `create` and `update`. |
| start_date string | string | ISO date. |
| end_date string | string | ISO date. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"task": "Drywall",
"start_date": "2026-11-19",
"end_date": "2026-11-21",
"saved": true
} An assigned to-do is work for a teammate, so new ones and reassignments wait for your OK. Without a project, `list` covers every project you can open. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_to_dos
REST endpointPOST https://cotlet.dev/api/v1/buildern/dos/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `update`. `list` and `get` only read. |
| project string | string | Project name or ID. Leave empty to cover every project your role can open. |
| title string | string | The to-do, for `create` and `update`. |
| assignee string | string | Team member it is for. |
| due_date string | string | ISO date. |
| done boolean | boolean | Set true to mark it done. |
{
"action": "action"
} {
"project": "Oak Lane kitchen remodel",
"title": "Confirm tile start with the tile crew",
"assignee": "Site lead",
"due_date": "2026-11-20",
"done": false
} Buildern's Help Center calls this Daily Logs / Site diary. The agent writes your notes as given and adds nothing you did not say. Run `list` for the date first so the same day is not logged twice. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → record_daily_logs_site_diary
REST endpointPOST https://cotlet.dev/api/v1/buildern/daily-logs-site-diaries
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`. `list` and `get` only read. |
| project string required | string | Project name or ID, as list in manage_projects returns it. |
| date string | string | ISO date of the log. Defaults to today. |
| notes string | string | What happened on site, in your words. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"date": "2026-11-13",
"notes": "Base cabinets set and levelled. Countertop template booked for Monday.",
"saved": true
} Hours feed what you pay your crew, so each entry waits for your OK. `list` reads the hours already entered for a person, project or week. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → track_timesheets
REST endpointPOST https://cotlet.dev/api/v1/buildern/timesheets/track
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`. `list` and `get` only read. |
| project string | string | Project name or ID. Leave empty to cover every project your role can open. |
| person string | string | Team member the hours are for. |
| date string | string | ISO date. |
| hours number | number | Hours worked. |
{
"action": "action"
} {
"project": "Oak Lane kitchen remodel",
"person": "Carpenter A",
"date": "2026-11-13",
"hours": 8,
"saved": true
} The file goes to the project in Buildern under the name you give. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_files
REST endpointPOST https://cotlet.dev/api/v1/buildern/files/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `upload`. `list` and `get` only read. |
| project string required | string | Project name or ID, as list in manage_projects returns it. |
| file_url string | string | For `upload`: a link the Cloud Browser can download the file from. |
| name string | string | File name to show in Buildern. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"file": "Kitchen layout rev B.pdf",
"uploaded": true
} Requests for quote reach subcontractors and vendors outside your company; orders and bills are money. Each write waits for your OK.
A request for quote reaches people outside your company, so the agent lists the recipients and the scope before it goes out. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_bid_requests_request_for_quote
REST endpointPOST https://cotlet.dev/api/v1/buildern/bid-requests-request-for-quote/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`. `list` and `get` only read. |
| project string required | string | Project name or ID, as list in manage_projects returns it. |
| scope string | string | The work or materials you want priced. |
| vendors array | array | Subcontractors or vendors from manage_subcontractors_vendors. |
| due_date string | string | ISO date the bids are due. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"scope": "Kitchen rewiring",
"vendors": [
"Example Electric",
"Sample Sparks"
],
"due_date": "2026-11-27",
"created": true
} A purchase order commits money to a vendor, so the agent shows the vendor, lines and total before it creates one. `list` is the quick way to see what is already ordered on a project. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_purchase_orders
REST endpointPOST https://cotlet.dev/api/v1/buildern/purchase-orders/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`. `list` and `get` only read. |
| project string required | string | Project name or ID, as list in manage_projects returns it. |
| vendor string | string | Vendor from manage_subcontractors_vendors, for `create`. |
| lines array | array | For `create`: description, cost_code, quantity and unit_cost per line. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"purchase_orders": [
{
"vendor": "Example Lumber Co",
"title": "Framing lumber package",
"amount": 18400
},
{
"vendor": "Sample Windows",
"title": "Window order",
"amount": 9650
}
]
} Bills are costs against the project budget, so the agent checks the vendor and amount with you before adding one. With `list` it reads what is already entered, which avoids adding the same bill twice. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_bills
REST endpointPOST https://cotlet.dev/api/v1/buildern/bills/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`. `list` and `get` only read. |
| project string required | string | Project name or ID, as list in manage_projects returns it. |
| vendor string | string | Who sent the bill, for `create`. |
| amount number | number | Bill total. |
| bill_date string | string | ISO date on the bill. |
| reference string | string | The vendor's bill or invoice number. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"vendor": "Example Lumber Co",
"amount": 18400,
"bill_date": "2026-11-10",
"reference": "EL-2231",
"saved": true
} Everything here changes what your client pays. Preparing an invoice and sending it are separate calls.
Allowances are money your client has agreed to, so a new or changed allowance waits for your OK. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_selections_and_allowances
REST endpointPOST https://cotlet.dev/api/v1/buildern/selections-and-allowances/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 ID, as list in manage_projects returns it. |
| item string | string | The selection, for example Kitchen faucet. |
| allowance number | number | The allowance amount in your account currency. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"item": "Kitchen faucet",
"allowance": 450,
"saved": true
} A change order changes what the client pays, so it waits for your OK. Buildern's Help Center files them under Change Orders / Variations. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_change_orders_variations
REST endpointPOST https://cotlet.dev/api/v1/buildern/change-orders-variations/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`. `list` and `get` only read. |
| project string required | string | Project name or ID, as list in manage_projects returns it. |
| title string | string | Short name of the change, for `create`. |
| description string | string | What changes in the work. |
| amount number | number | Price of the change. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"change_order": "Extra outlet run",
"amount": 640,
"saved": true
} Preparing and sending are separate calls, so you can read the invoice before it goes out. A sent invoice has reached your client and cannot be pulled back by the agent. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_client_invoices
REST endpointPOST https://cotlet.dev/api/v1/buildern/client-invoices/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`, `send`. `list` and `get` only read. |
| project string required | string | Project name or ID, as list in manage_projects returns it. |
| invoice string | string | Invoice name or number, for `get` and `send`. |
| lines array | array | For `create`: description and amount per line. |
{
"action": "action",
"project": "project"
} {
"project": "Oak Lane kitchen remodel",
"invoice": "Progress invoice, November",
"lines": [
{
"description": "Cabinet install, completed",
"amount": 4340
},
{
"description": "Extra outlet run",
"amount": 640
}
],
"total": 4980,
"sent": false
} The people the other records point at. Add a sub here before sending them a bid request.
Add the client before manage_projects creates their project. Run `list` first so the same homeowner is not added twice. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_clients
REST endpointPOST https://cotlet.dev/api/v1/buildern/clients/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`. `list` and `get` only read. |
| client string | string | Client name, for `get`. |
| fields object | object | For `create`: name, email, phone and address. |
{
"action": "action"
} {
"client": "Example Homeowner",
"email": "homeowner@example.com",
"phone": "+1 555 0100",
"saved": true
} Bid requests, purchase orders and bills point at these records, so add a new subcontractor here before you send them anything. By default you confirm each call; you can switch that off for this tool.
MCP callbuildern_write → manage_subcontractors_vendors
REST endpointPOST https://cotlet.dev/api/v1/buildern/subcontractors-vendors/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `get`, `create`. `list` and `get` only read. |
| name string | string | Company name. |
| trade string | string | Trade or what they supply, for example Electrical. |
| email string | string | Contact email for bid requests and orders. |
{
"action": "action"
} {
"name": "Example Electric",
"trade": "Electrical",
"email": "bids@example.com",
"saved": true
} Your signed-in Buildern browser profile, AES-256-GCM encrypted, in Finland. Never your password.
The 21 Buildern tools. The session cookie stays in the Cloud Browser.
The projects, estimates and money records your Buildern user and role can open, and nothing more.
Buildern users, roles and permissions, account settings and the QuickBooks Online and Xero connections.
You sign in again yourself, in the same Cloud Browser.
Disable Buildern for agents, reset the browser, or change your Buildern password.
You type your Buildern 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).
Cotlet watches the apps it serves and updates the Buildern server when Buildern changes its screens, so your agent keeps working without a code change on your side.
New Buildern features become available to the agent. It still sees only what your own Buildern user and role can see, so a login with fewer permissions gives the agent fewer records.
If Buildern signs you out, one click in the Cotlet console reopens the Cloud Browser so you can sign in again.
| Action | How to put it right |
|---|---|
| Project details, schedule dates, to-dos | Call manage_projects, manage_schedule or manage_to_dos again with the earlier values |
| Cost code names | Rename the code back with manage_cost_codes |
| Bid request | Already with your subs and vendors: follow up with them directly |
| Client invoice, once sent | Already with your client: talk to them before you change it |
All 19 write tools ask first: by default you confirm each call, and you can switch that off per tool. The 2 read tools, dashboards and the Budget tab, run at once.
{
"name": "create_estimates",
"arguments": {
"action": "create",
"project": "Oak Lane kitchen remodel",
"name": "Kitchen remodel, base scope",
"lines": [
{
"description": "Base cabinets, supply and install",
"cost_code": "CAB",
"quantity": 14,
"unit": "lf",
"unit_cost": 310
},
{
"description": "Quartz countertop",
"cost_code": "CTP",
"quantity": 42,
"unit": "sq ft",
"unit_cost": 85
},
{
"description": "Backsplash tile",
"cost_code": "TIL",
"quantity": 30,
"unit": "sq ft",
"unit_cost": 24
}
]
}
} curl -X POST https://cotlet.dev/api/v1/buildern/estimates \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"create","project":"Oak Lane kitchen remodel","name":"Kitchen remodel, base scope","lines":[{"description":"Base cabinets, supply and install","cost_code":"CAB","quantity":14,"unit":"lf","unit_cost":310},{"description":"Quartz countertop","cost_code":"CTP","quantity":42,"unit":"sq ft","unit_cost":85},{"description":"Backsplash tile","cost_code":"TIL","quantity":30,"unit":"sq ft","unit_cost":24}]}' {
"project": "Oak Lane kitchen remodel",
"estimate": "Kitchen remodel, base scope",
"lines": 3,
"total": 8630,
"saved": true
} The example prices 14 lf of base cabinets at $310, 42 sq ft of quartz at $85 and 30 sq ft of tile at $24: $8,630 in all. A cron job or n8n flow can make the same call over REST at /api/v1/buildern with the same key and price, in JSON. Failed calls are free.
About $29 a monthfor a small contractor running three projects, 5,000 credits. Your Buildern plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Morning dashboard and to-do check | 2 × 20 | 400 |
| Daily log on three projects | 3 × 20 | 600 |
| Schedule moves | 2 × 20 | 400 |
| Supplier bills and purchase orders | 1 × 90 | 900 |
| Crew hours into timesheets | 15 × 4 | 600 |
| Takeoff, estimate and proposal for a new job | 3 × 10 | 300 |
| Friday budget review, three projects | 3 × 4 | 120 |
| Change orders and client invoices | 1 × 18 | 180 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 350 calls | 5,000 |
The smallest pack, 5,000 credits for $29, covers this month. A busier office with more projects uses more calls.
Credit packs are one-time purchases, not a subscription. The month above is an example 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 |
|---|---|---|
| Buildern API | Documented at api.buildern.com/v1/docs for your own code. | Access through Buildern's contact flow; you write, host and fix the client. |
| Buildern AI | Buildern's own assistant, inside Buildern. | No official ChatGPT or Claude connector was verified. |
| QuickBooks Online and Xero integrations | Buildern's own links to those accounting tools. | Set up in Buildern for accounting, not a route for an AI agent. |
| By hand | Open each project in Buildern and click through. | One screen at a time, only while you are at the desk. |
If you get access to the Buildern API and it covers your job, use it: it is the vendor's own route. Cotlet fits when you want ChatGPT, Claude or a script working in Buildern today, from your own login, with nothing to host.
Cotlet is run by Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273) and in business since 2019. Its founders are Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev with questions about the Buildern tools.
Sign up free at https://cotlet.dev/signup?app=buildern, turn on Buildern under Integrations in the console and sign in at https://app.buildern.com/ in your Cloud Browser. Then connect your AI agent and ask it to work on a project. The trial needs no card.
Buildern publishes API documentation at api.buildern.com/v1/docs and directs API access through its contact flow (checked 13 Nov 2026). No Buildern MCP server and no official ChatGPT or Claude connector was verified; Buildern AI is the vendor's own assistant. Cotlet does not use that API: it works in your own signed-in Buildern account.
Buildern AI is Buildern's own assistant, documented in its Help Center. Cotlet is separate: it lets ChatGPT, Claude or a script you choose work in your Buildern account with the same tools over MCP or REST.
No. Buildern documents its own QuickBooks Online and Xero integrations in its Help Center; you set those up in Buildern. No Cotlet tool changes them, or your users, roles, permissions and settings.
Use the user whose work the agent should do. The agent sees only what that user and its role can see in Buildern, so a user without access to client invoices gives the agent no access to them either.
Only in how it is called. Both carry the same 21 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 Buildern.
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