Live

Buildertrend logo

Buildertrend API and MCP server

buildertrend.com

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.

Endpoints
12 6 read, 6 write
Updated
How Cotlet connects your agent to Buildertrend
  1. Your agent

    Claude Code, Codex, Cursor or a script

  2. Cotlet

    MCP server and REST API · 12 endpoints

    cotlet.dev/mcp/v1

  3. Buildertrend logo

    Buildertrend

    Signed in as you on buildertrend.com

You sign in once. We never store your password.

Official API

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).

What Buildertrend's own tools do compared with Cotlet
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) · Daily Logs Overview (Buildertrend help) · Change Orders on Mobile (Buildertrend help) · Schedule Overview (Buildertrend help) · Selections and Allowances Overview (Buildertrend help)

Common use cases

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 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. Your agent calls list_jobs, list_daily_logs and create_daily_log.

  • Check the schedule across all jobs Runs: Weekly

    What is on the schedule across all my jobs next week? Your agent calls list_jobs and get_schedule.

  • Reschedule a slipped item and notify the sub

    Drywall slipped two days on the Hargrove remodel. Push it to Wednesday, tell me what moves after it, and notify Lone Star Drywall. Your agent calls list_jobs, get_schedule and update_schedule_item.

  • 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. Your agent calls list_jobs, list_change_orders, create_change_order and release_change_order.

  • 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. Your agent calls list_selections and approve_selection_choice.

Endpoints

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.

All endpoints · 12 total

missing one? request an endpoint

  • POST

    list_jobs

    read

    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.

    POST /api/v1/buildertrend/list_jobs

    Input

    Input: list_jobs
    Parameter Type Description
    status enum open, closed, presale or all. Default: open.
    search string Match job name, address or client name.
    limit integer 1 to 100. Default: 50.

    Example response

    {
      "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"
        }
      ]
    }
  • POST

    get_schedule

    read

    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.

    POST /api/v1/buildertrend/get_schedule

    Input

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

    Example response

    {
      "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"
        }
      ]
    }
  • POST

    list_daily_logs

    read

    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.

    POST /api/v1/buildertrend/list_daily_logs

    Input

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

    Example response

    {
      "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."
        }
      ]
    }
  • POST

    list_change_orders

    read

    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.

    POST /api/v1/buildertrend/list_change_orders

    Input

    Input: list_change_orders
    Parameter Type Description
    job_id required string Job ID from list_jobs.
    approval_status enum pending, approved, declined or all. Default: all.

    Example response

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

    list_selections

    read

    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.

    POST /api/v1/buildertrend/list_selections

    Input

    Input: list_selections
    Parameter Type Description
    job_id string One job, ID from list_jobs. Leave empty for all open jobs.
    status enum pending, approved, declined or all. Default: pending.

    Example response

    {
      "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"
            }
          ]
        }
      ]
    }
  • POST

    list_tasks

    read

    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.

    POST /api/v1/buildertrend/list_tasks

    Input

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

    Example response

    {
      "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
            }
          ]
        }
      ]
    }
  • POST

    create_daily_log

    write

    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.

    POST /api/v1/buildertrend/create_daily_log

    Input

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

    Example response

    {
      "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"
    }
  • POST

    create_task

    write

    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.

    POST /api/v1/buildertrend/create_task

    Input

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

    Example response

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

    update_schedule_item

    write

    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.

    POST /api/v1/buildertrend/update_schedule_item

    Input

    Input: update_schedule_item
    Parameter Type Description
    schedule_item_id required string Schedule item ID from get_schedule.
    start_date date New start date.
    duration_days integer New duration in working days.
    notify_assignees boolean Notify the assigned users and subs. Default: true.

    Example response

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

    create_change_order

    write

    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.

    POST /api/v1/buildertrend/create_change_order

    Input

    Input: create_change_order
    Parameter Type Description
    job_id required string Job ID from list_jobs.
    title required string Change order title.
    description string Scope of the change, shown to the client.
    line_items required object List of { description, cost_code, quantity, unit_cost, markup_percent }.
    deadline date Date by which the client should respond.

    Example response

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

    release_change_order

    write

    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.

    POST /api/v1/buildertrend/release_change_order

    Input

    Input: release_change_order
    Parameter Type Description
    change_order_id required string Change order ID from create_change_order or list_change_orders.
    message string Note to the client with the release.

    Example response

    {
      "change_order_id": "771204",
      "released": true,
      "approval_status": "pending"
    }
  • POST

    approve_selection_choice

    write

    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.

    POST /api/v1/buildertrend/approve_selection_choice

    Input

    Input: approve_selection_choice
    Parameter Type Description
    selection_id required string Selection ID from list_selections.
    choice_id required string Choice to approve.
    comments string Why you approve for the client, e.g. verbal OK on site.

    Example response

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

Setup

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 over MCP

  1. 1

    Create an account

    Sign up and add Buildertrend in the console. Your API key is there too.

  2. 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. 3

    Add Cotlet to your agent

    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"

    Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

  4. 4

    Ask your agent

    Prompt

    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.

    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.

Call Buildertrend over REST

  1. 1

    Export your API key

    Shell

    export COTLET_API_KEY="cotlet_..."

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

  2. 2

    Call a tool

    curl

    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"]}'

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

  3. 3

    Read the result

    Example response · create_daily_log

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

    You get plain JSON back, ready for your script. A failed call costs nothing.

Why Cotlet

Why use Cotlet for Buildertrend? Hosted, safe and kept working.

  • 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.

Alternatives

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.

Cotlet compared with a GitHub MCP server
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

For AI agents

Cotlet for Buildertrend in plain text The facts on this page in one block: status, endpoints, access, pricing, contact.

Endpoint health

verified 2h ago

  • list_jobs passing
  • get_schedule passing
  • list_daily_logs passing
  • list_change_orders passing
  • list_selections passing

+ 7 more endpoints

12/12 passing latest check self-healing

buildertrend.txt

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.
Full page as Markdown

Automations

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 to run Buildertrend automations through Cotlet, and how to schedule them
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.

Pricing & limits

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.

Cotlet plan sizes: price, monthly credits and price per credit
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.

About Cotlet

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
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
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
Contact
Questions about the company, security or an app: contact@cotlet.dev
About Cotlet

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.

Give your agent access to Buildertrend.

Request access and pick it. We review each request and email you your API key. Free 7-day trial with 5,000 credits, no card needed.