InstantTakeoffAPIMCP connector

Connect InstantTakeoff to Claude, ChatGPT and other MCP clients

InstantTakeoff has an MCP connector. Add it to an assistant that supports remote MCP servers and you can ask it, in plain words, to start a takeoff, check progress, read the counts per fixture type and sheet, and get the estimate or an Excel link.

Server URL: https://app.instanttakeoff.ai/mcp

The connector works on your own InstantTakeoff account. When you connect, you sign in the usual way (email link, Google or Microsoft), choose the company, and approve what the app may do. It acts as you, in that one company, and it uses your seat.

Claude

ChatGPT

Where your ChatGPT plan allows custom connectors (developer mode), create a new connector, paste the server URL above and choose OAuth as the authentication. ChatGPT opens the InstantTakeoff sign-in page; sign in, pick the company and choose Allow.

Other MCP clients

Any client that speaks MCP over Streamable HTTP can connect with the server URL. Sign-in is discovered automatically:

Clients that only take a fixed header can use an API key instead: Authorization: Bearer itk_... (see the API guide to create one).

Protocol versions: 2026-07-28 (stateless requests) and the earlier 2025-11-25, 2025-06-18 and 2025-03-26 revisions (initialize handshake). Responses are JSON. There are no sessions and no standalone event stream.

What it can do

ToolWhat it doesNeeds
list_projectsThe company's projects, newest firstread
get_projectOne project with its drawing sets, each set's stage and totalsread
create_projectA new projectwrite
upload_drawingAdd a PDF drawing set to a project, from an https link or as base64 chunkswrite
list_pagesEvery page of a set: page number, sheet number, title, whether it was picked for the takeoffread
start_takeoffCount chosen pages, or check the whole set for lighting planswrite
get_job_statusProgress of a job, or of a set's takeoff: reading, finding, counting, readyread
get_takeoff_resultsCounts per type per sheet: fixtures, exit signs and controls, with schedule descriptionsread
get_review_statusWhere the review pass stands: how many sheets are reviewed, and each sheet's review linesread
get_estimateThe priced estimate as in the app's Estimate tabread
export_estimateA private Excel or CSV download link that works for a few minutesread
get_model3d_summaryThe set's 3D model floor by floor: counts, wall and wiring feet, heights, panels, drops and risers, and a link that opens the 3D view; build builds it when missing or out of date (needs write)read (write with build)
get_sheet_boxesEvery symbol box on a sheet: id, position, kind, type, score, whether it countsread
find_similarEvery copy of one symbol on a sheet (by box, box id or type); with accept, adds the new ones as a typeread (write to accept)
retake_sheetCount a sheet, or every sheet of a set, again with the model; edits are kept unless freshwrite
search_price_listSearch the company's price list by catalog #, description, manufacturer or vendorread
import_price_listImport a vendor price list given as CSV text: a preview first, then commit to apply (owners and admins)write
match_fixture_typesEach estimate line's price list match with suggestions; confirm matches or accept_catalog_matches (remembered for later projects)read (write to confirm)
add_vendor_quoteA vendor quote for one fixture type of a project, per unit or for the lotwrite
set_bid_markupsA project's overhead, profit, sales tax and contingency percentages and other costswrite
get_bid_summaryQuantities by type, material, tax, labor, markups, the bid total and what is not priced yetread
create_proposalA proposal from the company's proposal settings and the bid, with a private PDF or Word linkwrite
export_proposalA private PDF or Word link for an existing proposalread
list_assembliesThe company's assemblies (a fixture plus its parts, priced as one unit): parts, material and labor per fixture, what each is used forread
apply_assemblyEach fixture type of an estimate with its assembly and parts; assign picks one per type (an id, null for none, or "auto")read (write to assign)

Resources: instanttakeoff://projects/{project_id}, instanttakeoff://sets/{set_id}/results and instanttakeoff://sheets/{sheet_id} give the same summaries as JSON.

A typical request: "Create a project called Riverside Clinic, upload this plan set, and tell me the fixture counts by type when it's done." The assistant calls create_project, then upload_drawing with the link, polls get_job_status until the stage is ready, then reads get_takeoff_results.

Then: "Price it from our price list, 10% overhead and 8% profit, and write a proposal to Sample General Contractor." The assistant calls match_fixture_types with accept_catalog_matches, set_bid_markups, get_bid_summary, then create_proposal and hands you the PDF link.

Or: "Use our high bay assembly for type H and show me what it adds." The assistant calls list_assemblies, then apply_assembly with assign: [{type: "H", assembly_id: ...}], and reads back the parts and the new line total.

How the counts are made

After an upload, the set is read, the lighting plans are found, and the model counts every fixture, exit sign and lighting control on them and types each one from its tag against the fixture schedule. The model keeps improving and is checked against a held-out test set. Then a review layer double-checks every sheet: get_review_status shows what it checked, what it is re-examining now and the corrections it applied, and how many sheets are reviewed. Every count is a box you can open and check in the InstantTakeoff app; check anything critical there before you bid.

Permissions and safety

Limits

Requests are rate limited per connection and per company; a client that goes over gets 429 with a Retry-After header. A drawing set can be up to 1 GB. Links for upload_drawing must be https on a public host (signed storage links work).