Skip to main content
This page lists 37 tools. Each tool shows only to members whose role grants its access. The descriptions are the text that the MCP server sends to AI clients.

List leads

List workspace Contacts as a sync feed ordered by updated_at, oldest first. Use from/to to read only recent changes. The feed also holds contacts without a usable email or phone, which the Contacts list and the dashboards leave out. Do not page this list to count leads: for totals or breakdowns in a period, call roofkit.analytics.metric.get. Arguments
number
Page size, 1 to 500. Default 50.
string
pagination.next_cursor of the previous page.
Matches name, email, phone, address, id, source, medium, or campaign.
string
ISO 8601 date-time with an offset. Keeps leads updated at or after it.
string
ISO 8601 date-time with an offset. Keeps leads updated at or before it.
string
First-touch source key, for example google.
string
string
string
A stage id from roofkit.leads.pipeline.list.
string
Key or label of a workspace lead type.
string
Allowed values: public_quiz, onsite_form, partner_api, jobnimbus_import, sms_inbound, phone_call.
string
Allowed values: call, sms.

Get lead

Get one lead by id. Arguments
string
required

Create lead

Create or upsert a lead. Requires an idempotency key. Arguments
string
required
string
string
string
string
string
Key or label of a workspace lead type. Built-in keys: phone_call, text_message, roofkit_site, own_website, ad_lead_form, chat, email, appointment, manual, crm_import, external, other. Create uses external when omitted. Update changes it only when sent. At most 100 characters.

Update lead

Update a lead as the app does. Requires an idempotency key. Only the fields sent change. Warning: notes replaces the whole Notes field, so send the full text. quote_value and sales_value need financial access. The change is live: a stage change can send conversions to connected ad and analytics accounts, the lead syncs to a connected JobNimbus, and automations run. Arguments
string
required
string
required
string
string
string
string
string
Key or label of a workspace lead type. Built-in keys: phone_call, text_message, roofkit_site, own_website, ad_lead_form, chat, email, appointment, manual, crm_import, external, other. Create uses external when omitted. Update changes it only when sent. At most 100 characters.
string | null
Replaces the whole Notes field. It does not append. Read the lead first and send all the text to keep. An empty string or null clears it. At most 5000 characters.
string
A stage id from roofkit.leads.pipeline.list. Moves the lead to it.
string | null
ISO 8601 date-time with Z or a +/-HH:MM offset, for example 2026-11-03T15:00:00-05:00. null clears it.
number | null
Quote value in dollars, not cents. Needs financial access. null clears it. Minimum 0. Maximum 10000000.
number | null
Sales value in dollars, not cents. Needs financial access. null clears it. Minimum 0. Maximum 10000000.
object
Custom field values by field key. Only the keys sent change, and null clears one. Each key must be an active custom field of the workspace.

List lead campaigns

List the marketing campaigns linked to a lead, with the first and last touch flags. Arguments
string
required

Attach campaign to lead

Link a marketing campaign to a lead, as the Campaigns section of the lead page does. The campaign becomes the last touch of the lead, and campaign reports count it. utm_campaign links the campaign of that key and creates the campaign when none exists. Requires an idempotency key. The change is live. Arguments
string
required
string
required
string
A campaign id from roofkit.leads.campaigns.list.
string
A campaign key, for example the key of a roofkit.campaigns.list row.

Detach campaign from lead

Remove the link between a marketing campaign and a lead. The first and last touch flags move to the remaining campaigns, and campaign reports stop counting the lead for it. The campaign itself stays. Requires an idempotency key. The change is live. Arguments
string
required
string
required
string
A campaign id from roofkit.leads.campaigns.list.
string
A campaign key, for example the key of a roofkit.campaigns.list row.

Archive lead

Archive a lead. Requires an idempotency key. Arguments
string
required
string
required

List pipeline stages

List lead pipeline stages. Arguments This tool takes no arguments.

List lead conversions

List conversion snapshots for a lead. Arguments
string
required

List Data Objects

List Data Object definitions for the workspace. Arguments This tool takes no arguments.

List Data Object records

List records for one Data Object, newest first. values are keyed by field id, and fields names each field (key, label, type). Arguments
string
required
number

Get Data Object schema

Read the schema of one Data Object: the table, its fields with id, key, type, options, and relation target, its relationships, and its views. Send the field ids to the record tools, a relationship id to roofkit.objects.links.create, and a view id to the view tools. A financial field that you cannot read has is_masked true. Arguments
string
required
Data Object id or slug, from roofkit.objects.list. Contacts is system:leads.

Get Data Object record

Read one record of a Data Object: values keyed by field id, its links with their ids, its stage history, and updated_at. A financial field that you cannot read has no value, and masked_field_ids names it. Arguments
string
required
Data Object id or slug, from roofkit.objects.list. Contacts is system:leads.
string
required
A record id from roofkit.objects.records.list.

Create Data Object record

Create one record in a custom table. The record is live at once for every member. relationships links the new record in the same write. Contacts and Reports refuse: create a lead with roofkit.leads.create. Needs the Data Tables plan. Writing a financial field needs financial access. Requires an idempotency key. Arguments
string
required
string
required
Data Object id or slug, from roofkit.objects.list. Contacts is system:leads.
object
required
Field values keyed by field id or field key, from roofkit.objects.get.
object[]

Update Data Object record

Change some fields of one record. Only the fields sent change, null clears one, and the change is live at once. On Contacts (system:leads) the email, phone, address, and attribution are read-only here: use roofkit.leads.update for a lead. A Contacts write also needs leads.write. Reports refuse. Undo a change with roofkit.objects.records.history.revert. A custom table needs the Data Tables plan. Writing a financial field needs financial access. Requires an idempotency key. Arguments
string
required
string
required
Data Object id or slug, from roofkit.objects.list. Contacts is system:leads.
string
required
A record id from roofkit.objects.records.list.
object
required
Field values keyed by field id or field key, from roofkit.objects.get.

Archive Data Object record

Archive one record of a custom table. It leaves every list at once, and its links are archived with it. Restore it with roofkit.objects.records.restore. Contacts and Reports refuse: archive a lead with roofkit.leads.delete. Needs the Data Tables plan. Requires an idempotency key. Arguments
string
required
string
required
Data Object id or slug, from roofkit.objects.list. Contacts is system:leads.
string
required
A record id from roofkit.objects.records.list.

Restore Data Object record

Restore one archived record of a custom table with the links archived with it. It is live at once. It refuses when its table is archived, when a unique field value is taken, or at the record limit of the plan. Needs the Data Tables plan. Requires an idempotency key. Arguments
string
required
string
required
Data Object id or slug, from roofkit.objects.list. Contacts is system:leads.
string
required
A record id from roofkit.objects.records.list.

Search relation targets

Search the records that a relation can link to, by name. object_id is the target table id: relation_target_object_id of a relation field in roofkit.objects.get, system:leads, or system:reports. Reports also need reports.read. Arguments
string
required
Target table id. A slug is not accepted.
string
At most 200 characters.
integer
Page size. Default 25. Minimum 1. Maximum 100.
string
pagination.next_cursor of the previous page.
List the links of one record. outgoing holds the links that the record holds, and incoming the links that other records hold to it. Send the id of an outgoing link, or the relationship_id of an incoming link, to roofkit.objects.links.delete. Arguments
string
required
Data Object id or slug, from roofkit.objects.list. Contacts is system:leads.
string
required
A record id from roofkit.objects.records.list.
Link two records through one relationship of the source table, from relationships in roofkit.objects.get. The link is live at once on both records, and the cardinality of the relationship applies. Needs the Data Tables plan. Requires an idempotency key. Arguments
string
required
string
required
string
required
A record of the source table of the relationship.
string
required
A record from roofkit.objects.relation_targets.search.
Remove one link between two records. It is gone from both records at once. Undo it with roofkit.objects.records.history.revert. Needs the Data Tables plan. Requires an idempotency key. Arguments
string
required
string
required
A link id from roofkit.objects.links.list.

Save Data Object view

Create a view of one table, or update the view that view_id names. Every member sees the change at once. config_json is the config of a view in roofkit.objects.get, as JSON text: its filters, sorts, and columns. A kanban view groups by a status field. When the table has none, RoofKit adds a Deal stages field and names it in seeded_status_field. Needs the Data Tables plan. Requires an idempotency key. Arguments
string
required
string
required
Table id: object.id from roofkit.objects.get. A slug is not accepted.
string
A view id from roofkit.objects.get.
string
required
At most 120 characters.
string
required
Allowed values: table, kanban, list.
string
At most 20000 characters.
string | null
Status field a kanban groups by.
boolean
Open this view first for every member.

Archive Data Object view

Archive one view of a table. It leaves the view list of every member at once. The last view of a table cannot be archived. Bring it back with roofkit.objects.schema.versions.restore. Requires an idempotency key. Arguments
string
required
string
required
Table id: object.id from roofkit.objects.get. A slug is not accepted.
string
required
A view id from roofkit.objects.get.

Create Data Object

Create a custom table from a template. It is live at once for every member with Data Objects access. It needs the Data Tables plan and room under the custom table limit: roofkit.objects.list answers custom_table_limit. Requires an idempotency key. Arguments
string
required
string
required
blank starts empty. Allowed values: blank, insurance_claims, referral_partners, hoa_approvals, production_jobs, sales_efficiency.
string
required
Table name, for example Jobs. At most 120 characters.
string
required
Name of one record, for example Job. At most 120 characters.
string | null
null clears it. At most 2000 characters.
string
required
Phosphor icon name, for example Table, HardHat, or ShieldCheck. At most 80 characters.
string
required
Hex color, for example #2563EB. RoofKit uses the nearest table palette color. At most 32 characters.
string
URL name. Default from label_plural. At most 80 characters.
string
The first view. Default table. Allowed values: table, kanban, list.

Update Data Object details

Change the name, description, icon, and color of a custom table. Send label_plural, label_singular, icon, and color each time. The change is live at once. Needs the Data Tables plan. Requires an idempotency key. Arguments
string
required
string
required
Table id: object.id from roofkit.objects.get. A slug is not accepted.
string
required
Table name, for example Jobs. At most 120 characters.
string
required
Name of one record, for example Job. At most 120 characters.
string | null
null clears it. At most 2000 characters.
string
required
Phosphor icon name, for example Table, HardHat, or ShieldCheck. At most 80 characters.
string
required
Hex color, for example #2563EB. RoofKit uses the nearest table palette color. At most 32 characters.

Save Data Object fields

Save the fields of one table with its name. Read roofkit.objects.get first and send every field in the order to show. A field with id changes it, and a field without id is created. archived_field_ids archives fields and hides their values. The change is live at once for every member. RoofKit keeps the schema before the save: roofkit.objects.schema.versions.restore brings it back. Needs the Data Tables plan. Requires an idempotency key. Arguments
string
required
string
required
Table id: object.id from roofkit.objects.get. A slug is not accepted.
string
required
Table name, for example Jobs. At most 120 characters.
string
required
Name of one record, for example Job. At most 120 characters.
string | null
null clears it. At most 2000 characters.
string
required
Phosphor icon name, for example Table, HardHat, or ShieldCheck. At most 80 characters.
string
required
Hex color, for example #2563EB. RoofKit uses the nearest table palette color. At most 32 characters.
object[]
required
string[]
string[]
Fields shown first on the record page.
string[]
Field ids in the order of the record page.

Archive Data Object

Archive one custom table with its records and links. It leaves the navigation of every member at once. A built-in table, such as Contacts, Reports, or Opportunities, refuses with CONFLICT. Restore it with roofkit.objects.restore. Requires an idempotency key. Arguments
string
required
string
required
Table id: object.id from roofkit.objects.get. A slug is not accepted.

Restore Data Object

Restore one archived custom table with its records and links. It needs room under the custom table limit of the plan. Requires an idempotency key. Arguments
string
required
string
required
Table id: object.id from roofkit.objects.get. A slug is not accepted.

List archived tables and records

List the archived records of custom tables, and the archived tables when you can manage the schema. Restore them with roofkit.objects.records.restore and roofkit.objects.restore. Arguments This tool takes no arguments.

Export Data Object CSV

Export the records of one table to a CSV file and return download_url. The link works for 15 minutes without sign-in, so share it only with people who may read the data. The answer never holds the CSV. A custom table export without search, in created_at or updated_at order, holds up to 1,000 records: call again with next_cursor while has_more is true. Financial columns follow your financial access. The CSV export rule of the plan for your role applies. Arguments
string
required
Data Object id or slug, from roofkit.objects.list. Contacts is system:leads.
string
A view id from roofkit.objects.get.
string
At most 200 characters.
string
Filters in the form of a view config_json. At most 20000 characters.
string
Sorts in the form of a view config_json. At most 20000 characters.
string
next_cursor of the previous export.

Import Data Object CSV

Import CSV rows into one custom table as new records. Send the CSV text, up to 2 MB, and one mapping for each CSV column: field (an existing field id), create_field (a new field, also needs data_objects.schema.manage), or ignore. Valid rows are live at once. rejected_rows names each row that failed and why. Contacts and Reports refuse. Needs the Data Tables plan. Writing a financial field needs financial access. Requires an idempotency key. Arguments
string
required
string
required
Data Object id or slug, from roofkit.objects.list. Contacts is system:leads.
string
required
Name of the CSV file, for the import history. At most 200 characters.
string
required
The CSV text with a header row. At most 2000000 characters.
object[]
required

List record history

List the change history of one Data Object record, newest first. Each change names its kind (create, import, update, archive, restore, link, unlink, revert, restore_version), its source (ui, agent, mcp, partner_api, system), the member who made it, and each changed field with its value before and after. A financial field you cannot read shows restricted: financial and no values. record.updated_at is the value to send as expected_updated_at to revert or restore. Arguments
string
required
Data Object id or slug, from roofkit.objects.list.
string
required
integer
Page size. Default 20. Minimum 1. Maximum 50.
string
next_cursor of the previous page.

Revert record change

Undo one change of a Data Object record. The change is live at once. A field change sets each field back to its value before the change. An archive restores the record, a restore archives it, a link removes the link, and an unlink adds it back. A create or an import cannot be reverted. The call refuses with CONFLICT when the record changed after you read it, or when a later change wrote one of the same fields: then use roofkit.objects.records.history.restore. Writing a financial field needs financial access. Requires an idempotency key. Arguments
string
required
string
required
Data Object id or slug, from roofkit.objects.list.
string
required
string
required
A change id from roofkit.objects.records.history.list.
string
required
record.updated_at from the history you read. A record that changed since refuses the write with CONFLICT.

Restore record version

Restore the field values a Data Object record held right after one change, by undoing every later value change. The change is live at once. Links and the archive state stay as they are. The call refuses with CONFLICT when the record changed after you read it, or when the record is archived. Writing a financial field needs financial access. Requires an idempotency key. Arguments
string
required
string
required
Data Object id or slug, from roofkit.objects.list.
string
required
string
required
A change id from roofkit.objects.records.history.list.
string
required
record.updated_at from the history you read. A record that changed since refuses the write with CONFLICT.

List schema versions

List the saved versions of a Data Object schema and of its visualizations, newest first. RoofKit keeps one version before each schema save, field save, visualization save, and visualization archive. Each version names its kind (schema or view), the member and source of the save, and current_updated_at, the value to send as expected_updated_at to restore it. Arguments
string
required
Data Object id or slug, from roofkit.objects.list.
integer
Page size. Default 20. Minimum 1. Maximum 50.
string
next_cursor of the previous page.

Restore schema version

Restore one version of a Data Object schema or visualization. The change is live at once for every member. A schema restore writes back the table labels, the fields, and their options, and archives fields created after the version. skipped_field_ids names the fields it could not restore, such as a relation whose relationship was archived. The state before the restore becomes a version too. The call refuses with CONFLICT when the schema or the visualization changed after you read it. A visualization restore also needs the visualization manage permission. Requires an idempotency key. Arguments
string
required
string
required
Data Object id or slug, from roofkit.objects.list.
string
required
A version id from roofkit.objects.schema.versions.list.
string
required
current_updated_at of the version, as you read it.