BuildBook API and MCP server Let your AI agent keep the remodel paperwork moving.

BuildBook publishes no public API and no MCP server (checked 13 Nov 2026). Cotlet runs a hosted BuildBook MCP server with 30 tools that ChatGPT, Claude and your scripts use in your own BuildBook account. Estimates, change orders, invoices and anything a homeowner sees wait for your OK.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with BuildBook
BuildBook logo BuildBook Cloud Browser

30 tools Read and write

Remodeling office work

What can your AI agent do in BuildBook? From the first lead to the last invoice of a remodel.

  • Turn a new lead into a draft estimate

  • List overdue tasks across active jobs

  • Post today's daily log for the homeowner

  • Prepare the weekly job cost report

  • Send a change order or selection for approval

  • Draft the next progress invoice

No public API, no MCP

Does BuildBook have an MCP server or an API? The official BuildBook routes, checked 13 November 2026.

BuildBook publishes no public API. Its site and Help Center show no developer documentation, API keys or API pricing, and no BuildBook MCP server or official ChatGPT or Claude connector was verified.

  • The BuildBook Help Center documents browser workflows: opportunities, estimates, projects, schedules, tasks, daily logs, financials, selections, people and the portfolio.
  • Its one documented integration is QuickBooks Online, which syncs bills, expenses and invoices whose cost codes are matched.
  • Clients follow a project on their own Client Dashboard; they approve change orders and selections from an email or in BuildBook.
Official BuildBook routes, working by hand and Cotlet compared
What you need BuildBook officialBy handCotlet
Ask ChatGPT or Claude to do the work No MCP server or connector Copy and paste Hosted MCP server
Estimates, change orders and invoices No public API One screen at a time 30 tools, writes after your OK
Bills and expenses into accounting QuickBooks Online sync Typed in by hand Entered in BuildBook; the sync stays yours
Run from n8n or a script No public API Manual only REST, same key

Checked 13 Nov 2026. Sources: BuildBook · BuildBook pricing · BuildBook Help Center · Help: Connect BuildBook to QuickBooks Online · Help: Roles and Permissions in BuildBook · Help: Pro Dashboard · Help: Client Dashboard · Help: How to Create an Opportunity · Help: Create and Edit an Estimate · Help: Share Your Estimate · Help: Convert an Opportunity into a Project · Help: Create and Manage Projects · Help: Using Daily Logs · Help: Create a Task · Help: Build Your Schedule · Help: Working with Dependencies · Help: Managing Financials · Help: Create Bills & Expenses · Help: Change Orders · Help: Change Order Approvals · Help: Create Invoices · Help: Send Selection for Approval · Help: Setting Up Your Portfolio

Set up once

How does the BuildBook MCP server work? The BuildBook MCP server by Cotlet: your agent works in your own BuildBook account.

  1. 1Log in to BuildBook

    Once, in a browser we host for you.

  2. 2Connect your AI agent

    One address in its settings.

  3. 3Hand it the office work

    Draft the estimate, then approve it.

Your agent works in your own signed-in Cloud Browser. Writes, and anything a homeowner, sub or vendor would see, wait for your OK. Who can see your session

Any MCP client

How to connect BuildBook to your AI agent

  1. 1

    Sign in to BuildBook in a Cloud Browser. Open app.buildbook.co in your Cotlet Cloud Browser and log in with your own BuildBook user.

  2. 2

    Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.

  3. 3

    Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.

BuildBook uses the shared address https://cotlet.dev/mcp/v1, the same one as every other app you turn on, so a single connector reaches them all. Enabled BuildBook after connecting? Refresh the connector to load the 30 BuildBook tools.

ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Claude
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
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: buildbook_read
10 read, 20 write

All 30 BuildBook MCP tools

Grouped from the owner workflows of the BuildBook Help Center. Read tools run at once. Write tools take an `action`; `list` and `get` only read, the other actions change BuildBook and ask first.

Dashboards, search and chat6

Read only. The Pro Dashboard, a project's Up Next and activity feed, the client's view, Global Search and project chat.

  • view_pro_dashboard Read the Pro Dashboard: Up Next, Tasks and Latest Activity across your projects and opportunities. read

    Returns the snapshot BuildBook shows on the Pro Dashboard for your user: what is coming up, your tasks and the latest activity on every project and opportunity you can open. Nothing is changed.

    MCP callbuildbook_read → view_pro_dashboard

    REST endpointGET https://cotlet.dev/api/v1/buildbook/pro-dashboards/view

    Parameters

    No parameters.

    Example response

    {
      "up_next": [
        {
          "item": "Tile install",
          "type": "Task",
          "project": "Maple Street bath remodel",
          "due": "2026-11-16"
        }
      ],
      "tasks_open": 6,
      "latest_activity": [
        {
          "project": "Maple Street bath remodel",
          "event": "Daily log posted"
        }
      ]
    }
  • view_project_activity Read a project's Home tab: Up Next items and the Project Activity Feed. read

    Up Next lists phases, tasks, change orders, selection categories and payments due within the week, grouped as Overdue, Today and This Week. The feed lists what everyone did on the project: new tasks, uploaded files, selections, comments and chats.

    MCP callbuildbook_read → view_project_activity

    REST endpointGET https://cotlet.dev/api/v1/buildbook/project-activities/view

    Parameters

    Parameters: view_project_activity
    NameTypeDescription
    project string required string Project name, as manage_projects `list` returns it.
    mine boolean boolean True for My Items only; the default is All Items.

    Example input

    {
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "overdue": [
        {
          "item": "Vanity selection",
          "type": "Selection Category"
        }
      ],
      "today": [],
      "this_week": [
        {
          "item": "Tile install",
          "type": "Task"
        }
      ],
      "activity": [
        {
          "who": "Site lead",
          "event": "Uploaded 4 files"
        }
      ]
    }
  • view_client_dashboard Read a project as your client sees it on their BuildBook Client Dashboard. read

    The Client Dashboard shows the daily logs you shared as Updates, the schedule in Calendar View with every phase, and the budget, selections and tasks you gave the client access to. Use it to check what a homeowner sees before a call.

    MCP callbuildbook_read → view_client_dashboard

    REST endpointGET https://cotlet.dev/api/v1/buildbook/client-dashboards/view

    Parameters

    Parameters: view_client_dashboard
    NameTypeDescription
    project string required string Project name, as manage_projects `list` returns it.

    Example input

    {
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "updates": 3,
      "phases": [
        "Demolition",
        "Rough-in",
        "Tile"
      ],
      "shared_tasks": 2,
      "selections": [
        "Vanity",
        "Floor tile"
      ]
    }
  • search_projects Search project names, task names, opportunities and logs with BuildBook's Global Search. read

    Archived projects are included. Global Search matches task names but not assignees, and does not search budget items, selection items, chats, comments, or an opportunity's client name and address. New items become searchable within a few minutes.

    MCP callbuildbook_read → search_projects

    REST endpointGET https://cotlet.dev/api/v1/buildbook/projects/search

    Parameters

    Parameters: search_projects
    NameTypeDescription
    query string required string Words to search for.

    Example input

    {
      "query": "query"
    }

    Example response

    {
      "query": "vanity",
      "results": [
        {
          "type": "Task",
          "title": "Order vanity",
          "project": "Maple Street bath remodel"
        },
        {
          "type": "Opportunity",
          "title": "Oak Court vanity swap"
        }
      ]
    }
  • read_project_chat Read a project's Team Chat or Client Chat and the comments on its items. read

    BuildBook keeps a Team Chat and a Client Chat per project; clients only see the Client Chat. The tool reads messages and does not post, so nobody is notified.

    MCP callbuildbook_read → read_project_chat

    REST endpointGET https://cotlet.dev/api/v1/buildbook/project-chats/read

    Parameters

    Parameters: read_project_chat
    NameTypeDescription
    project string required string Project name, as manage_projects `list` returns it.
    room string string `team` or `client`. Defaults to `team`.

    Example input

    {
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "room": "client",
      "messages": [
        {
          "from": "Example Homeowner",
          "text": "Can we see the vanity options this week?"
        }
      ]
    }
  • list_people List your BuildBook People with name, type, company and role. read

    People are created when you invite someone to a project, when an opportunity gets client details, or by hand. Pending invitees show as pending until they accept.

    MCP callbuildbook_read → list_people

    REST endpointGET https://cotlet.dev/api/v1/buildbook/peoples

    Parameters

    Parameters: list_people
    NameTypeDescription
    role string string Filter: `Pro Team`, `Collaborator` or `Client`.

    Example response

    {
      "people": [
        {
          "name": "Example Homeowner",
          "type": "Client",
          "role": "Client"
        },
        {
          "name": "Sample Tile Co",
          "type": "Tile Setter",
          "role": "Collaborator",
          "pending": true
        }
      ]
    }

Leads and estimates5

From a new opportunity to the proposal the homeowner reads. Items come from your Price Book with their cost codes.

  • manage_opportunities List or create opportunities, or convert one into a project. writeAsks first

    Creating an opportunity with client details also creates that client in People. Converting carries over the address, project type, the approved estimate, its selections and the payment schedule; tasks, notes, client info, files and the planned schedule stay behind. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_opportunities

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/opportunities/manage

    Parameters

    Parameters: manage_opportunities
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `convert_to_project`. `list` and `get` only read.
    title string string Opportunity title, for example the address or the type of remodel.
    client object object For `create`: first_name and last_name (required), email and phone (optional).
    address string string Job address.
    estimate_version string string For `convert_to_project`: the estimate version to carry over, or none.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "opportunity": "Maple Street bath remodel",
      "client": "Example Homeowner",
      "stage": "New",
      "saved": true
    }
  • manage_estimates List estimates, create or edit one, or share it with the client as a proposal. writeAsks first

    `list` reads the Global Estimates page (Pro Team Admins and Owners): name, stage, status (Draft, Published, Approved, Declined), last update and total. Items without a cost code fall under 99-000 Uncategorized. Copying an estimate leaves its payment schedule behind. `share` publishes the proposal to your client. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_estimates

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/estimates/manage

    Parameters

    Parameters: manage_estimates
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `update`, `share`. `list` and `get` only read.
    opportunity string string The opportunity the estimate belongs to.
    source string string For `create`: `price_book`, `copy` (from another estimate) or `scratch`.
    items array array Name, cost_code, type, quantity and unit_price per item.
    visibility object object For `share`: which categories, line items, descriptions, prices and quantities the client sees, and `summary` or `detailed` totals.

    Example input

    {
      "action": "create",
      "opportunity": "Maple Street bath remodel",
      "source": "price_book",
      "items": [
        {
          "name": "Demolition",
          "cost_code": "02-100",
          "type": "Labor",
          "quantity": 1,
          "unit_price": 1800
        },
        {
          "name": "Floor and wall tile",
          "cost_code": "09-300",
          "type": "Material",
          "quantity": 85,
          "unit_price": 22
        },
        {
          "name": "Vanity install",
          "cost_code": "06-400",
          "type": "Labor",
          "quantity": 1,
          "unit_price": 950
        }
      ]
    }

    Example response

    {
      "opportunity": "Maple Street bath remodel",
      "estimate": "Version 1",
      "status": "Draft",
      "items": 3,
      "total": 4620
    }
  • configure_estimate_defaults Set the default cover image, team info, About Us, contract and scope of work for new estimates. writeAsks first

    Defaults apply to new estimates only; estimates you already made keep their text. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → configure_estimate_defaults

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/estimate-defaults/configure

    Parameters

    Parameters: configure_estimate_defaults
    NameTypeDescription
    fields object object cover_image_url, about_us, contract, scope_of_work, in BuildBook's own section names.

    Example response

    {
      "about_us": "Family-owned remodelers since 2009.",
      "contract": "Standard remodel agreement",
      "saved": true
    }
  • manage_price_book List or add Price Book items and cost codes, or export cost codes for QuickBooks Online matching. writeAsks first

    Price Book items carry a cost code and feed estimates and budgets. Bills, expenses and invoices with unmatched cost codes do not push to QuickBooks Online; the match itself is done in QuickBooks and BuildBook's sync settings, which no tool changes. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_price_book

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/price-book/manage

    Parameters

    Parameters: manage_price_book
    NameTypeDescription
    action string required string One of `list`, `add_item`, `add_cost_code`, `export_cost_codes`. `list` and `export_cost_codes` only read.
    item object object For `add_item`: name, cost_code, type, unit and price.
    cost_code object object For `add_cost_code`: category number (up to 6 digits), category name, code number and title.
    unmatched_only boolean boolean For `export_cost_codes`.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "cost_codes": [
        {
          "code": "02-100",
          "title": "Demolition"
        },
        {
          "code": "09-300",
          "title": "Tile"
        }
      ],
      "unmatched": 1
    }
  • manage_tax_rates List, add or set the default tax rate for estimates and budgets. writeAsks first

    The default applies to new budgets and estimates. Until you set one, the default is Do Not Tax. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_tax_rates

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/tax-rates/manage

    Parameters

    Parameters: manage_tax_rates
    NameTypeDescription
    action string required string One of `list`, `add`, `set_default`. `list` only reads.
    name string string Tax name.
    rate number number One rate; for a combined rate, enter the sum.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "taxes": [
        {
          "name": "County sales tax",
          "rate": 7.25,
          "default": true
        }
      ]
    }

Projects, schedules and tasks10

Create the project, lay out phases and dependencies, assign tasks and keep the daily log and files current.

  • manage_projects List projects, create one or change its settings. writeAsks first

    Most tools take a project, so `list` is usually the first call. A project can start from an opportunity with an approved proposal or from a template; unchecked working days are left out of the schedule. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_projects

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/projects/manage

    Parameters

    Parameters: manage_projects
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `update`. `list` and `get` only read.
    project string string Project name, for `get` and `update`.
    fields object object name, address, type, working_days, template, start_date and opportunity.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "type": "Bathroom Remodel",
      "address": "14 Maple Street, Springfield",
      "saved": true
    }
  • manage_project_templates List templates, save a project as a template, or add one from the Template Gallery. writeAsks first

    A template copies tasks, schedule, financials, selections and files; statuses, comments, chats and users are reset, and chat, logs and the client dashboard are not included. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_project_templates

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/project-templates/manage

    Parameters

    Parameters: manage_project_templates
    NameTypeDescription
    action string required string One of `list`, `create_from_project`, `add_from_gallery`. `list` only reads.
    project string string For `create_from_project`.
    gallery string string For `add_from_gallery`: New Construction, Kitchen Remodel or Bathroom Remodel.
    keep_assignments boolean boolean Keep task assignments in the template.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "template": "Bathroom remodel, standard",
      "from": "Maple Street bath remodel",
      "saved": true
    }
  • manage_schedule Add or change phases and scheduled tasks, or set how dependencies move the schedule. writeAsks first

    Phases are shared with clients automatically. In Auto mode, moving a predecessor reschedules its successors and respects non-working days; Fixed and Ignore leave them in place. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_schedule

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/schedule/manage

    Parameters

    Parameters: manage_schedule
    NameTypeDescription
    action string required string One of `add_phase`, `update_phase`, `set_dependency_mode`. Every action writes.
    project string required string Project name, as manage_projects `list` returns it.
    phase string string Phase name, required with a date range.
    start string string ISO date.
    end string string ISO date.
    depends_on string string Predecessor phase or task.
    mode string string For `set_dependency_mode`: `auto`, `fixed` (the default) or `ignore`.

    Example input

    {
      "action": "action",
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "phase": "Tile",
      "start": "2026-11-16",
      "end": "2026-11-19",
      "depends_on": "Rough-in",
      "saved": true
    }
  • view_schedule Read one project's schedule, or the Global Schedule across projects and active opportunities. read

    A project schedule has phases (shared with clients) and tasks (not shared by default), each with dates and dependencies. The Global Schedule shows every active project you are part of plus opportunities with a Planned Schedule.

    MCP callbuildbook_read → view_schedule

    REST endpointGET https://cotlet.dev/api/v1/buildbook/schedules/view

    Parameters

    Parameters: view_schedule
    NameTypeDescription
    project string string Project name. Leave empty for the Global Schedule.
    types array array Global Schedule filter: Phases, Tasks, Selections, Payments, Change Orders.

    Example response

    {
      "project": "Maple Street bath remodel",
      "phases": [
        {
          "name": "Demolition",
          "start": "2026-11-09",
          "end": "2026-11-10",
          "status": "complete"
        },
        {
          "name": "Tile",
          "start": "2026-11-16",
          "end": "2026-11-19",
          "status": "incomplete"
        }
      ]
    }
  • manage_tasks List, create, assign, copy, bulk edit or share a project's tasks. writeAsks first

    Assignees get an email once they have accepted the project invite. Copied tasks are added beside the existing ones, never over them. Bulk updates change status, assignees or client visibility, or delete. A public link lets anyone with it read the task. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_tasks

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/tasks/manage

    Parameters

    Parameters: manage_tasks
    NameTypeDescription
    action string required string One of `list`, `create`, `update`, `assign`, `copy_from`, `bulk_update`, `share`. `list` only reads.
    project string required string Project name, as manage_projects `list` returns it.
    title string string Task title, the only required field for `create`.
    assignees array array Project members, pending invitees or No Access contacts.
    due string string ISO date or date range. Only tasks with a due date appear on the schedule.
    status string string Not Started, In Progress, On Hold, Completed, or your own statuses.
    source_project string string For `copy_from`: the project or template to copy tasks from.
    share string string For `share`: `client` or `public_link`.

    Example input

    {
      "action": "action",
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "task": "Order vanity",
      "assignees": [
        "Office"
      ],
      "due": "2026-11-14",
      "status": "In Progress",
      "saved": true
    }
  • manage_task_statuses List, add, rename or delete the task statuses used across all projects. writeAsks first

    A status change applies to every project and adds or renames a column in the Card View. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_task_statuses

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/task-statuses/manage

    Parameters

    Parameters: manage_task_statuses
    NameTypeDescription
    action string required string One of `list`, `add`, `rename`, `delete`. `list` only reads.
    status string string Status name.
    new_name string string For `rename`.
    move_to string string For `delete`: the status that takes its tasks.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "statuses": [
        "Not Started",
        "In Progress",
        "Waiting on Client",
        "On Hold",
        "Completed"
      ]
    }
  • manage_daily_logs Read a project's daily logs, post a new one or share it with the client. writeAsks first

    A posted log is visible to team members and collaborators with access to Logs. Shared logs appear on the client's Updates tab. The agent writes only what you gave it. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_daily_logs

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/daily-logs/manage

    Parameters

    Parameters: manage_daily_logs
    NameTypeDescription
    action string required string One of `list`, `create`, `share_with_client`. `list` only reads.
    project string required string Project name, as manage_projects `list` returns it.
    date string string ISO date. Defaults to today; a past date backlogs the entry.
    entry string string Weather, site condition and progress, in your words.
    file_urls array array Photos or documents to attach, up to 10 per upload.

    Example input

    {
      "action": "action",
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "date": "2026-11-13",
      "entry": "Cement board up in the shower. Tile starts Monday.",
      "shared_with_client": false,
      "saved": true
    }
  • manage_project_files List a project's files and folders, upload files or make a folder. writeAsks first

    Files are visible to your Pro Team and collaborators with Everything access by default; sharing with clients is a separate choice in BuildBook. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_project_files

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/project-files/manage

    Parameters

    Parameters: manage_project_files
    NameTypeDescription
    action string required string One of `list`, `upload`, `create_folder`. `list` only reads.
    project string required string Project name, as manage_projects `list` returns it.
    file_urls array array For `upload`: links the Cloud Browser downloads from, up to 10 per upload.
    folder string string Folder name.

    Example input

    {
      "action": "action",
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "folder": "Plans",
      "uploaded": [
        "Bath layout rev B.pdf"
      ]
    }
  • invite_people Invite Pro Team members to your account, or collaborators and clients to a project. writeAsks first

    BuildBook emails each person a link to join. Pro Team invitations need a Team or Business plan, and a team member must accept before you can add them to a project. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → invite_people

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/people/invite

    Parameters

    Parameters: invite_people
    NameTypeDescription
    scope string required string `team` (account level) or `project`.
    project string string For `project`.
    people array array Email, and role: Admin or Member for the team; Pro Team Member, Collaborator or Client for a project.

    Example input

    {
      "scope": "scope"
    }

    Example response

    {
      "scope": "project",
      "project": "Maple Street bath remodel",
      "invited": [
        {
          "email": "tile@example.com",
          "role": "Collaborator"
        }
      ]
    }

Job costs5

Budget lines, bills, expenses and imported card transactions, with the Financials summary and the budget report.

  • view_project_financials Read a project's Financials summary: Cost, Estimated and Price, with change orders, credits and paid invoices. read

    Cost totals the bills and expenses. Price includes items, selections, markup, taxes and management fees; approved change orders and credits are added or subtracted below it, and paid invoices are shown beneath the total price.

    MCP callbuildbook_read → view_project_financials

    REST endpointGET https://cotlet.dev/api/v1/buildbook/project-financials/view

    Parameters

    Parameters: view_project_financials
    NameTypeDescription
    project string required string Project name, as manage_projects `list` returns it.

    Example input

    {
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "cost": 3120,
      "estimated": 4620,
      "price": 5180,
      "change_orders_approved": 560,
      "invoices_paid": 2310
    }
  • manage_budget Read a project's Budget tab or add items from the Price Book or from scratch. writeAsks first

    A budget can also come from converting an estimate. An item of type Selection becomes a selection category with an allowance; deleting it deletes the category and its items. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_budget

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/budget/manage

    Parameters

    Parameters: manage_budget
    NameTypeDescription
    action string required string One of `list`, `add_from_price_book`, `add_item`. `list` only reads.
    project string required string Project name, as manage_projects `list` returns it.
    items array array Name, cost_code, type (for example Labor, Material or Selection), quantity, unit and price.

    Example input

    {
      "action": "action",
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "items": [
        {
          "name": "Demolition",
          "cost_code": "02-100",
          "price": 1800
        },
        {
          "name": "Floor and wall tile",
          "cost_code": "09-300",
          "price": 1870
        }
      ]
    }
  • manage_bills_and_expenses List bills and expenses, add one split across budget lines, or import card transactions. writeAsks first

    An expense needs a vendor, the date paid and the cost. Unassociated costs do not count against a budget line. `list` reads the global Bills & Expenses page, limited to projects where you have financial permissions. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_bills_and_expenses

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/bills-and-expenses/manage

    Parameters

    Parameters: manage_bills_and_expenses
    NameTypeDescription
    action string required string One of `list`, `add_bill`, `add_expense`, `import_transactions`. `list` only reads.
    projects array array One project, or several to split across (Admins and Owners).
    vendor string string Vendor or payee; a new name creates a vendor.
    date string string ISO date; for an expense, the date paid.
    lines array array budget_line and cost per line; the rest stays Unassociated Cost.
    csv_url string string For `import_transactions`: a CSV with account, payee, received, spent, date and description, positive values only.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "type": "Expense",
      "vendor": "Example Supply",
      "date": "2026-11-12",
      "lines": [
        {
          "budget_line": "Floor and wall tile",
          "cost": 640
        }
      ],
      "total": 640,
      "saved": true
    }
  • export_budget_report Export a project's budget report with the sections you choose, or its budget as a spreadsheet. read

    The report carries your logo, the project name and address. Nothing in BuildBook changes; the agent returns the file.

    MCP callbuildbook_read → export_budget_report

    REST endpointGET https://cotlet.dev/api/v1/buildbook/budget-reports/export

    Parameters

    Parameters: export_budget_report
    NameTypeDescription
    project string required string Project name, as manage_projects `list` returns it.
    sections array array Summary, Budget, Selections, Change Orders, Credits, Payments, Bills & Expenses.
    format string string `pdf` or `excel`.

    Example input

    {
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "format": "pdf",
      "sections": [
        "Summary",
        "Change Orders"
      ],
      "file": "Maple Street bath remodel budget.pdf"
    }
  • manage_vendors List vendors, add one, or update its details and notes. writeAsks first

    Vendors are businesses you buy from, kept apart from People. Bills and expenses point at them, so add a supplier here first. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_vendors

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/vendors/manage

    Parameters

    Parameters: manage_vendors
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `update`. `list` and `get` only read.
    name string string Business name, for example a lumberyard or supplier.
    fields object object category, phone, email, address and notes.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "name": "Example Supply",
      "category": "Tile and stone",
      "email": "orders@example.com",
      "saved": true
    }

Client approvals and billing3

Everything here reaches the homeowner or changes what they pay. Drafting and sending are separate actions.

  • manage_change_orders List change orders, create one with line items, request client approval or mark it approved. writeAsks first

    Statuses are Draft, Pending, Approved and Declined. `request_approval` emails the client a link with Approve and Decline buttons; `mark_approved` records a verbal approval. Approved change orders add to the project price. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_change_orders

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/change-orders/manage

    Parameters

    Parameters: manage_change_orders
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `request_approval`, `mark_approved`. `list` and `get` only read.
    project string required string Project name, as manage_projects `list` returns it.
    title string string Short name of the change.
    description string string What changes in the work.
    items array array Name, cost_code, quantity, unit_price, markup and tax per line.

    Example input

    {
      "action": "action",
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "change_order": "Heated floor mat",
      "total": 560,
      "status": "Pending",
      "sent_to": "Example Homeowner"
    }
  • manage_selections List selections, add a category or option, or send a selection to the client for approval. writeAsks first

    Sending for approval emails and notifies the client, sets the status to Pending and locks the description and photos until the client approves or declines. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_selections

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/selections/manage

    Parameters

    Parameters: manage_selections
    NameTypeDescription
    action string required string One of `list`, `create_category`, `add_option`, `request_approval`, `mark_approved`. `list` only reads.
    project string required string Project name, as manage_projects `list` returns it.
    category string string Selection category, for example Vanity.
    allowance number number Allowance for the category.
    option object object For `add_option`: name, price and description.
    due string string ISO due date of the category.

    Example input

    {
      "action": "action",
      "project": "project"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "category": "Vanity",
      "allowance": 1200,
      "options": 2,
      "approval": "Pending"
    }
  • manage_invoices List invoices, create a draft, change its status or send it to the client. writeAsks first

    `list` reads the global Invoices page with its Draft, Invoiced, Outstanding, Overdue and Paid totals. Only Draft invoices can be edited. A sent invoice has reached your client; the agent cannot pull it back. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_invoices

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/invoices/manage

    Parameters

    Parameters: manage_invoices
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `set_status`, `send`. `list` and `get` only read.
    project string string Project the invoice belongs to.
    description string string What the invoice is for.
    items array array Description and amount per line.
    status string string Draft, Open, Paid or Void. Overdue is set by BuildBook.
    send_by string string For `send`: `email` or `link`.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "project": "Maple Street bath remodel",
      "invoice": "Progress payment, tile",
      "status": "Draft",
      "total": 2310,
      "sent": false
    }

Portfolio1

Your public page for leads: headline, collections of project photos, services and testimonials.

  • manage_portfolio Edit your public Portfolio: headline, featured image, collections, services, testimonials and contact details. writeAsks first

    The Portfolio is public, and its contact form creates opportunities for you. BuildBook asks for a featured image at least 1200 pixels wide; sections left blank do not show. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildbook_write → manage_portfolio

    REST endpointPOST https://cotlet.dev/api/v1/buildbook/portfolio/manage

    Parameters

    Parameters: manage_portfolio
    NameTypeDescription
    action string required string One of `get`, `update`, `create_collection`, `add_photos`, `feature_collections`. `list` and `get` only read.
    fields object object headline (up to 100 words), featured_image_url, services, testimonials, social links.
    collection string string Collection name and description.
    photo_urls array array For `add_photos`: up to 10 per upload.
    featured array array For `feature_collections`: up to five collections; the first is featured.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "headline": "Kitchens and baths, built to last",
      "collections": [
        "Maple Street bath",
        "Oak Court kitchen"
      ],
      "saved": true
    }
Encrypted, revocable

Who can see my BuildBook session, and how do I revoke it?

  • What we store

    Your signed-in BuildBook browser profile, AES-256-GCM encrypted, in Finland. Never your password.

  • What your agent gets

    The 30 BuildBook tools. The session cookie stays in the Cloud Browser.

  • What the session sees

    The projects and financials your BuildBook role and project permissions open. Global Estimates and Invoices need an Admin or Owner.

  • What no tool touches

    Account settings, roles and permissions, notifications, and the QuickBooks Online connection and sync.

  • If BuildBook signs you out

    You log in again yourself, in the same Cloud Browser.

  • How to cut access

    Disable BuildBook for agents, reset the browser, or change your BuildBook password.

You type your BuildBook password yourself; the agent only uses the session that login leaves behind. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results).

We keep it working

What happens when BuildBook changes? The tools use the same BuildBook screens your office uses.

BuildBook keeps adding to its screens: its Help Center describes the new document-style change orders and the global Bills & Expenses page. Cotlet updates the BuildBook server when those screens change, with nothing for you to redeploy.

The agent works with your user's permissions. A collaborator login without Financials access gives the agent no invoices or bills either.

If BuildBook logs you out, one click in the Cotlet console reopens the Cloud Browser so you can log in again.

20 tools ask first

Approvals, undo and mistakes Homeowners, subs and vendors get nothing until you say so.

  1. 01 Read the Price Book manage_price_book lists items and cost codes.
  2. 02 Draft the estimate Items, quantities and total, shown to you first.
  3. 03 Save after your OK manage_estimates saves it as a Draft.
  4. 04 Share when you say A separate share call sends the proposal.
Fixing a BuildBook write that went wrong
ActionHow to put it right
Task, phase or project detailsCall manage_tasks, manage_schedule or manage_projects again with the earlier values
Invoice still in DraftEdit it; only Draft invoices can change
Change order sent for approvalCancel the request in BuildBook, then edit and send again
Selection sent for approvalLocked until the client approves or declines; talk to them
Invoice already sentWith your client now: move it back to Draft or Void and explain

All 20 write tools ask first: by default you confirm each call, and you can switch that off per tool. The 10 read tools, from the Pro Dashboard to the budget report, run at once.

MCP call
{
  "name": "manage_estimates",
  "arguments": {
    "action": "create",
    "opportunity": "Maple Street bath remodel",
    "source": "price_book",
    "items": [
      {
        "name": "Demolition",
        "cost_code": "02-100",
        "type": "Labor",
        "quantity": 1,
        "unit_price": 1800
      },
      {
        "name": "Floor and wall tile",
        "cost_code": "09-300",
        "type": "Material",
        "quantity": 85,
        "unit_price": 22
      },
      {
        "name": "Vanity install",
        "cost_code": "06-400",
        "type": "Labor",
        "quantity": 1,
        "unit_price": 950
      }
    ]
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/buildbook/estimates/manage \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"create","opportunity":"Maple Street bath remodel","source":"price_book","items":[{"name":"Demolition","cost_code":"02-100","type":"Labor","quantity":1,"unit_price":1800},{"name":"Floor and wall tile","cost_code":"09-300","type":"Material","quantity":85,"unit_price":22},{"name":"Vanity install","cost_code":"06-400","type":"Labor","quantity":1,"unit_price":950}]}'
Response
{
  "opportunity": "Maple Street bath remodel",
  "estimate": "Version 1",
  "status": "Draft",
  "items": 3,
  "total": 4620
}

The example prices demolition at $1,800, 85 sq ft of tile at $22 and the vanity install at $950: $4,620 in all, saved as a Draft. A cron job or n8n flow can make the same call over REST at /api/v1/buildbook with the same key and price, in JSON. Failed calls are free.

Pay per call

How much does the BuildBook MCP server cost?

About $23 a monthfor a remodeler running two jobs at a time, 4,000 credits. Your BuildBook plan stays as it is.

Illustrative month, our assumption: successful calls for this workload
JobCallsCredits
Morning dashboard and overdue check2 × 20400
Daily log on two jobs2 × 20400
Task updates and assignments2 × 20400
Bills and expenses entered1 × 40400
Friday job cost report6 × 4240
Schedule moves2 × 8160
New lead to draft estimate3 × 6180
Selections sent for approval2 × 6120
Change orders and invoices2 × 10200
Cloud Browser, 30 days1,500
Total250 calls4,000

The smallest pack, 5,000 credits for $29, covers this month with room to spare. More jobs at once means more calls.

  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Your BuildBook plan and role apply as they are

Credit packs are one-time purchases, not a subscription. The month above is built from our own assumptions, not measured customer usage.

Cotlet credit packs: price, credits and calls at 10 credits each
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.

Other options

BuildBook MCP server: other ways to connect What each route does for a remodeling office, and where it stops.

Other ways to work with BuildBook, checked 13 Nov 2026
OptionWhat it doesWhere it stops
QuickBooks Online syncBuildBook's own link: pushes bills, expenses and invoices with matched cost codes.Accounting only; nothing for estimates, schedules or an AI agent.
Client DashboardHomeowners follow updates, the schedule and selections themselves.For your clients, not a way to automate your office.
By handOpen each project in BuildBook and click through.One screen at a time, only while you are at the desk.

If BuildBook ever publishes an API that covers your job, use it: it is the vendor's own route. Until then Cotlet is how ChatGPT, Claude or a script works in BuildBook from your own login, with nothing to host.

EU company, since 2019

Who runs Cotlet A company you can look up.

Take Group sp. z o.o. runs Cotlet: a software company registered in Poland, EU (VAT PL6342984273), trading since 2019 and led by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the BuildBook tools go to contact@cotlet.dev.

BuildBook MCP server: questions

How do I get access?

Sign up free at https://cotlet.dev/signup?app=buildbook, turn on BuildBook under Integrations in the console and log in at https://app.buildbook.co/ in your Cloud Browser. Then connect your AI agent and ask it about a project. The trial needs no card.

Does BuildBook have an API?

BuildBook publishes no public API: its site and Help Center show no developer documentation, API keys or API pricing (checked 13 Nov 2026). No BuildBook MCP server or official ChatGPT or Claude connector was verified; its documented integration is QuickBooks Online. Cotlet does not need one: it works in your own signed-in BuildBook account.

Which BuildBook role does the agent need?

The one the job needs in BuildBook. Global Estimates and Global Invoices are for Pro Team Admins and Owners, the global Bills & Expenses page for admins, and invoices for the Pro Team and collaborators with Everything on Financials. The agent inherits whatever your user has.

Does Cotlet change my QuickBooks Online sync?

No. BuildBook documents its own QuickBooks Online connection, sync settings and cost code matching in its Help Center. No Cotlet tool connects, unlinks or changes that sync; manage_price_book can only export your cost codes for matching.

Can the agent message my client?

Only through actions that already reach clients in BuildBook: sharing an estimate, a daily log or a task, requesting approval of a change order or selection, and sending an invoice. Each waits for your OK. read_project_chat reads the chat and never posts.

Is the MCP server different from the REST API?

Only in how it is called. Both carry the same 30 tools, inputs, answers, API key and price. Agents use MCP; scripts and n8n HTTP steps use REST.

Is Cotlet affiliated with BuildBook?

No. Cotlet is independent and not affiliated with BuildBook.

Hand your next BuildBook estimate to your agent.

Free 7-day trial with 2,000 credits, no card needed.