Connect Claude, ChatGPT or any MCP-capable AI assistant to your own SitesAI data — what the connectors do, how to turn one on, and exactly which tools each one exposes.
SitesAI publishes two MCP servers (Model Context Protocol — the open standard AI assistants use to reach external systems). Once you connect one, you can ask your AI assistant questions about your own worksite data in plain language — “which jobs are quoted but not scheduled?”, “what did we cut on the Kilsyth site?” — and it answers from the live records in your account.
https://app.sitesai.net/api/mcp/mcphttps://takeoff.sitesai.net/api/mcpBoth speak MCP streamable HTTP over HTTPS and support OAuth 2.1 (authorisation code + PKCE) as well as personal API keys.
Connectors are off by default — nothing is shared with any AI assistant until you deliberately connect one.
Revoking access: every key and every OAuth connection is listed at app.sitesai.net/ai-keys and can be revoked at any time — it stops working immediately.
The App connector exposes 107 tools: 48 read tools and 59 write tools. Every one is listed below.
Read tools (safe, never change anything):
| Tool | What it does |
|---|---|
lookup_by_phone | Who is this phone number? Matches the last 9 digits across CRM contacts, accounts, company members and leads. Call this first on every inbound call… |
search_records | Global search across ALL company records in one call — leads (job #/name/client), quotes, tasks, comments/diary notes (incl. photo/file attachments… |
list_activity | Company log book: EVERYTHING that happened in a time window, newest first — tasks created/done/approved, leads created & stage moves, comments (the… |
company_overview | One-call company snapshot: dashboard stats, lead pipeline (open/due/won + counts by stage), task buckets, and the company timezone (all date/time s… |
get_phone_agent_config | This company's SitesAI Voice phone-agent config — greeting, behaviour, allowed tools, business profile, timezone and active services: what the voic… |
list_leads | List CRM leads (sales pipeline). Filter by search text, exact stage, bucket (live/won/closed), or due=true for follow-ups due now. |
get_lead | One lead in full: every field (incl. lead_ref, the user-facing job #) plus its attached contacts (people from any company, one flagged primary), ac… |
list_lead_types | The company's lead types — the definable categories every lead belongs to (their labels switch the generic text/date/number fields on for leads of… |
list_quotes | List customer quotes (draft/sent/accepted/rejected) with totals. Filter by status, lead, or search text. |
get_quote | One quote in full: header, every line (qty/unit/rate/GST, 3DX provenance), totals (ex GST / GST / inc GST), and the client share URL once sent. |
list_tasks | List company tasks. Filter by status (open/done/approved), assignee email, search text, or due=true for tasks due now. |
list_sites | List the company's sites/work locations (projects, workshops, storage, offices). The q search matches name, address, project ref and phone (multi-w… |
get_site | One site in full. As the OWNER: detail (address, timezone, geofence, hours), the induction, document_requirements, granted_companies (subcontractor… |
list_services | List the company's service catalogue + pricing (for customer pricing & support). Each service: name, description, category (parent_name), and rate… |
list_items | List the company's items/equipment/stock. The q search matches name, part number, brand and description (multi-word). Use flag="hire" or flag="sale… |
get_item | Get one item by item_id — full detail incl. for_hire / for_sale, price, qty_on_hand, unit, category. qty_on_hand is derived from the stock ledger;… |
list_stock_moves | Stock ledger: every movement of material, parts, consumables or fuel. qty is SIGNED — positive means it came IN (a delivery received against a purc… |
get_purchase_order | Get one purchase order by po_id — supplier, deliver-to site, status (draft | quote | ordered | received | cancelled) and every line. Each line carr… |
list_accounts | List CRM accounts (client/supplier companies). The q search matches name, type, industry, site, website and phone (multi-word, order-independent). |
get_account | One CRM account in full, with its contacts and its leads. |
list_contacts | List CRM contacts (people). The q search matches name, role/title, email, company and phone (multi-word, order-independent). For a pure phone-numbe… |
list_worktime | Crew shifts — who worked / is clocked in where. Rows carry planned_start/finish (the accepted roster offer, for planned-vs-actual) and the signatur… |
worktime_summary | Hour TOTALS for a date range — "how many hours did Sam work last month", or how much time went into a site — without listing every shift and adding … |
list_action_entries | Recorded KPI/action entries — the company's operation log (truck loads, pit sets, deliveries…). One row per record: entry time, qty, material, mach… |
list_dockets | Signed DOCKETS: one per operator + machine + site + action + company-local day, over the KPI entries recorded that day — the plant-hire / cartage b… |
get_docket | One docket in full: header, signature + confirmation blocks, and its LINES — live entries while open, the FROZEN snapshot once signed (never re-der… |
list_shifts | PLANNED shifts (the roster/calendar): offers to members with status offered | accepted | rejected (reject_reason says why) | cancelled | expired (o… |
get_shift | One planned shift in full (status, window, note, reject reason, who responded). |
list_no_shows | Day-of check: ACCEPTED shifts on the site-local TODAY whose start passed the 15-minute grace with NO clock-in — 'rostered but not here'. Optionally… |
calendar_events | The company calendar in one call: planned shifts, task due dates, lead follow-ups and document expiries for a date window (plus what the /calendar… |
list_members | Company members that leads and tasks can be assigned to (email + display name). Use to resolve a person name to an email before create_task / updat… |
list_processes | Operations knowledge base: list the company's documented processes (SOPs live under a process). A process can also RUN as a guided flow (worker wiz… |
get_process | One process with its ordered SOP steps (input/instruction/output, branch edges, checklists, executable action_type/action_config) and sub-processes. |
get_sop | One SOP step in full (input/output/role/instruction, media, next steps, checklists, executable action_type/action_config). |
list_flow_assignments | List guided-flow assignments — which members/roles follow which process wizard. |
list_flow_runs | Guided-flow runs — who walked which flow when, current step, steps done. Filter by process, member email, date range (YYYY-MM-DD). |
get_flow_run | One guided-flow run in full: the run, the current step, every completed step with what it created (shift/task/comment refs). |
get_flow_design_guide | READ THIS FIRST before designing or editing processes: how SOPs (shared library), processes (ordered lists of SOPs) and flows (worker wizard runs) … |
list_step_types | The catalog of step types a SOP can have (action_type): what each does in the worker wizard, its action_config keys (kind, required, defaults, opti… |
list_sops | The company's SOP LIBRARY — every SOP once, with the processes it is a step of (used_in). SOPs are SHARED building blocks: the same "Check in" can … |
list_flow_offers | Processes that HOST companies offer on sites my company is granted on (the subcontractor view of "Working for <host>"): host, site, whether we alre… |
list_tags | NFC / QR tags: a physical sticker carrying https://app.sitesai.net/t/<code>. A worker's tap opens the app and ACTS per purpose — site tag: clock in… |
list_doc_types | Document types the company can use — the shared system types (License, Certificate, Insurance, SWMS, White Card, Induction Cert, Other) plus the co… |
list_site_document_requirements | The documents a site asks for: one row per (document type × scope) — scope company (insurance…), member (each person's licences/cards), unit (each … |
list_documents | The documents the company can see, in one list: its own (relation company), its members' (member — any live connection), its machines' (unit) and d… |
site_compliance | WHO IS NON-COMPLIANT ON WHAT, right now: every requirement × subject cell on a site (company / member / machine) with the submitted document, its s… |
compliance_overview | The company's compliance at a glance: expiring documents (own + shared with it, active holders only), submissions awaiting your review (as a site o… |
get_file | Open a photo or file attached to a record — pass a photo_path / file_path value exactly as another tool returned it (e.g. from a comment on get_lea… |
Write tools (only reachable with a read-and-write key or connection; each is a single, narrow action). They come in three kinds, and each tool carries that kind as a machine-readable MCP annotation, so your AI client knows which is which before it runs one:
Add something new — creates a record and overwrites nothing (annotated not destructive): create_lead, create_lead_type, create_quote, add_quote_line, create_account, create_contact, add_comment, create_process, create_sop, add_sop_next, create_checklist, assign_flow, add_process_step, start_flow_offer, create_doc_type, create_document, submit_document, assign_to_site, grant_site_company, register_tag.
Change or remove something that already exists — annotated destructive, so your AI client can ask before it runs: update_lead_type, update_quote_line, delete_quote_line, attach_lead_contact, detach_lead_contact, delete_lead, delete_task, update_account, delete_account, update_contact, delete_contact, update_comment, delete_comment, update_worktime, update_process, update_sop, remove_sop_next, unassign_flow, remove_process_step, move_process_step, set_process_steps, delete_process, delete_sop, update_doc_type, set_site_document_requirements, review_submission, revoke_site_company, revoke_tag.
Reaches a person outside the app — these email or notify someone as well as changing a record, so they are annotated destructive and open-world (the message cannot be recalled): create_task, update_task, update_lead, update_quote, create_shift, create_shifts_bulk, respond_shift, reoffer_shift, reassign_shift, cancel_shift, add_member.
| Tool | What it does | Type |
|---|---|---|
get_project_summary | Get project summary | Read |
list_layers | List plan layers | Read |
list_sheets | List design sheets | Read |
list_takeoffs | List take-off groups | Read |
list_elements | List earthworks elements | Read |
get_estimate | Get the estimate | Read |
get_page_image | Render the plan as an image | Read |
get_ai_authoring_context | Get AI authoring context | Read |
apply_delta | Draw take-offs / elements (apply delta) | Write |
manage_sheets | Add, rename or activate a sheet | Write |
add_layer_from_url | Add a plan layer from a URL | Write |
calibrate_layer_scale | Calibrate a layer's scale | Write |
align_layer | Align a layer onto the plan | Write |
update_estimate | Edit the estimate | Write — irreversible |
run_auto_takeoff | Run AI vision auto take-off | Write |
run_vector_takeoff | Run deterministic vector take-off | Write |
list_cad_layers | List CAD layers on a page | Read |
delete_takeoff | Delete a take-off group | Write — irreversible |
save_project | Save the project | Write |
new_project | Start a new project (background mode) | Write — irreversible |
open_project | Open a .3dx project (background mode) | Write — irreversible |
add_layer_from_data | Add a plan layer from file bytes | Write |
SitesAI Estimate can run live in your open browser tab (changes appear as the assistant makes them) or in background mode without a tab. Deeper technical notes are in the product's MCP documentation.
Trouble connecting, or a tool doing something you didn't expect? Email admin@sitesai.net — we usually reply within one business day. See also our support page and privacy policy.