# MCP tool reference

> All 35 tools on the hosted MCP server, grouped by area, with arguments and behavior notes — businesses, knowledge, workflows, phone, SMS compliance, campaigns, contacts, CRM, integrations.

The server exposes **35 tools**. Read tools run freely; mutating tools act immediately. Most tools take a `project` argument — the business — which accepts the name or the ID; a wrong value errors back with the real options.

## Businesses & services

| Tool | Arguments | Notes |
| --- | --- | --- |
| `list_projects` | — | Every business with its services and their agent IDs. |
| `create_project` | `name` | Creates the business. |
| `create_service` | `project`, `type`, `name` | Types: `chatbox`, `receptionist`, `helpdesk`, `crm`, `scheduler`, `whatsapp`, `instagram`, `messenger`, `sms`, `calendar`. Chatbox/receptionist get their backing agent automatically. |
| `get_analytics` | `project` | The Home dashboard as data: chats, calls, tickets, leads, volume. |

## Knowledge

| Tool | Arguments | Notes |
| --- | --- | --- |
| `add_knowledge` | `project`, `kind` (text / qa / url), `title`, `text` / `question`+`answer` / `url` | URL kind crawls the page(s); text and Q&A train directly. |
| `list_knowledge` | `project` | Every trained source with status. |

## Workflows

| Tool | Arguments | Notes |
| --- | --- | --- |
| `list_workflows` | `project` | Workflows with channel, service, and live status. |
| `create_workflow` | `project`, `name`, `description?`, `service_id?`, `graph?` | Creates the workflow (optionally with a full node/edge graph); returns validation. |
| `update_workflow_graph` | `project`, `workflow_id`, `graph` | Replaces the staging graph; returns validation. |
| `get_workflow` | `project`, `workflow_id` | The full graph plus versions. |
| `set_workflow_triggers` | `project`, `workflow_id`, `triggers[]` | Events from the [trigger reference](/docs/workflows/triggers), with optional form/board filters. |
| `publish_workflow` | `project`, `workflow_id` | Promotes staging to production. |
| `test_workflow` | `project`, `workflow_id`, `name?`, `email?`, `phone?` | Fires the workflow against a test person — the SMS really sends, to the number you give. |

## Phone & texting

| Tool | Arguments | Notes |
| --- | --- | --- |
| `search_phone_numbers` | `area_code?`, `region?` | Available local numbers. |
| `buy_phone_number` | `project`, `number`, `sms?`, `label?` | Respects billing — live purchases go through Stripe checkout. |
| `list_phone_numbers` | `project` | Owned numbers with voice/texting tags and assignments. |
| `setup_receptionist` | `project`, `greeting`, …persona fields | Configures the receptionist service's greeting and behavior. |
| `get_sms_compliance` | `project` | A2P registration status + exactly which fields are missing. |
| `save_sms_compliance` | `project`, business profile fields | Saves the registration profile (legal name, EIN, opt-in method…). |
| `register_sms_compliance` | `project` | Submits for carrier registration. |
| `assign_sms_number` | `project`, `number` | Attaches an approved texting number to the SMS service. |

## Outreach & people

| Tool | Arguments | Notes |
| --- | --- | --- |
| `create_campaign` | `project`, `service_id`, audience/message fields | The campaign runs on the chosen service — its number, its agent. Requires the outbound entitlement. |
| `get_campaign` | `project`, `campaign_id` | Status and per-recipient results. |
| `list_contacts` | `project` | Contacts with DND state. |
| `add_contact` | `project`, `name?`, `email?`, `phone?` | Upserts by phone → email match. |

## CRM & integrations

| Tool | Arguments | Notes |
| --- | --- | --- |
| `get_crm` | `project` | Every CRM service with its boards, columns, tables, forms and keys — the ids every other CRM tool needs. |
| `create_crm_table` | `project`, `service_id`, `name`, `fields?` | Creates a table and its column schema. Field types: `text`, `textarea`, `number`, `date`, `boolean`, `email`, `phone`, `select` (with `options`), `url`. Keys are slugged from labels. Omit `fields` for a name/email/phone/message default. |
| `create_crm_board` | `project`, `service_id`, `name`, `columns?` | Creates a board (pipeline). Naming `columns` replaces the seeded default stages. |
| `create_crm_api_key` | `project`, `service_id`, `name`, `database_id`, `pipeline_id?`, `stage_id?` | Issues a [Connections key](/docs/crm/connections) (`crk_…`). `database_id` is the table rows land in — create it with `create_crm_table` first. |
| `list_integrations` | `project` | The business's connected accounts with labels and scopes. |
| `use_integration` | `project`, `integration`, `action`, `params` | Executes a connector action against a named account. Writes are classified conservatively. |

## Calendars

One **calendar service** holds as many named calendars as you want — one per person, room or resource. A booking page points at a calendar, so create the calendar before the booking page.

| Tool | Arguments | Notes |
| --- | --- | --- |
| `list_calendars` | `project` | Every calendar on the project with its service and event count. |
| `create_calendar` | `project`, `service_id`, `name`, `color?` | Adds a named calendar to a calendar service. A non-calendar `service_id` is refused by type. |

> **TOOL COUNT:** The server exposes **35 tools** today. The catalog grows with the product, so `tools/list` is always authoritative — never a number in these docs.
