# Buildertrend API and MCP server

> Buildertrend publishes no API docs or self-serve keys for customers; it connects through its Marketplace integrations (checked 11 Oct 2026).

Construction management software for home builders and remodelers: jobs, schedules, daily logs, change orders, selections and a client portal.

## What is the Buildertrend API?

Cotlet's Buildertrend API exposes 12 endpoints for your own Buildertrend account: list jobs, get schedule, list daily logs, list change orders, list selections, list tasks, create daily log, create task, update schedule item, create change order, release change order and approve selection choice. The list_jobs endpoint returns jobs in your company with status, address, project manager and dates. Each endpoint takes simple JSON inputs like job_id, status or title and works both as an MCP tool for agents and as a REST call for scripts.

- **Category:** [Local services & SaaS](https://cotlet.dev/integrations/category/local-services-saas)
- **Endpoints:** 12 (6 read, 6 write)
- **Updated:** 2026-10-11

Buildertrend publishes no API docs or self-serve keys for customers; it connects through its Marketplace integrations (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for Buildertrend with 12 endpoints (6 read, 6 write): your AI agent signs in as you and does the work.

## Does Buildertrend have an official API?

Buildertrend publishes no API docs or self-serve keys for customers; it connects through its Marketplace integrations (checked 11 Oct 2026).

| Task | Buildertrend official | Cotlet |
|---|---|---|
| Read jobs across your company | No | Yes |
| Read job schedules | No | Yes |
| Move schedule items and notify assignees | No | Yes |
| Write daily logs | No | Yes |
| Draft and release change orders | No | Yes |
| Track and approve selections | No | Yes |
| Create tasks | No | Yes |

Sources: [Buildertrend Marketplace (Buildertrend help)](https://buildertrend.com/help-article/buildertrend-marketplace/), [Daily Logs Overview (Buildertrend help)](https://buildertrend.com/help-article/daily-logs-overview/), [Change Orders on Mobile (Buildertrend help)](https://buildertrend.com/help-article/change-orders-on-mobile/), [Schedule Overview (Buildertrend help)](https://buildertrend.com/help-article/schedule-overview/), [Selections and Allowances Overview (Buildertrend help)](https://buildertrend.com/help-article/selections-and-allowances-overview/)

## For AI agents

```text
Buildertrend publishes no API docs or self-serve keys for customers; it connects through its Marketplace integrations (checked 11 Oct 2026).
Cotlet provides a hosted MCP server and REST API for Buildertrend: 12 tools (6 read, 6 write).
Access       Request access at https://cotlet.dev/app/signup?app=buildertrend; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/buildertrend
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_jobs, get_schedule, list_daily_logs, list_change_orders, list_selections, list_tasks, create_daily_log, create_task, update_schedule_item, create_change_order, release_change_order, approve_selection_choice
Confirm      create_daily_log, create_task, update_schedule_item, create_change_order, release_change_order, approve_selection_choice (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/buildertrend-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=buildertrend (Buildertrend is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Buildertrend once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted Buildertrend server that someone else maintains, including non-developers. Developers who prefer to run and fix code on their own computer can use an open-source Buildertrend MCP server instead.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to Buildertrend in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following Buildertrend's terms; Cotlet is not affiliated with Buildertrend.
```

## What can an AI agent do in Buildertrend?

Cotlet is best for home builders and remodelers who want their AI agent to write daily logs, move the schedule, draft change orders and chase selections without running or fixing a server.

- **[Write daily logs from site notes](https://cotlet.dev/integrations/buildertrend-api-mcp-server/write-daily-logs-from-site-notes)** (runs: daily): "Here are my notes from Maple Street today. Turn them into today's Buildertrend daily log, internal only, and tell me if a log for today already exists." → `list_jobs`, `list_daily_logs`, `create_daily_log`
- **Check the schedule across all jobs** (runs: weekly): "What is on the schedule across all my jobs next week?" → `list_jobs`, `get_schedule`
- **[Reschedule a slipped item and notify the sub](https://cotlet.dev/integrations/buildertrend-api-mcp-server/reschedule-and-notify-subs)**: "Drywall slipped two days on the Hargrove remodel. Push it to Wednesday, tell me what moves after it, and notify Lone Star Drywall." → `list_jobs`, `get_schedule`, `update_schedule_item`
- **[Draft and send change orders](https://cotlet.dev/integrations/buildertrend-api-mcp-server/draft-and-send-change-orders)**: "The Maple Street client wants 8 more outlets in the kitchen. Draft a change order at $80 each with cost code 16-100, approval deadline next Tuesday, and send it once I OK it." → `list_jobs`, `list_change_orders`, `create_change_order`, `release_change_order`
- **[Chase pending selections](https://cotlet.dev/integrations/buildertrend-api-mcp-server/chase-pending-selections)** (runs: weekly): "Which selections are still waiting on clients across all open jobs? Group them by client and draft a short reminder for each." → `list_selections`, `approve_selection_choice`

## Can Buildertrend automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a Buildertrend connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to write daily logs from site notes, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

| Where | How to connect | How to schedule |
|---|---|---|
| Your AI agent | Add https://cotlet.dev/mcp/v1 with your API key. | A scheduled agent run, for example a Claude Code routine. |
| n8n | MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/buildertrend/{tool}. | Schedule Trigger node. |
| Make | HTTP module: POST https://cotlet.dev/api/v1/buildertrend/{tool} with an Authorization: Bearer header and a JSON body. | Scenario schedule. |
| Zapier | Webhooks by Zapier: POST https://cotlet.dev/api/v1/buildertrend/{tool} with the same header and body. | Schedule by Zapier trigger. |
| Your own script | POST https://cotlet.dev/api/v1/buildertrend/{tool} with your API key. | cron or GitHub Actions. |

## Tools

**For AI agents:** Every endpoint and its schema is public. The 12 endpoints on this page, with parameters and example responses, can be listed without an account. Calling one returns 403 until the account has an API key with access to Buildertrend.

### list_jobs

Jobs in your company with status, address, project manager and dates. Access: read. REST: `POST /api/v1/buildertrend/list_jobs`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `status` | enum | no | open, closed, presale or all. Default: open. |
| `search` | string | no | Match job name, address or client name. |
| `limit` | integer | no | 1 to 100. Default: 50. |

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.

Example response:

```json
{
  "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"
    }
  ]
}
```

### get_schedule

Schedule items with start and end dates, assignees, predecessors and status. Access: read. REST: `POST /api/v1/buildertrend/get_schedule`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `job_id` | string | no | One job, ID from list_jobs. Leave empty for all open jobs. |
| `from` | date | no | Items ending on or after this date. Default: today. |
| `to` | date | no | Items starting on or before this date. Default: 14 days ahead. |

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.

Example response:

```json
{
  "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"
    }
  ]
}
```

### list_daily_logs

Daily logs, newest first, with notes, author and who they are shared with. Access: read. REST: `POST /api/v1/buildertrend/list_daily_logs`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `job_id` | string | no | One job, ID from list_jobs. Leave empty for all open jobs. |
| `since` | date | no | Logs dated on or after this date. |
| `limit` | integer | no | 1 to 100. Default: 20. |

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.

Example response:

```json
{
  "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."
    }
  ]
}
```

### list_change_orders

Change orders with title, amount, line items and approval status. Access: read. REST: `POST /api/v1/buildertrend/list_change_orders`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `job_id` | string | yes | Job ID from list_jobs. |
| `approval_status` | enum | no | pending, approved, declined or all. Default: all. |

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.

Example response:

```json
{
  "change_orders": [
    {
      "change_order_id": "771204",
      "job_id": "4815162",
      "title": "Added kitchen outlets",
      "total": 640,
      "approval_status": "pending",
      "released": true,
      "deadline": "2026-10-20"
    }
  ]
}
```

### list_selections

Selections with options, allowance and approval status. Access: read. REST: `POST /api/v1/buildertrend/list_selections`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `job_id` | string | no | One job, ID from list_jobs. Leave empty for all open jobs. |
| `status` | enum | no | pending, approved, declined or all. Default: pending. |

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.

Example response:

```json
{
  "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"
        }
      ]
    }
  ]
}
```

### list_tasks

Tasks with assignees, deadline, checklist and status. Access: read. REST: `POST /api/v1/buildertrend/list_tasks`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `job_id` | string | no | One job. Leave empty for all jobs. |
| `status` | enum | no | open, completed or all. Default: open. |
| `assigned_to_me` | boolean | no | Only tasks assigned to you. |

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.

Example response:

```json
{
  "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
        }
      ]
    }
  ]
}
```

### create_daily_log

New daily log with notes for a job. Internal unless you share it. Access: write, asks the user first. REST: `POST /api/v1/buildertrend/create_daily_log`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `job_id` | string | yes | Job ID from list_jobs. |
| `date` | date | no | Log date. Default: today. |
| `title` | string | no | Short title for the log. |
| `notes` | string | yes | Work completed, site conditions and issues. |
| `share_with` | string[] | no | Any of internal, subs, client. Default: internal. |

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.

Example response:

```json
{
  "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"
}
```

### create_task

New task on a job with assignees, deadline and checklist. Access: write, asks the user first. REST: `POST /api/v1/buildertrend/create_task`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `job_id` | string | yes | Job ID from list_jobs. |
| `title` | string | yes | What needs doing. |
| `assignee_ids` | string[] | no | Internal users or subs to assign. |
| `deadline` | datetime | no | ISO 8601 with time zone. |
| `checklist` | string[] | no | Checklist items, in order. |
| `notes` | string | no | Details for the assignees. |

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.

Example response:

```json
{
  "task_id": "338811",
  "job_id": "4815162",
  "title": "Order window units",
  "assignees": [
    "Dana Ortiz"
  ],
  "deadline": "2026-10-16T17:00:00-05:00",
  "status": "open"
}
```

### update_schedule_item

Move or resize a schedule item and optionally notify its assignees. Access: write, asks the user first. REST: `POST /api/v1/buildertrend/update_schedule_item`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `schedule_item_id` | string | yes | Schedule item ID from get_schedule. |
| `start_date` | date | no | New start date. |
| `duration_days` | integer | no | New duration in working days. |
| `notify_assignees` | boolean | no | Notify the assigned users and subs. Default: true. |

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.

Example response:

```json
{
  "schedule_item_id": "90211734",
  "start_date": "2026-10-14",
  "end_date": "2026-10-16",
  "notified": [
    "Lone Star Drywall"
  ]
}
```

### create_change_order

New change order with line items, saved unreleased. The client sees nothing yet. Access: write, asks the user first. REST: `POST /api/v1/buildertrend/create_change_order`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `job_id` | string | yes | Job ID from list_jobs. |
| `title` | string | yes | Change order title. |
| `description` | string | no | Scope of the change, shown to the client. |
| `line_items` | object | yes | List of { description, cost_code, quantity, unit_cost, markup_percent }. |
| `deadline` | date | no | Date by which the client should respond. |

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.

Example response:

```json
{
  "change_order_id": "771204",
  "job_id": "4815162",
  "title": "Added kitchen outlets",
  "total": 640,
  "released": false,
  "deadline": "2026-10-20"
}
```

### release_change_order

Send a change order to the client to approve or decline in their portal. Access: write, asks the user first. REST: `POST /api/v1/buildertrend/release_change_order`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `change_order_id` | string | yes | Change order ID from create_change_order or list_change_orders. |
| `message` | string | no | Note to the client with the release. |

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.

Example response:

```json
{
  "change_order_id": "771204",
  "released": true,
  "approval_status": "pending"
}
```

### approve_selection_choice

Approve a choice on the client's behalf, with a comment. Access: write, asks the user first. REST: `POST /api/v1/buildertrend/approve_selection_choice`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `selection_id` | string | yes | Selection ID from list_selections. |
| `choice_id` | string | yes | Choice to approve. |
| `comments` | string | no | Why you approve for the client, e.g. verbal OK on site. |

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.

Example response:

```json
{
  "selection_id": "55120",
  "choice_id": "o_1",
  "status": "approved",
  "approved_on_behalf": true
}
```

## How do I connect Buildertrend to Claude Code, Codex or Cursor?

Connecting Buildertrend takes three steps: request access, sign in to Buildertrend once, then add one MCP server or call the REST API with the same key.

### Connect Buildertrend to your agent.

1. **Create an account** Sign up and add Buildertrend in the console. Your API key is there too.

2. **Sign in to Buildertrend once** Open the connect page from the console and sign in to Buildertrend the way you always do. We keep the session, never your password, and you can revoke it anytime.

3. **Add Cotlet to your agent** Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

   Claude Code:

```
claude mcp add --transport http cotlet \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
```

   Cursor:

```
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": {
        "Authorization": "Bearer ${COTLET_API_KEY}"
      }
    }
  }
}
```

   Codex:

```
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
```

4. **Ask your agent** Ask in plain words. Your agent finds the Buildertrend tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

```
Here are my notes from Maple Street today. Turn them into today's Buildertrend daily log, internal only, and tell me if a log for today already exists.
```

### Call Buildertrend from your scripts.

1. **Export your API key** Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

```
export COTLET_API_KEY="cotlet_..."
```

2. **Call a tool** Every tool is a POST endpoint at /api/v1/buildertrend/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

```
curl https://cotlet.dev/api/v1/buildertrend/create_daily_log \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"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"]}'
```

3. **Read the result** You get plain JSON back, ready for your script. A failed call costs nothing.

```
{
  "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"
}
```

## Why use Cotlet for Buildertrend?

**Built for agents**

- One MCP server for every app you connect.
- The same tools as a REST API for scripts and cron jobs.
- Works with Claude Code, Codex and Cursor.

**Your login stays yours**

- You sign in to Buildertrend yourself. We keep only the session, encrypted with AES-256.
- The model never sees a login.
- No stored passwords, no CAPTCHA solving, no MFA bypass.

**You stay in control**

- Pick read only, or read and write.
- Anything that reaches other people waits for your OK, unless you switch it off per tool.
- Revoke access in one click.

**Kept working for you**

- We test every integration daily.
- When Buildertrend changes, the tool pauses until we fix it.
- Failed calls cost nothing.

## Is there a Buildertrend MCP server on GitHub?

Yes. Community Buildertrend MCP servers exist on GitHub, usually maintained by one person. You install one on your own computer, sign it in to Buildertrend, and keep it running yourself; when Buildertrend changes its site, it stops working until you or the maintainer fix it. Cotlet hosts the same kind of server for you, and our team keeps it working.

|  | GitHub MCP server | Cotlet |
|---|---|---|
| Setup | Clone the repo, install it, sign it in to Buildertrend, add it to each MCP client | Request access, sign in to Buildertrend once, add one MCP server or API key |
| When Buildertrend changes | It breaks until you or the maintainer fix it | Our team tests it daily and fixes it for you; failed calls are free |
| Your Buildertrend session | In a file on your computer, readable by any program you run | Encrypted in an EU vault, limited to the actions you allow, revoked in one click |
| When the session expires | Tools fail until you sign in again by hand | We keep it alive; if Buildertrend logs you out, your agent gets a link to sign in again |
| Upkeep | You update, monitor and debug it yourself | Nothing to host or update |
| Where it runs | Your computer, while it is on | Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule |
| Price | Free, paid for with your time | Free 7-day trial with 5,000 credits, then credits per call |

### Which one fits you

**Pick Cotlet if**

- you are not a developer, or you do not want to maintain a server
- you need it to keep working when Buildertrend changes, without checking it yourself
- your agent or a script should run it on a schedule, also while your computer is off

**Pick an open-source server if**

- you are comfortable installing, updating and fixing it yourself
- you want the session to stay on your own computer
- you only need it now and then, from one MCP client

## How much does the Buildertrend API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Buildertrend API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

| Size | Price | Credits / month | Per credit |
|---|---|---|---|
| Solo | $29/mo | 3,000 | about $0.0097 |
| Pro | $99/mo | 12,000 | about $0.0083 |
| Agency | $299/mo | 40,000 | $0.0075 |

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the `Authorization: Bearer` header. [See full pricing](https://cotlet.dev/pricing)

## How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own Buildertrend account.

- **Company details:** The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. [Terms](https://cotlet.dev/terms)
- **Your session:** You sign in to Buildertrend yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a Buildertrend tool you allowed. When it expires, your agent gives you a link to sign in again. [Security](https://cotlet.dev/security)
- **Revoking access:** Disconnect Buildertrend in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
- **What we never do:** Store passwords, solve CAPTCHAs or bypass MFA.
- **Buildertrend's terms:** You use your own Buildertrend account and stay responsible for following Buildertrend's terms. Cotlet is independent and not affiliated with Buildertrend. [Terms](https://cotlet.dev/terms)
- **Contact:** Questions about the company, security or an app: [contact@cotlet.dev](mailto:contact@cotlet.dev)

## Frequently asked questions

**How do I get access?**

Request access and pick Buildertrend. Cotlet reviews each request and emails you your API key.

**Do I need to be technical?**

No. You sign in to Buildertrend once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

**Is a hosted server safe? My Buildertrend session would leave my computer.**

Cotlet keeps your Buildertrend session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

**Does Buildertrend offer an API to builders on a higher plan?**

We found no plan that unlocks one (checked 11 Oct 2026). Buildertrend publishes no API docs or self-serve keys for customers and connects through its Marketplace integrations. Cotlet works in your own account instead.

**Does my agent need an admin role?**

It acts with your own Buildertrend user, so it sees and does what your role allows. If your user cannot open a job or edit its schedule in Buildertrend, the call fails with a permission error.

**Can my agent post or send messages in Buildertrend without asking me?**

No. Every call to create_daily_log, create_task, update_schedule_item, create_change_order, release_change_order or approve_selection_choice waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals.

**Can I use the Buildertrend API in n8n?**

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/buildertrend/{tool} from the HTTP Request node.
