Buildxact API and MCP server Let your AI agent quote, schedule and claim the job.

Buildxact's REST API needs a subscription key its team approves, and it has no quote, schedule or daily log operations (checked 14 Nov 2026). Cotlet runs a hosted Buildxact MCP server with 30 tools that ChatGPT and Claude use in your own builder account. Quotes, variations and claims wait for your OK.

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

30 tools Read and write

Estimating and job admin

What can your AI agent do in Buildxact? From the first lead to the last progress claim.

  • Send a quote for digital acceptance

  • Move schedule tasks and publish to the portal

  • Draft a progress claim

  • Price a variation for the client

  • Raise purchase orders and quote requests

  • Post the daily log

API gated, no MCP

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

Buildxact documents a REST API at developer.buildxact.com. You make an API key in Buildxact and request a subscription key, which Buildxact's team approves. No Buildxact MCP server and no official ChatGPT or Claude connector was found.

  • The API groups are Accounts, Catalogues, Clients, Contacts, Estimates, Jobs, Leads and Metadata.
  • Jobs can be created and purchase orders created or completed; invoices, variations and schedule tasks are read only.
  • No operation covers quotes, digital acceptance, daily logs, work orders, the client portal or the WIP report.
  • The API allows 100 requests in 30 seconds and answers 429 above that.
The Buildxact API, working by hand and Cotlet compared
What you need Buildxact APIBy handCotlet
Ask ChatGPT or Claude to do the work No MCP server found Copy and paste Hosted MCP server
Send quotes and variations to the client No quote operation One screen at a time After your OK
Clients, leads, catalogs, jobs, orders After key approval One screen at a time 30 tools, writes after your OK
Schedules, claims, daily logs Read only or missing One screen at a time Read and write

Checked 14 Nov 2026. Sources: Buildxact API: getting started · Buildxact API: authentication · Buildxact API list · Buildxact Help Center · Help: Create and send a quote · Help: Digital acceptance · Help: Job schedule · Help: Share and publish schedules · Help: Completion Percent invoicing · Help: Contract Price invoicing · Help: Cost Plus invoicing · Help: Variations / change orders · Help: Purchase orders · Help: Work orders · Help: Request for quote · Help: Daily Logs / Site Diary · Help: WIP report · Help: Client portal messages

Set up once

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

  1. 1Log in to Buildxact

    Once, in a browser we host for you.

  2. 2Connect your AI agent

    One address in its settings.

  3. 3Hand it the paperwork

    Price the variation, then approve it.

Your agent works in your own signed-in Cloud Browser. Writes, and anything that reaches a client, trade or supplier, wait for your OK. Who can see your session

Any MCP client

How to connect Buildxact to your AI agent

  1. 1

    Sign in to Buildxact in a Cloud Browser. Open app.buildxact.com in your Cotlet Cloud Browser and log in with your own Buildxact 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.

Buildxact 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. Switched Buildxact on later? Refresh the connector to load the 30 Buildxact 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: buildxact_read
2 read, 28 write

All 30 Buildxact MCP tools

One tool per owner workflow in the Buildxact Help Center, in Buildxact's own words. Many take an `action`: `list` and `get` only read, the other actions write and ask first.

Leads, clients and contacts3

Buildxact's order is Lead, Estimate, Job. The client portal hangs off the lead, so link estimates to it.

  • manage_leads List or read leads, create one for a new or existing client, or link an estimate to a lead. writeAsks first

    Buildxact recommends the order Lead, Estimate, Job, and the client portal hangs off the lead. An estimate links only to a lead for the exact same client, set in the Lead Details area of the estimate. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_leads

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/leads/manage

    Parameters

    Parameters: manage_leads
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `link_estimate`. `list` and `get` only read.
    lead string string Lead name, for `get` and `link_estimate`.
    client string string For `create`: an existing client from manage_clients, or the details of a new one.
    estimate string string For `link_estimate`: the estimate to link.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "lead": "Hill St deck and pergola",
      "client": "Example Homeowner",
      "estimate": "Hill St deck, base scope",
      "linked": true
    }
  • manage_clients List or read your clients, add one, or import a list from an Excel file. writeAsks first

    An import maps each spreadsheet column to a Buildxact field and shows the rows before they are added. Run `list` first so the same client is not added twice. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_clients

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/clients/manage

    Parameters

    Parameters: manage_clients
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `import`. `list` and `get` only read.
    client string string Client name, for `get`.
    fields object object For `create`: name, email, phone and address.
    file_url string string For `import`: a link to a spreadsheet laid out like Buildxact's client template.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "client": "Example Homeowner",
      "email": "homeowner@example.com",
      "phone": "+1 555 0100",
      "saved": true
    }
  • import_contacts Import contractors, suppliers and employees from an Excel file into Contacts. writeAsks first

    Every contact's group must be Contractors, Employees or Suppliers; Buildxact warns that any other group can break your accounting sync, so the agent checks the groups and shows you the import preview first. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → import_contacts

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/contacts

    Parameters

    Parameters: import_contacts
    NameTypeDescription
    file_url string required string A link to a spreadsheet laid out like Buildxact's contact template.

    Example input

    {
      "file_url": "https://example.com"
    }

    Example response

    {
      "imported": 3,
      "groups": {
        "Contractors": 2,
        "Suppliers": 1,
        "Employees": 0
      }
    }

Estimates, plans and catalogs8

Copies, templates, Excel imports, markup in percent, scaled plans, price catalogs and recipes or assemblies.

  • manage_estimates List or read estimates, copy one as a new version, or start a new estimate from a template. writeAsks first

    A copy keeps the original as it is, the usual way to make a "Version 2" when a client asks for big changes. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_estimates

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

    Parameters

    Parameters: manage_estimates
    NameTypeDescription
    action string required string One of `list`, `get`, `copy`, `from_template`. `list` and `get` only read.
    estimate string string The estimate to read or copy, or the template for `from_template`.
    name string string For `copy` and `from_template`: name, type, customer and source of the new estimate.
    parts array array For `copy` and `from_template`: which parts to bring across.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "estimate": "Hill St deck, version 2",
      "copied_from": "Hill St deck, base scope",
      "saved": true
    }
  • manage_estimate_templates List your estimate templates or create one, blank or from an Excel estimate. writeAsks first

    Templates live under Estimates, Templates, and manage_estimates starts new estimates from them. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_estimate_templates

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/estimate-templates/manage

    Parameters

    Parameters: manage_estimate_templates
    NameTypeDescription
    action string required string One of `list`, `create`. `list` and `get` only read.
    name string string Template name, for `create`.
    categories array array For a blank template: the Estimate Costings categories to add.
    file_url string string For a template from Excel: a link to a file in Buildxact's estimate layout.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "template": "Deck, hardwood, standard scope",
      "categories": [
        "Footings",
        "Framing",
        "Decking",
        "Balustrade"
      ],
      "saved": true
    }
  • import_estimate_from_excel Create a new estimate from an Excel or CSV file in Buildxact's layout. writeAsks first

    One column per field, no formulas or images. Buildxact imports one unit cost and one markup per line and no wastage; takeoffs on plans are done afterwards. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → import_estimate_from_excel

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/estimate-from-excels

    Parameters

    Parameters: import_estimate_from_excel
    NameTypeDescription
    file_url string required string A .csv, .xls or .xlsx link. Category and Description columns are required.
    name string required string Name of the new estimate.

    Example input

    {
      "file_url": "https://example.com",
      "name": "Jane Doe"
    }

    Example response

    {
      "estimate": "Rowe Ave bathroom, imported",
      "lines": 46,
      "saved": true
    }
  • set_estimate_markup Set a markup percentage on an item, a category or section, or the whole estimate. writeAsks first

    Buildxact takes markup as a percentage only, and markups at different levels add together into the final markup. The agent reads the breakdown back so you see where it comes from. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → set_estimate_markup

    REST endpointPUT https://cotlet.dev/api/v1/buildxact/estimate-markup

    Parameters

    Parameters: set_estimate_markup
    NameTypeDescription
    estimate string required string Estimate name or number, as list in manage_estimates returns it.
    level string required string One of `item`, `category`, `estimate`.
    target string string The item or category, unless the level is `estimate`.
    percent number required number Markup as a percentage.

    Example input

    {
      "estimate": "estimate",
      "level": "level",
      "percent": 1
    }

    Example response

    {
      "estimate": "Hill St deck, base scope",
      "level": "estimate",
      "percent": 20,
      "quote_total": 24600,
      "saved": true
    }
  • manage_plans List the plans on an estimate, upload a plan file, or set its scale for takeoffs. writeAsks first

    Plans go to the Plans & Takeoffs tab and are auto scaled from the scale printed on them unless you say otherwise. The drawing tools and the takeoff assistant stay off until a plan is scaled. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_plans

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/plans/manage

    Parameters

    Parameters: manage_plans
    NameTypeDescription
    action string required string One of `list`, `upload`, `scale`. `list` and `get` only read.
    estimate string required string Estimate name or number, as list in manage_estimates returns it.
    file_url string string For `upload`: a link to the plan file.
    pages string string For `upload`: pages or a range to import. Empty imports every page.
    scale string string For `scale`: a common scale such as 1/4":1, imperial or metric by your region.

    Example input

    {
      "action": "action",
      "estimate": "estimate"
    }

    Example response

    {
      "estimate": "Hill St deck, base scope",
      "plan": "A101 Deck plan",
      "scale": "1/4\":1",
      "scaled": true
    }
  • share_plans_takeoffs Email plans or takeoff drawings, or export them to PDF. writeAsks first

    An email reaches people outside your company, so the agent lists the recipients and attachments first. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → share_plans_takeoffs

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/plans-takeoffs/share

    Parameters

    Parameters: share_plans_takeoffs
    NameTypeDescription
    estimate string required string Estimate name or number, as list in manage_estimates returns it.
    what string required string One of `plans`, `takeoffs`.
    items array array Plans or takeoffs to include. Empty takes all.
    to array array Email recipients. Empty exports a PDF instead.
    labels boolean boolean Show takeoff labels. Off reads better on detailed takeoffs.

    Example input

    {
      "estimate": "estimate",
      "what": "what"
    }

    Example response

    {
      "estimate": "Hill St deck, base scope",
      "what": "takeoffs",
      "to": [
        "bids@example.com"
      ],
      "sent": true
    }
  • manage_price_catalogs List catalogs, import supplier pricing from a spreadsheet, or export a catalog to Excel. writeAsks first

    Catalog items are what estimates, variations and purchase orders search when you add prices. One column per field, no formulas or images. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_price_catalogs

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/price-catalogs/manage

    Parameters

    Parameters: manage_price_catalogs
    NameTypeDescription
    action string required string One of `list`, `import`, `export`. `list` and `get` only read.
    catalog string string Catalog name, for `import` and `export`.
    file_url string string For `import`: a .csv, .tsv, .xls, .xlsx or .xml link. PDFs are not accepted.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "catalog": "Example Timber Supply 2026",
      "items": 212,
      "imported": true
    }
  • manage_assemblies List recipes (assemblies), or create one from catalog items for a unit of work. writeAsks first

    A recipe or assembly prices one increment, such as a foot of wall or one door. Buildxact also ships ready-made recipes you can adjust. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_assemblies

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/assemblies/manage

    Parameters

    Parameters: manage_assemblies
    NameTypeDescription
    action string required string One of `list`, `get`, `create`. `list` and `get` only read.
    name string string Recipe name, for example Deck, per square metre.
    items array array For `create`: material and labour items per unit.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "recipe": "Hardwood deck, per sq ft",
      "items": 4,
      "unit_cost": 38.5,
      "saved": true
    }

Quotes2

Preparing a quote sends nothing. Sharing it, standard or for digital acceptance, reaches your client.

  • prepare_quote Turn an estimate into a quote: pick its sections and read the preview or PDF. writeAsks first

    Prepares the quote and returns the preview, so you can check section order and blank pages before anyone sees it. Nothing is sent: share_quote does that. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → prepare_quote

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/quote/prepare

    Parameters

    Parameters: prepare_quote
    NameTypeDescription
    estimate string required string Estimate name or number, as list in manage_estimates returns it.
    sections array array Sections to include: cover page, letter, quote items, specifications, allowances, other estimate details.
    items_view string string For quote items: one of `all_items`, `categories_only`, plus whether to show quantities and costs.

    Example input

    {
      "estimate": "estimate"
    }

    Example response

    {
      "estimate": "Hill St deck, base scope",
      "sections": [
        "Cover page",
        "Letter",
        "Quote items",
        "Allowances"
      ],
      "total": 24600,
      "pdf_preview": true
    }
  • share_quote Send a quote by email or to the client portal, standard or with digital acceptance. writeAsks first

    The quote reaches your client, so the agent shows the recipients, the workflow and the email text first. Buildxact also shows who is invited to the portal project, so you do not share into an empty one. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → share_quote

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/quote/share

    Parameters

    Parameters: share_quote
    NameTypeDescription
    estimate string required string Estimate name or number, as list in manage_estimates returns it.
    workflow string required string One of `standard` (view or download link) or `digital_acceptance` (web quote the client can accept).
    recipients array required array Clients to send it to.
    message string string The email text.
    to_portal boolean boolean Also share to the client portal project of the linked lead.

    Example input

    {
      "estimate": "estimate",
      "workflow": "workflow",
      "recipients": "recipients"
    }

    Example response

    {
      "estimate": "Hill St deck, base scope",
      "workflow": "digital_acceptance",
      "recipients": [
        "homeowner@example.com"
      ],
      "shared": true
    }

Jobs and schedules4

Create the job, accept the estimate when the contract is signed, then run the schedule and the site diary.

  • manage_jobs List or read jobs, create one, or create a job from an estimate and accept the estimate. writeAsks first

    Creating the job leaves the estimate open; accepting the estimate locks its value once the contract is signed, and variations only work after that. Buildxact warns that changing the estimate while the job is open can leave orphan orders, so the agent tells you before it does. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_jobs

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/jobs/manage

    Parameters

    Parameters: manage_jobs
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `from_estimate`, `accept_estimate`. `list` and `get` only read.
    job string string Job name or number, for `get` and `accept_estimate`.
    estimate string string For `from_estimate`: the estimate the job starts from.
    invoice_method string string For a new job: one of `contract_price`, `completion_percent`, `cost_plus`.
    start_date string string Expected ISO start date.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "estimate": "Hill St deck, base scope",
      "invoice_method": "completion_percent",
      "start_date": "2026-11-24",
      "created": true
    }
  • update_job_schedule Read a job schedule, move tasks, change dates, durations or progress, and set dependencies. writeAsks first

    Tasks from an estimate schedule carry across when the job is created. With auto dependencies on, moving one task can shift the tasks below it, so the agent reports every task that moved. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → update_job_schedule

    REST endpointPATCH https://cotlet.dev/api/v1/buildxact/job-schedule

    Parameters

    Parameters: update_job_schedule
    NameTypeDescription
    action string required string One of `list`, `update`. `list` and `get` only read.
    job string required string Job name or number, as list in manage_jobs returns it.
    task string string The task, for `update`.
    start_date string string ISO date.
    end_date string string ISO date.
    progress number number Completion from 0 to 100.
    dependency object object A manual dependency: the other task, `end_to_start` or `start_to_start`, and lag days.

    Example input

    {
      "action": "action",
      "job": "job"
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "task": "Decking install",
      "start_date": "2026-12-01",
      "end_date": "2026-12-04",
      "progress": 0,
      "moved": [
        "Balustrade",
        "Final clean"
      ]
    }
  • share_job_schedule Export or email a schedule as a Gantt chart or task list, or publish it to the client portal. writeAsks first

    The client portal needs the job linked to a lead. A published schedule is visible to your client, so the agent asks first. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → share_job_schedule

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/job-schedule/share

    Parameters

    Parameters: share_job_schedule
    NameTypeDescription
    job string required string Job name or number, as list in manage_jobs returns it.
    format string required string One of `gantt_pdf`, `gantt_image`, `gantt_excel`, `task_list`, `portal`.
    detail string string One of `categories_only`, `categories_and_tasks`, `as_displayed` (portal only).
    to array array Email recipients. Empty returns the file.

    Example input

    {
      "job": "job",
      "format": "format"
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "format": "portal",
      "detail": "categories_and_tasks",
      "published": true
    }
  • manage_daily_logs Read a job's Daily Logs (Site Diary), or add a post with photos. writeAsks first

    Australia and New Zealand call it Site Diary. Videos and several photos per post are on the Pro and Master plans. The agent writes your notes as given. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_daily_logs

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

    Parameters

    Parameters: manage_daily_logs
    NameTypeDescription
    action string required string One of `list`, `create`. `list` and `get` only read.
    job string required string Job name or number, as list in manage_jobs returns it.
    date string string ISO date. Defaults to today.
    text string string What happened on site, in your words.
    media_urls array array Links to photos or videos to attach.

    Example input

    {
      "action": "action",
      "job": "job"
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "date": "2026-12-02",
      "text": "Joists fixed, first 40 boards laid.",
      "photos": 2,
      "saved": true
    }

Buying: quote requests, orders and costs4

External costs go on purchase orders, internal labour on work orders. Material orders stop at a submitted quote.

  • manage_quote_requests Send a request for quote from an estimate to your trades and suppliers, and read the replies. writeAsks first

    Quote Requests are on Buildxact's Pro and Teams plans only. Trades reply through Buildxact, and the winning reply updates the estimate. A request reaches people outside your company, so the agent lists recipients and items first. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_quote_requests

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/quote-requests/manage

    Parameters

    Parameters: manage_quote_requests
    NameTypeDescription
    action string required string One of `list`, `get`, `send`. `list` and `get` only read.
    estimate string required string Estimate name or number, as list in manage_estimates returns it.
    items array array For `send`: the estimate items to price.
    recipients array array For `send`: trades or suppliers from Contacts.

    Example input

    {
      "action": "action",
      "estimate": "estimate"
    }

    Example response

    {
      "estimate": "Hill St deck, base scope",
      "request": "Pergola electrical",
      "recipients": [
        "Example Electric",
        "Sample Sparks"
      ],
      "sent": true
    }
  • manage_purchase_orders List or read purchase orders, create one against an estimate line, send it, or mark it received. writeAsks first

    Purchase orders record external costs and can flow to your accounting system. Creating one from the estimate line keeps estimated and actual costs side by side. Sending emails the supplier. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_purchase_orders

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/purchase-orders/manage

    Parameters

    Parameters: manage_purchase_orders
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `send`, `receive`. `list` and `get` only read.
    job string required string Job name or number, as list in manage_jobs returns it.
    order string string Purchase order number, for `get`, `send` and `receive`.
    supplier string string For `create`: the supplier or subcontractor from Contacts.
    lines array array For `create`: estimate line or cost category, description, quantity and unit cost.
    show_costs boolean boolean Show prices on the order document.

    Example input

    {
      "action": "action",
      "job": "job"
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "order": "PO-0412",
      "supplier": "Example Timber Supply",
      "total": 10350,
      "status": "Sent"
    }
  • create_material_order Build a material order with The Home Depot from estimate items or a product search. writeAsks first

    The tool fills the cart and submits it as a quote, which Buildxact saves. Going to checkout and paying stays with you. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → create_material_order

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/material-orders

    Parameters

    Parameters: create_material_order
    NameTypeDescription
    record string string Estimate or job to take items from. Empty starts from a product search.
    items array required array Items with quantities, or Home Depot descriptions or item codes to search.
    description string string Your note, for example Flooring for Hill St.
    delivery string string One of `delivery`, `pickup`, with the job work location or an address.

    Example input

    {
      "items": "items"
    }

    Example response

    {
      "order": "Decking for Hill St",
      "items": 3,
      "delivery": "pickup",
      "quote_submitted": true
    }
  • manage_work_orders List work orders, or record staff labour and timesheet hours against a job. writeAsks first

    Work orders track internal costs, mostly labour, and unlike purchase orders they do not push costs to accounting. Completing one asks for the actual amount used, which feeds estimated against actual labour. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_work_orders

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/work-orders/manage

    Parameters

    Parameters: manage_work_orders
    NameTypeDescription
    action string required string One of `list`, `create`, `complete`. `list` and `get` only read.
    job string required string Job name or number, as list in manage_jobs returns it.
    line string string The estimate line the cost belongs to.
    people array array Employees, with hours or cost per line.
    actual number number For `complete`: the actual amount used.

    Example input

    {
      "action": "action",
      "job": "job"
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "work_order": "Decking labour, week of 1 Dec",
      "hours": 64,
      "saved": true
    }

Client billing5

Contract Price, Completion Percent and Cost Plus invoices, variations, credits and due days. Each changes what someone pays.

  • manage_invoices List or read a job's invoices, create the next one for its invoice method, share it, or record a payment. writeAsks first

    Contract Price bills set stages such as deposit, base, frame, lockup, fixing and completion; Completion Percent bills the share of each category done since the last invoice; Cost Plus bills costs from purchase and work orders plus your markup. Retention applies where the job has it. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_invoices

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

    Parameters

    Parameters: manage_invoices
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `share`, `record_payment`. `list` and `get` only read.
    job string required string Job name or number, as list in manage_jobs returns it.
    invoice string string Invoice number, for `get`, `share` and `record_payment`.
    claim object object For `create`: the stage (Contract Price), the % done per cost category (Completion Percent), or the costs to bill (Cost Plus).
    amount number number For `record_payment`: the amount received.

    Example input

    {
      "action": "action",
      "job": "job"
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "invoice": "INV-0218",
      "method": "completion_percent",
      "lines": [
        {
          "category": "Decking",
          "percent": 60,
          "amount": 7056
        },
        {
          "category": "Pergola",
          "percent": 25,
          "amount": 1860
        }
      ],
      "total": 8916,
      "shared": false
    }
  • manage_variations List variations (change orders), create one like a mini estimate, or send it for approval. writeAsks first

    Recipes or assemblies can be added like in an estimate. Accepted variations can then go on an invoice. Sending one for approval reaches your client, and a variation changes what the client pays. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → manage_variations

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/variations/manage

    Parameters

    Parameters: manage_variations
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `send`. `list` and `get` only read.
    job string required string Job name or number, as list in manage_jobs returns it.
    name string string Variation name, for `create`.
    lines array array For `create`: labour, materials and other items, each with an Actual Costing category, quantity and unit cost.
    markup number number Markup percentage.
    delay_days number number Optional delay days.

    Example input

    {
      "action": "create",
      "job": "Hill St deck and pergola",
      "name": "Extra deck stairs",
      "lines": [
        {
          "description": "Carpenter labour",
          "category": "Decking",
          "quantity": 6,
          "unit": "hr",
          "unit_cost": 85
        },
        {
          "description": "Stair stringers and treads",
          "category": "Decking",
          "quantity": 1,
          "unit": "set",
          "unit_cost": 640
        }
      ],
      "markup": 20
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "variation": "Extra deck stairs",
      "lines": 2,
      "markup": 20,
      "total": 1380,
      "status": "Draft"
    }
  • amend_invoice Set an invoice back to Pending, change it, then restore its status and payments. writeAsks first

    Buildxact edits an invoice only in Pending, so recorded payments come off first and go back after; the agent reads them out before it removes them. An invoice already synced to accounting does not re-sync, and some Completion Percent invoices cannot go back to Pending. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → amend_invoice

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/invoice/amend

    Parameters

    Parameters: amend_invoice
    NameTypeDescription
    job string required string Job name or number, as list in manage_jobs returns it.
    invoice string required string Invoice number.
    changes object required object The lines, dates or amounts to change.

    Example input

    {
      "job": "job",
      "invoice": "invoice",
      "changes": "changes"
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "invoice": "INV-0218",
      "status": "Invoiced",
      "payments_restored": 1,
      "saved": true
    }
  • create_credit_note Credit a client with a negative variation or order, or record a supplier credit on a purchase order. writeAsks first

    Buildxact issues no negative invoices: a client credit is a negative variation added to an invoice with a value, or on Cost Plus jobs a negative purchase or work order that attracts the default markup. A supplier credit syncs to accounting as a negative bill, or a credit note in Xero. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → create_credit_note

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/credit-notes

    Parameters

    Parameters: create_credit_note
    NameTypeDescription
    job string required string Job name or number, as list in manage_jobs returns it.
    party string required string One of `client`, `supplier`.
    source string string Client: the invoice to attach it to. Supplier: the purchase order, at least Sent.
    lines array required array Items and negative quantities or amounts.

    Example input

    {
      "job": "job",
      "party": "party",
      "lines": "lines"
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "party": "supplier",
      "source": "PO-0412",
      "amount": -420,
      "saved": true
    }
  • set_invoice_due_days Change the default invoice due days for the business or for one job. writeAsks first

    The business default sits in Business Details, Other Settings; a job default sits on the job's Outgoing Invoices tab. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → set_invoice_due_days

    REST endpointPUT https://cotlet.dev/api/v1/buildxact/invoice-due-days

    Parameters

    Parameters: set_invoice_due_days
    NameTypeDescription
    job string string The job. Empty changes the business default in Business Details.
    days number required number Default due days.

    Example input

    {
      "days": 1
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "default_due_days": 14,
      "saved": true
    }

Client portal and reports4

Messages and shared documents reach the client. The costing and WIP reports are read only.

  • message_client Read client portal conversations or send a client a message. writeAsks first

    `list` shows conversations across your client portals with unread ones first. A message reaches your client in their portal. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → message_client

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/client/message

    Parameters

    Parameters: message_client
    NameTypeDescription
    action string required string One of `list`, `send`. `list` and `get` only read.
    lead string string The lead the conversation belongs to.
    subject string string For a new conversation.
    message string string For `send`.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "lead": "Hill St deck and pergola",
      "subject": "Decking start",
      "sent": true
    }
  • share_to_client_portal Share documents or images from a lead, estimate or job to its client portal. writeAsks first

    The client must be invited to the project. Buildxact warns that a shared item cannot be removed from the portal, so this always waits for your OK. By default you confirm each call; you can switch that off for this tool.

    MCP callbuildxact_write → share_to_client_portal

    REST endpointPOST https://cotlet.dev/api/v1/buildxact/client-portal/share

    Parameters

    Parameters: share_to_client_portal
    NameTypeDescription
    record string required string The lead, estimate or job holding the documents.
    documents array required array Documents or images already uploaded there.
    timeline boolean boolean Also post to the portal timeline, for a milestone.
    message string string The email text the client gets.

    Example input

    {
      "record": "record",
      "documents": "documents"
    }

    Example response

    {
      "record": "Hill St deck and pergola",
      "documents": [
        "Footing inspection.pdf"
      ],
      "timeline": true,
      "shared": true
    }
  • get_costing_reports Read an estimate or job costing report: Categories, Categories and Items, PC/PS Items, Estimated vs Actuals or Estimated vs Committed. read

    Estimated vs Actuals counts purchase orders that are receipted; Estimated vs Committed also counts orders that are sent but not yet receipted. Returns the report rows as text, the same data Buildxact prints or exports to Excel. It changes nothing and runs without asking.

    MCP callbuildxact_read → get_costing_reports

    REST endpointGET https://cotlet.dev/api/v1/buildxact/costing-reports

    Parameters

    Parameters: get_costing_reports
    NameTypeDescription
    record string required string Estimate or job name or number.
    report string required string One of `categories`, `categories_and_items`, `pc_ps_items`, `estimated_vs_actuals`, `estimated_vs_committed`. The last two exist on jobs only.

    Example input

    {
      "record": "record",
      "report": "report"
    }

    Example response

    {
      "job": "Hill St deck and pergola",
      "report": "estimated_vs_committed",
      "rows": [
        {
          "category": "Decking",
          "estimated": 9800,
          "committed": 10350
        },
        {
          "category": "Pergola",
          "estimated": 6200,
          "committed": 5900
        },
        {
          "category": "Electrical",
          "estimated": 1900,
          "committed": 0
        },
        {
          "category": "Footings",
          "estimated": 2600,
          "committed": 2600
        }
      ]
    }
  • get_wip_report Read the work in progress report for every job in progress over a date range. read

    Per job: Contract Price, Invoiced To Date, Invoiced %, Estimated Costs and the rest of the report columns. Buildxact states every figure excluding tax, counts only accepted variations and invoices dated before the end of the range, and shows Cost Plus jobs with a $0.00 contract price. It changes nothing and runs without asking.

    MCP callbuildxact_read → get_wip_report

    REST endpointGET https://cotlet.dev/api/v1/buildxact/wip-report

    Parameters

    Parameters: get_wip_report
    NameTypeDescription
    from string required string ISO start date of the range.
    to string required string ISO end date of the range.

    Example input

    {
      "from": "from",
      "to": "to"
    }

    Example response

    {
      "from": "2026-11-01",
      "to": "2026-11-30",
      "jobs": [
        {
          "job": "Hill St deck and pergola",
          "contract_price": 24600,
          "invoiced_to_date": 9840,
          "invoiced_percent": 40
        },
        {
          "job": "Rowe Ave bathroom",
          "contract_price": 31800,
          "invoiced_to_date": 25440,
          "invoiced_percent": 80
        }
      ]
    }
Encrypted, revocable

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

  • What we store

    Your logged-in Buildxact browser profile, AES-256-GCM encrypted, in Finland. Never your password.

  • What your agent gets

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

  • What the session sees

    The leads, estimates, jobs and invoices your Buildxact user can open, and nothing more.

  • What no tool touches

    Your Buildxact users, subscription, API keys and the accounting connection.

  • If Buildxact logs you out

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

  • How to cut access

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

Cotlet never sees or stores your password: you type it into Buildxact yourself, and the agent works from the session that leaves. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results).

We keep it working

What happens when Buildxact changes? The tools use the same Buildxact screens your estimator and site lead use.

When Buildxact changes a screen, Cotlet updates its Buildxact server, and your agent keeps the same tool names and inputs.

Buildxact uses regional names: variations or change orders, Site Diary or Daily Logs, recipes or assemblies, Contract Price or Fixed Price. The tools accept either word.

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

28 tools ask first

Approvals, undo and mistakes Clients, trades and suppliers get nothing until you say so.

  1. 01 Read the job manage_jobs finds Hill St.
  2. 02 Build the variation Labour, timber and 20% markup.
  3. 03 Show you the total Lines and $1,380, before saving.
  4. 04 Save, then send on your OK manage_variations saves the draft; sending is a second call.
Fixing a Buildxact write that went wrong
ActionHow to put it right
Schedule dates, markup, due daysCall the same tool again with the earlier values
A draft variation or invoiceChange it before it is sent or shared
A shared invoiceamend_invoice: back to Pending, change, restore the payments
Anything shared to the client portalBuildxact cannot remove it: talk to your client
Quote, quote request or purchase order sentAlready with the client or supplier: follow up directly

All 28 write tools ask first: by default you confirm each call, and you can switch that off per tool. The 2 read tools, the costing reports and the WIP report, run at once.

MCP call
{
  "name": "manage_variations",
  "arguments": {
    "action": "create",
    "job": "Hill St deck and pergola",
    "name": "Extra deck stairs",
    "lines": [
      {
        "description": "Carpenter labour",
        "category": "Decking",
        "quantity": 6,
        "unit": "hr",
        "unit_cost": 85
      },
      {
        "description": "Stair stringers and treads",
        "category": "Decking",
        "quantity": 1,
        "unit": "set",
        "unit_cost": 640
      }
    ],
    "markup": 20
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/buildxact/variations/manage \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"create","job":"Hill St deck and pergola","name":"Extra deck stairs","lines":[{"description":"Carpenter labour","category":"Decking","quantity":6,"unit":"hr","unit_cost":85},{"description":"Stair stringers and treads","category":"Decking","quantity":1,"unit":"set","unit_cost":640}],"markup":20}'
Response
{
  "job": "Hill St deck and pergola",
  "variation": "Extra deck stairs",
  "lines": 2,
  "markup": 20,
  "total": 1380,
  "status": "Draft"
}

The example adds 6 hours of labour at $85 and $640 of stair timber, $1,150, then 20% markup: $1,380. A cron job or n8n flow makes the same call over REST at /api/v1/buildxact with the same key and price, in JSON. Failed calls are free.

Pay per call

How much does the Buildxact MCP server cost?

About $23 a monthfor a builder with four jobs on site and quotes out, 3,900 credits. Your Buildxact plan stays as it is.

Illustrative month, our assumption: successful calls for this workload
JobCallsCredits
Daily log on each job4 × 20800
Schedule moves and portal updates2 × 20400
Client portal messages2 × 20400
Purchase orders and work orders1 × 40400
Quotes: copy, markup, prepare, share4 × 4160
Variations sent for approval2 × 6120
Monthly progress claims, four jobs2 × 480
WIP report, every Friday1 × 440
Cloud Browser, 30 days1,500
Total240 calls3,900

The smallest pack is 5,000 credits for $29. More jobs on site or a daily log with every visit 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 Buildxact plan applies as it is

Credit packs are one-time purchases, not a subscription. The month above is our own example, 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

Buildxact MCP server: other ways to connect What each route does for a building business, and where it stops.

Other ways to work with Buildxact, checked 14 Nov 2026
OptionWhat it doesWhere it stops
Buildxact APIREST operations for clients, contacts, catalogues, leads, estimates, jobs and purchase orders.A subscription key Buildxact approves; no quotes, schedule edits, daily logs or portal; you host the code.
Excel imports and exportsBuildxact's own templates for estimates, catalogs, clients and contacts.A file at a time, by hand.
By handOpen each estimate or job and click through.One screen at a time, only while you are at the desk.

If your job is syncing clients, catalogs or purchase orders with another system and you have a subscription key, the Buildxact API is the vendor's own route. Cotlet fits when you want ChatGPT, Claude or a script to quote, schedule and bill in Buildxact today, 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. builds and runs Cotlet: a software company registered in Poland, EU (VAT PL6342984273), trading since 2019. The founders are Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Ask about the Buildxact tools at contact@cotlet.dev.

Buildxact MCP server: questions

How do I get access?

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

Does Buildxact have an API?

Buildxact publishes REST API documentation at developer.buildxact.com: a customer makes an API key in the app and requests a subscription key, which Buildxact's team approves (checked 14 Nov 2026). The documented APIs cover accounts, catalogues, clients, contacts, estimates, jobs, leads and metadata. No Buildxact MCP server or official ChatGPT or Claude connector was found. Cotlet does not use that API: it works in your own signed-in Buildxact account.

Which Buildxact plan do quote requests and daily log videos need?

Buildxact's Help Center says Quote Requests are on the Pro and Teams plans only, and videos and several photos per Daily Logs post are on the Pro and Master plans. The tools work within the plan you have.

If the agent amends an invoice, does my accounting system change too?

No. Buildxact says changing an invoice that already synced to accounting does not re-sync it, so you update it in the accounting system as well. The agent tells you when an invoice it amends has synced.

Which Buildxact user should I log in with?

The user whose work the agent should do. It sees only what that user can see in Buildxact, so an estimator's login without job access gives the agent no jobs either.

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 Buildxact?

No. Cotlet is independent and not affiliated with Buildxact.

Hand your next Buildxact quote to your agent.

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