Instant Roofer MCP

    Instant Roofer MCP overview
    Connect your assistant
    Permissions and costs
    Tool reference
    Reading a measurement
Machine-readable: llms.txt

Tool reference

Every tool returns JSON (also as structuredContent). Failures return { "error": "<code>", "message": "…" } with isError: true. Tools marked spends consume the Instant Measure allowance or place a paid order.

get_account — Get connected account

Scope: crm:read. Read-only.

Describe the Instant Roofer account this connection acts as: the team member, the contractor, which permissions were granted, whether AI Tools is active, and the current Instant Measure allowance and Human-Certified Measure Report pricing. Call this first when you need to know what the user can do or what an action will cost.

No parameters.

resolve_address — Resolve an address

Scope: crm:read. Read-only.

Turn a typed US address into a verified address with coordinates and a Google place id. Use this before measure_roof or order_human_certified_report when you only have text, and show the user the resolved address if the input was ambiguous. Returns up to four alternative matches; pass one of their placeIds back to pick it instead.

ParameterTypeRequiredDescription
querystringnoThe address as the user typed it, e.g. "3334 Flickinger Rd, Westminster MD".
placeIdstringnoA Google place id from a previous resolve_address result, to select a specific match.

measure_roof — Run an AI Instant Measure (spends)

Scope: measure:run. Makes changes.

Measure a roof with Instant Roofer AI. Give an address (preferred) or latitude/longitude on the building. Returns square footage (aerial, measured, suggested with waste), squares, predominant pitch, complexity, facets, stories, confidence, and an outline image showing which building was measured.

This SPENDS the contractor's Instant Measure allowance. By default a successful measurement of the same property from the last 24 hours is returned instead of running again (reuseRecentWithinHours); only set it to 0 when the user explicitly wants a fresh run. Takes 10–90 seconds; progress notifications are sent while it runs.

ParameterTypeRequiredDescription
addressstringnoStreet address of the property. Resolved with Google before measuring.
latitudenumbernoUse with longitude instead of address when you already have coordinates on the roof.
longitudenumberno
googlePlaceIdstringnoGoogle place id from resolve_address, if you have one.
customerJobIdstringnoAttach the finished measurement to this customer job (from search_customers).
reuseRecentWithinHoursnumberyesReturn an existing successful measurement of this property from within this many hours instead of measuring again. 0 forces a new measurement. Default: 24.
includeOutlineImagebooleanyesInclude the satellite image with the measured building outlined. Default: true.

find_measurements — Find Instant Measures

Scope: measure:read. Read-only.

Search the company's saved AI Instant Measures by address text, most recent first. Use it to check whether a property was already measured before spending allowance with measure_roof, or to find a measurement id for get_measurement / get_instant_measure_report_pdf.

ParameterTypeRequiredDescription
searchTextstringnoAddress fragment, e.g. street name or ZIP.
mineOnlybooleanyesOnly measurements this team member requested. Default: false.
limitintegeryesDefault: 20.

get_measurement — Get an Instant Measure result

Scope: measure:read. Read-only.

Fetch a saved AI Instant Measure by id, including measurements, confidence, and (optionally) the outline image and facet diagrams. Results are redacted for accounts without an active AI Tools subscription.

ParameterTypeRequiredDescription
measurementIdstringyes
includeImagesbooleanyesInclude the outline image and facet diagrams as images. Default: false.

get_instant_measure_report_pdf — Get the Instant Measure Report PDF

Scope: measure:read. Read-only.

Render (or re-render) the branded Instant Measure Report PDF for a saved measurement and return a download URL. Freemium accounts get a redacted report.

ParameterTypeRequiredDescription
measurementIdstringyes

attach_measurement_to_job — Attach an Instant Measure to a customer job

Scope: measure:run. Makes changes.

Link a saved AI Instant Measure to a customer job so it shows up in that customer's workspace and can seed quotes. Pass customerJobId: null to detach.

ParameterTypeRequiredDescription
measurementIdstringyes
customerJobIdanyyesCustomer job id from search_customers (primaryJob.id), or null to detach.

order_human_certified_report — Order a Human-Certified Measure Report (spends)

Scope: hcmr:order. Makes changes. Destructive or paid.

Order a roof measurement report drawn and verified by a human. THIS COSTS MONEY: it uses one of the company's free report credits if any remain, otherwise it charges the card on file (typically $10). Reports take hours to complete; use get_human_certified_report to check status afterwards.

Always tell the user the price and get their agreement first, then call with confirm: true. Without confirm the tool only returns the price and credit balance. If the company already has a report for this property, the tool reports the duplicate instead of ordering; pass confirmedDuplicateOrder: true only when the user explicitly wants a second report.

ParameterTypeRequiredDescription
addressstringnoStreet address of the property (resolved with Google).
latitudenumbernoUse with longitude when you already have coordinates on the roof.
longitudenumberno
googlePlaceIdstringno
customerJobIdstringnoAttach the report to this customer job (from search_customers).
leadIdstringnoLead this report is for (from search_leads).
customerNamestringnoHomeowner name shown to the drawing team.
confirmbooleanyesSet true only after the user agreed to the charge. Default: false.
confirmedDuplicateOrderbooleanyesOrder even though a report for this property already exists. Default: false.

get_human_certified_report — Get a Human-Certified Measure Report

Scope: hcmr:read. Read-only.

Fetch the status and results of a Human-Certified Measure Report by id. When complete, includes the download URLs (PDF, CSV, HTML, XML) and the parsed measurements: squares, roof area, and ridge, hip, valley, rake, eave, sidewall and headwall lengths in feet. Do not poll more often than every few minutes while pending.

ParameterTypeRequiredDescription
reportIdstringyes

list_human_certified_reports — List Human-Certified Measure Reports

Scope: hcmr:read. Read-only.

List the company's Human-Certified Measure Report orders, most recent first, optionally filtered by status or address text.

ParameterTypeRequiredDescription
statusall | pending | completed | failedyesDefault: "all".
searchTextstringnoAddress or customer name fragment.
mineOnlybooleanyesOnly reports this team member ordered. Default: false.
limitintegeryesDefault: 20.

attach_human_report_to_job — Attach a Human-Certified report to a customer job

Scope: hcmr:order. Makes changes.

Link a Human-Certified Measure Report to a customer job so it appears in that customer's workspace.

ParameterTypeRequiredDescription
reportIdstringyes
customerJobIdstringyesCustomer job id from search_customers (primaryJob.id).

list_quotes — List quotes

Scope: quotes:read. Read-only.

List the company's quotes with status, totals, and the customer or lead they belong to. Filter by status, customer, lead, or free text.

ParameterTypeRequiredDescription
statusall | draft | sent | viewed | accepted | declined | expired | converted | voidedyesDefault: "all".
customerIdstringno
leadIdstringno
searchTextstringnoCustomer name, address, or quote title fragment.
limitintegeryesDefault: 25.

get_quote — Get a quote

Scope: quotes:read. Read-only.

Fetch one quote in full: line items, totals, tax and financing snapshots, status timestamps, and the customer message. Use get_quote_public_link for the customer-facing link and PDF.

ParameterTypeRequiredDescription
quoteIdstringyes

get_quote_public_link — Get a quote's customer link

Scope: quotes:read. Makes changes.

Return the customer-facing link for a quote (the page the homeowner opens to review, accept, and pay), creating it if needed, and the quote PDF URL. Sharing the link is the user's decision; this tool does not send anything.

ParameterTypeRequiredDescription
quoteIdstringyes

list_project_media — List project media

Scope: media:read. Read-only.

Browse photos and documents in Project Media. With entityType + entityId, lists the media attached to that lead, customer, or the contractor library (grouped by date). Without an entity, returns the company-wide feed of recent media the team member may see. Use searchText and tags to narrow; results include thumbnail/preview/original URLs.

ParameterTypeRequiredDescription
entityTypelead | customer | contractorno
entityIdstringnoLead id, customer id, or the contractor id for the company library.
searchTextstringnoFilename, caption, tag, or address text.
tagsarrayno
folderIdstringnoOnly media in this folder (entity listings only).
cursorstringnonextCursor from a previous page.
limitintegeryesDefault: 30.

list_media_folders — List project media folders

Scope: media:read. Read-only.

List the folders that organise a lead's, customer's, or the company library's project media.

ParameterTypeRequiredDescription
entityTypelead | customer | contractoryes
entityIdstringyes

get_media_asset — Get a project media asset

Scope: media:read. Read-only.

Fetch one photo or document with its AI caption, detailed summary, tags, scene and photo type, quality flags, contractor note, technical (EXIF/GPS) metadata, and file URLs. Set includeImage to receive the preview as an image you can look at.

ParameterTypeRequiredDescription
entityTypelead | customer | contractoryes
entityIdstringyes
mediaAssetIdstringyes
includeImagebooleanyesReturn the preview image inline (photos only, up to ~1.5 MB). Default: false.

search_customers — Search customers

Scope: crm:read. Read-only.

Find customers in the company CRM by name, phone, email, or address. Returns each customer's id and their primary job (customerJobId, address, stage, measurement/report status) so measurements, reports, quotes, and media can be attached to the right job.

ParameterTypeRequiredDescription
searchTextstringnoName, phone, email, or address fragment. Omit to list recent customers.
includeArchivedbooleanyesDefault: false.
limitintegeryesDefault: 20.

search_leads — Search leads

Scope: crm:read. Read-only.

Find leads in the company CRM by name, phone, email, or address. Sales members only see leads assigned to them. Returns lead ids, contact details, product/source, lifecycle status, and the assigned sales member.

ParameterTypeRequiredDescription
searchTextstringnoName, phone, email, or address fragment. Omit to list recent leads.
statusactive | inactive | allyesDefault: "active".
limitintegeryesDefault: 20.