Integration

ProLine integration

ProLine is a roofing CRM. Its Partner API reads and writes one company's data: find, create and update projects and contacts, list jobs, quotes, orders, invoices and payments, schedule or cancel events and check availability, log calls, messages and alerts, read activity feeds and project files, import projects, contacts, activities, files and taxonomy values, and manage insurance claims (phases, groups, line items, mapping templates, documents, PDF export and AI extraction). Outbound webhooks are set up in ProLine, not here. Every call needs two keys: the Partner Key ProLine issues when it approves an integration application (Settings, Developer, Partner API) and the Company Key of the company (Settings, Developer, Company Keys). Calls are rate limited per company key and path: 1 per second for single finds and lookups, 1 per 5 seconds for lists, bulk finds, claims and every write (429 with Retry-After).

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in ProLine.Built from the 75 ProLine tools below, on the connection you add once.

What you can do with ProLine

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Each badge shows the default agent permission of an endpoint (allowed: an agent calls it without asking; ask first: you are asked before an agent calls it, when the agent or chat asks permission for sensitive actions; never: no agent may call it), which every user can change endpoint by endpoint in their credential settings.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Claim, 5 operations

  • add_claim_to_quoteAdd claim to quotePOSTAgents: ask firstAdds a claim, or one of its phases, to an existing quote of the same project under a quote service (service_id) and returns the quote page id. Send a new Idempotency-Key. Needs the claim's version from find_claim.
  • create_claimCreate claimPOSTAgents: ask firstCreates an insurance claim on a project (or a fresh Draft copy of another claim of that project with source_claim_id) and returns it with its version. Never upserts. Send a new Idempotency-Key.
  • edit_claimEdit claimPOSTAgents: ask firstEdits a claim header (name, status, assignee, deductible, depreciation flags, vendor tax). Send a new Idempotency-Key. Needs its current version (from find_claim or list_claims) as expected_version; a stale one answers 409.
  • find_claimFind claimPOSTAgents: ask firstReturns one claim by claim_id or your external_id (send exactly one): header, phases, groups, financial summary and its current version. Not cached, so the version is fresh.
  • list_claimsList claimsPOSTAgents: ask firstPages through compact claim headers with phase summaries, filtered by project, status, stage and more (cursor paging, default 20 per page). Use find_claim for groups and totals.

Event, 5 operations

  • cancel_eventCancel eventPOSTAgents: ask firstCANCELS the event named by event_id (it is marked cancelled, not deleted). Events from an external calendar cannot be cancelled here.
  • edit_eventEdit eventPOSTAgents: ask firstReschedules the event named by event_id, or creates one on project_id; start_date is always required and the end follows the event type's duration. Fires event webhooks; a new event adds the main contact's email as participant.
  • find_eventFind eventPOSTAgents: ask firstFinds one event by event_id, external_id, project (latest live event in the window) or day, and returns it under body (a list of one, empty when nothing matches). Contains contact details.
  • find_eventsFind eventsPOSTAgents: ask firstLooks up 1 to 100 events at once by project_ids, event_ids or external_ids (send exactly one list); results has one entry per key, event null when not found.
  • list_eventsList eventsPOSTAgents: ask firstPages through company events oldest first, filtered by start window, project, type, assignee or calendar. Follow next_cursor while has_more is true, even past an empty page. Lists guest emails.

Project, 5 operations

  • edit_projectEdit projectPOSTAgents: ask firstUpdates a project and its main contact, or creates both, and can schedule an event on it. Blank fields are left unchanged. Fires project webhooks. Rejections come in body.response with error true.
  • find_projectFind projectPOSTAgents: ask firstFinds one project by project_id, then external id, then main contact, then address, and returns it under body (a list of one, empty when nothing matches) with its contacts and financials.
  • find_projectsFind projectsPOSTAgents: ask firstLooks up 1 to 100 projects at once by project_ids, external_ids or contact_ids (send exactly one list); results has one entry per key, project null when not found.
  • import_projectImport projectPOSTAgents: ask firstCreates one project, and its main contact when none matches, from another system. Deduplicated on project_external_id (duplicate true, nothing created). Queues accounting sync and stage workflows.
  • list_projectsList projectsPOSTAgents: ask firstPages through the company's projects, newest first (or by update with updated_after): stage, contacts, budget and status dates, up to 100 per page. Contains contact details.

Activity, 4 operations

  • edit_activityEdit activityPOSTAgents: ask firstCorrects the date, notes, project or contact of an existing call, message, email or note activity (other types are refused); it never creates one. Fields left out stay unchanged.
  • find_activityFind activityPOSTAgents: ask firstReturns one activity by id, a call with its transcript segments, email and message content included (personal data). An unknown id answers an empty list, not an error.
  • import_activityImport activityPOSTAgents: ask firstLogs one historical activity (call, message, note or email) on a contact and/or project, with no call or message record and no deduplication: sending it twice logs it twice.
  • list_activitiesList activitiesPOSTAgents: ask firstPages through the activity feed of exactly one project_id, contact_id or org_id, newest first, optionally by activity types and date window. Personal data (messages, emails, calls).

Claim document, 4 operations

  • create_claim_documentCreate claim documentPOSTAgents: ask firstAttaches an existing file of the claim's project (file_id from list_project_files) to a claim, optionally to a phase or item. Send a new Idempotency-Key.
  • export_claim_pdfExport claim pdfPOSTAgents: ask firstQueues a PDF export of a claim (or one phase) and answers at once with a queued document; poll list_claim_documents until its status is completed (url) or failed. Send a new Idempotency-Key. Needs the claim version.
  • extract_claim_pdfExtract claim pdfPOSTAgents: ask firstQueues AI extraction of a project PDF (50 MB max) into an EMPTY Draft-stage phase; needs AI estimate access, additional_only true and the claim version. Poll list_claim_documents for completed or failed.
  • list_claim_documentsList claim documentsPOSTAgents: ask firstPages through the documents of a claim and the state of its PDF jobs (queued, processing, completed with url, failed with error; plain attachments are ready). Poll it after export_claim_pdf or extract_claim_pdf.

Claim item, 4 operations

  • create_claim_itemsCreate claim itemsPOSTAgents: ask firstCreates 1 to 100 line items on a claim in one all-or-nothing batch; each needs a name and either rcv or quantity, unit_price and tax_total. Never updates. Send a new Idempotency-Key.
  • delete_claim_itemsDelete claim itemsPOSTAgents: ask firstDELETES 1 to 100 claim line items atomically, each with item_id and its expected_version from list_claim_items; one stale version cancels the whole batch. Send a new Idempotency-Key.
  • edit_claim_itemsEdit claim itemsPOSTAgents: ask firstEdits 1 to 100 claim line items atomically, each with item_id and expected_version from list_claim_items. dry_run true previews totals and a preview_token without saving; commit with a new Idempotency-Key.
  • list_claim_itemsList claim itemsPOSTAgents: ask firstPages through the line items of one claim with their mapping rows and versions, filterable by phase, group, approval status and name (cursor paging, 50 per page by default).

Claim mapping template, 4 operations

  • create_claim_mapping_templateCreate claim mapping templatePOSTAgents: ask firstCreates a claim mapping template: a name, a quantity mode (absolute or percentage) and rows of price list items with quantities. Never upserts. Send a new Idempotency-Key.
  • delete_claim_mapping_templateDelete claim mapping templatePOSTAgents: ask firstDELETES a claim mapping template. Send a new Idempotency-Key. Needs its current version (from list_claim_mapping_templates) as expected_version; a stale one answers 409.
  • edit_claim_mapping_templateEdit claim mapping templatePOSTAgents: ask firstEdits a claim mapping template's name, quantity mode or rows. Send a new Idempotency-Key. Needs its current version (from list_claim_mapping_templates) as expected_version; a stale one answers 409.
  • list_claim_mapping_templatesList claim mapping templatesPOSTAgents: ask firstPages through the company's claim mapping templates: rows of price list items with absolute or percentage quantities, and each template's version.

Contact, 4 operations

  • edit_contactEdit contactPOSTAgents: ask firstUpdates a contact found by contact_id or phone, or creates one (needs contact_fname). Blank fields are left unchanged. Logs activities and fires contact webhooks. Rejections come in body.response with error true.
  • find_contactFind contactPOSTAgents: ask firstFinds one contact by contact_id, then phone, then email, then address, and returns it under body (a list of one, empty when nothing matches). Personal data.
  • find_contactsFind contactsPOSTAgents: ask firstLooks up 1 to 100 contacts at once by contact_ids, phones or emails (send exactly one list); results has one entry per key, contact null when not found. Personal data.
  • import_contactImport contactPOSTAgents: ask firstCreates one contact from another system (needs a first name, last name, email or phone). Deduplicated only on external_id; without it every call creates a new contact. Fires contact-created webhooks.

Claim group, 3 operations

  • create_claim_groupCreate claim groupPOSTAgents: ask firstCreates a named item group on a claim, optionally at a position, and returns it with its version. Send a new Idempotency-Key.
  • delete_claim_groupDelete claim groupPOSTAgents: ask firstDELETES a claim item group. Send a new Idempotency-Key. Needs its current version (from find_claim) as expected_version; a stale one answers 409.
  • edit_claim_groupEdit claim groupPOSTAgents: ask firstRenames or repositions a claim item group. Send a new Idempotency-Key. Needs its current version (from find_claim) as expected_version; a stale one answers 409.

Claim stage, 3 operations

  • create_claim_stageCreate claim stagePOSTAgents: ask firstCreates a company claim stage with a name, a category (draft, awaiting_carrier, action_required or closed) and a hexadecimal color. Send a new Idempotency-Key.
  • edit_claim_stageEdit claim stagePOSTAgents: ask firstEdits a company claim stage's name, category, color or position. Send a new Idempotency-Key. Needs its current version (from list_claim_stages) as expected_version; a stale one answers 409.
  • list_claim_stagesList claim stagesPOSTAgents: ask firstPages through the company's claim stages: name, category (draft, awaiting_carrier, action_required, closed), color, position and version.

Project file, 3 operations

  • create_project_fileCreate project filePOSTAgents: ask firstDownloads the public file at file_url (50 MB max) and stores it on a project; sending the same URL twice stores two files. Needs the import permission on the partner key.
  • import_fileImport filePOSTAgents: ask firstDownloads the public file at file_url (50 MB max) and attaches it to a project found by id or external id, or to a contact's newest project. No deduplication. Needs the import permission.
  • list_project_filesList project filesPOSTAgents: ask firstPages through the files of one project, newest first, with download URLs, folder and photo details; filter by folder, media type prefix or date. Up to 100 per page.

Claim phase, 2 operations

  • create_claim_phaseCreate claim phasePOSTAgents: ask firstCreates a supplement phase on a claim, optionally titled and placed in a claim stage (stage_id). Send a new Idempotency-Key.
  • edit_claim_phaseEdit claim phasePOSTAgents: ask firstEdits a claim phase's title or stage; for the initial phase send phase_id initial plus claim_id. Send a new Idempotency-Key. Needs its current version (from find_claim) as expected_version; a stale one answers 409.

Alert activity, 1 operation

  • create_alert_activityCreate alert activityPOSTAgents: ask firstAdds an alert activity (titled alert_text) to a contact and/or a project; a contact linked to a project gets one on each, nothing deduplicated. activity_created is a COUNT here, not an id.

Availability, 1 operation

  • check_availabilityCheck availabilityPOSTAgents: ask firstReturns the open appointment start times of one or more team members between start_date and end_date (30 days max), one row per member, as comma-separated times in the company's default time zone.

Call activity, 1 operation

  • create_call_activityCreate call activityPOSTAgents: ask firstLogs a phone call with a contact (a call record plus its activity); it places no call. Inbound unless type is outgoing. external_id dedupes: without it a repeat logs the call again.

Contact tag, 1 operation

  • list_contact_tagsList contact tagsPOSTAgents: ask firstLists the company's active contact tags (id and label) for the contact_tags fields.

Contact type, 1 operation

  • list_contact_typesList contact typesPOSTAgents: ask firstLists the company's active contact types (id, label, default flag) for the contact_type fields.

Custom field, 1 operation

  • list_custom_field_definitionsList custom field definitionsPOSTAgents: ask firstLists the numbered custom text field slots of projects (1 to 7) or contacts (1 to 3) with label and status (live, deleted, unassigned). entity_type is required.

Event type, 1 operation

  • list_event_typesList event typesPOSTAgents: ask firstLists every event type of the company (id and name), default type first. Pass id as event_type to the event tools.

Invoice, 1 operation

  • list_invoicesList invoicesPOSTAgents: ask firstPages through the company's invoices, newest first: totals, balance, status dates, billing and customer contact details, up to 100 per page. Personal data.

Job, 1 operation

  • list_jobsList jobsPOSTAgents: ask firstPages through the company's jobs, newest first: project, service and stage, up to 100 per page.

Lead source, 1 operation

  • list_lead_sourcesList lead sourcesPOSTAgents: ask firstLists the company's active lead sources (id, label, referral flag) for the lead source fields.

Location, 1 operation

  • list_locationsList locationsPOSTAgents: ask firstLists the company's locations: id, label, city, state, IANA time zone and default flag.

Message activity, 1 operation

  • create_message_activityCreate message activityPOSTAgents: ask firstLogs a text message exchanged with a contact on its latest project (a message record plus its activity); it sends nothing. Inbound unless type is outgoing. external_id dedupes repeats.

Order, 1 operation

  • list_ordersList ordersPOSTAgents: ask firstPages through the company's purchase and work orders, newest first: project, quote, job, vendor, signing status and totals, up to 100 per page.

Org stage, 1 operation

  • list_org_stagesList org stagesPOSTAgents: ask firstLists the active stages of the company's organization pipelines (id, label, pipeline, order).

Org type, 1 operation

  • list_org_typesList org typesPOSTAgents: ask firstLists the company's organization types, which are its organization pipelines (id, label, order, color).

Payment, 1 operation

  • list_paymentsList paymentsPOSTAgents: ask firstPages through the company's payments, newest first: project, invoice, status, method and amounts, up to 100 per page.

Price list item, 1 operation

  • list_price_list_itemsList price list itemsPOSTAgents: ask firstPages through the price list items (company and enterprise) usable in claim mappings: name, unit of measure, price. Inactive items only with include_inactive true.

Project area, 1 operation

  • list_project_areasList project areasPOSTAgents: ask firstLists the company's project areas (id and label) for project_area on edit_project and area on import_project.

Project category, 1 operation

  • list_project_categoriesList project categoriesPOSTAgents: ask firstLists the company's project categories (id and label) for the project_category fields.

Project folder, 1 operation

  • list_project_foldersList project foldersPOSTAgents: ask firstPages through the folders of one project in tree order, or the direct children of parent_folder_id. Up to 100 per page.

Project service, 1 operation

  • list_project_servicesList project servicesPOSTAgents: ask firstLists the company's project services (id, label, display order, color) for the project_services fields.

Project stage, 1 operation

  • list_project_stagesList project stagesPOSTAgents: ask firstLists the stages of the company's project pipelines (id, name, pipeline). Pass id as project_stage to edit_project; find_project returns it as stage_id.

Project tag, 1 operation

  • list_project_tagsList project tagsPOSTAgents: ask firstLists the company's project tags (id and label) for the project_tags fields.

Project type, 1 operation

  • list_project_typesList project typesPOSTAgents: ask firstLists the company's project types (id and label) for the project_type fields.

Quote, 1 operation

  • list_quotesList quotesPOSTAgents: ask firstPages through the company's quotes, newest first: project, customer, sent and signed dates, totals and deposit terms, up to 100 per page. Contains customer names.

Taxonomy, 1 operation

  • import_tagsImport tagsPOSTAgents: ask firstCreates taxonomy values by name (contact types and tags, lead sources, project types, categories, services, areas); names that exist are listed under ignored, the rest under created.

Team member, 1 operation

  • find_team_memberFind team memberPOSTAgents: ask firstFinds one team member by ProLine phone number, then exact email, then display name; body is a list of at most one member (user_id, display_name, ProLine number), empty when none.

User, 1 operation

  • list_usersList usersPOSTAgents: ask firstLists the company's active members (id, name, email, role); pass an id where a tool takes a team member or assignee. Personal data.

Vendor tax, 1 operation

  • list_vendor_taxesList vendor taxesPOSTAgents: ask firstPages through the active vendor taxes (tax rates) of the company: vendor_tax_id, name, percentage and cost categories. Pass vendor_tax_id to create_claim or edit_claim.

Use ProLine from Claude Code, Cursor or Codex

Connect ProLine in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its ProLine operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect ProLine

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect ProLine once

    Add your ProLine connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

ProLine integration FAQ

What can you do with the ProLine integration?

LiveContext exposes 75 operations on ProLine, covering claim, event, project and activity.

Popular integrations

Browse the whole catalog