add_lead_note
ChatGPTCreate a new note on a lead. Notes are visible to all CRM users in the business.
appointment_calendar
ChatGPTReturn appointment leads in a calendar window. Pick a view (month/week/day) and a date range; the backend snaps the range to the view.
appointment_overview
ChatGPTReturn aggregate stats about appointments (counts, conversion rate, no-show rate) for the active business. Optionally narrow by free-text search.
assign_lead
ChatGPTAssign a single lead to a CRM user. (To assign multiple, call this once per lead.)
bulk_update_leads
ChatGPTApply the same status/label/service change to multiple leads at once. Confirm with the user before calling — this writes to the CRM.
cancel_callback
ChatGPTCancel a pending callback without marking it done.
complete_callback
ChatGPTMark a pending callback as done after the team contacted the lead.
create_campaign
ChatGPTCreate an outreach campaign (SMS, Email, WhatsApp, or AI call) targeting leads matched by audience filters. Real messages are sent and may incur cost, so before calling this you MUST have the user confirm three things: the audience (use preview_campaign_audience to iterate on filters), the message, and WHEN it goes out — ask explicitly whether to fire it off now or schedule it. Then pass exactly one of send_now: true (sends within a minute — there is no undo beyond pause_campaign) or schedule_at (at least 5 minutes ahead, leaving a window to reschedule or pause). The audience is previewed and capped either way. Use list_campaign_options to resolve agent, template, phone, and sender IDs.
create_lead
ChatGPTCreate a new lead in the active business. Confirm with the user before calling — this writes to the CRM.
estimate_campaign_cost
ChatGPTEstimate what a campaign would cost BEFORE creating it, and whether the business's credits cover it. Takes the same channel, filters and message fields as create_campaign; nothing is created or sent. Returns the audience size, a low–high cost range in USD with its basis ('history' = this business's own past campaigns on the channel, 'rates' = current prices plus typical reply / answer rates), a breakdown, SMS characters and segments per message, the credit balance, and insufficient when the high end is more than the credits or spending limit left. Use it to tell the user the likely cost when confirming a campaign.
get_campaign
ChatGPTRead a single campaign's current state: name, channel, status, schedule, and recipient count. Use this to check whether a campaign is armed (Scheduled / In progress), Paused, or finished before acting on it. campaign_schedule is a UTC instant — quote schedule_business_local to the user instead, which is the same moment in the business's own timezone.
get_conversation_by_lead
ChatGPTFetch the message history with a lead, optionally filtered to a single channel. Each message is trimmed to id, direction, sender, body (1k chars max), and timestamp.
get_lead
ChatGPTFetch a single lead by its internal id.
get_lead_activity
ChatGPTReturn the activity timeline for a lead (status changes, messages, calls, notes).
get_lead_by_phone
ChatGPTLook up a lead by phone number (E.164 preferred; '+' is added if missing).
get_lead_callbacks
ChatGPTReturn the lead's pending callback (when the team should contact them next) and its earlier callbacks. label is the human-readable due time in the lead's zone.
get_lead_notes
ChatGPTReturn notes attached to a lead, newest first. Trimmed to LLM-useful fields. Paginated client-side from the upstream response.
global_search
ChatGPTSearch across leads, appointments, conversations, and deals in the active business. Useful for open-ended queries like 'find anything about Jane Doe'.
launch_campaign
ChatGPTSend a Draft campaign: now, or at a scheduled time. Real messages go out, so first confirm with the user the draft's audience, its message (get_campaign shows both) and WHEN it goes out, then pass exactly one of send_now: true (sends within a minute) or schedule_at (at least 5 minutes ahead). The draft's audience is previewed and capped first. Only drafts can be launched; use start_campaign for a Scheduled or Paused campaign.
list_appointment_leads
ChatGPTList leads that have appointments. Optionally filter by appointment status or lead status via searchType.
list_campaign_options
ChatGPTResolve the IDs create_campaign needs: AI agents, approved WhatsApp templates, from-phone numbers, WhatsApp senders, email sender identities, and email templates for the active business.
list_campaigns
ChatGPTList outreach campaigns in the active business, optionally filtered by status, channel type, or free-text campaign-name search.
list_conversation_channels
ChatGPTReturn the messaging channels (SMS, WhatsApp, Email, FacebookMessenger, Instagram) available to the active business.
list_due_callbacks
ChatGPTList leads in the active business that have a pending callback, earliest first ('as soon as possible' callbacks come first). Each lead carries callback with a human-readable label in the lead's zone, is_overdue and is_due_today — quote the label rather than converting due_at.
list_my_businesses
ChatGPTReturn the businesses the authenticated user can operate on, with real business names and the user's role in each. Also indicates the active scope of the current MCP token: a single business if active_business_id is set, or a list of approved businesses if allowed_business_ids is set (multi-business consent). Tools operate ONLY on those tenants. To change scope, the user must re-authorize from their MCP client.
list_team_members
ChatGPTReturn the CRM users (and their roles) in the active business. Use this when a tool returns an assigned_id or user_id and you need the human's name. Also useful when picking a user to assign a lead to.
pause_campaign
ChatGPTPause a running campaign. Outbound sends stop until resumed. Confirm with the user before calling.
preview_campaign_audience
ChatGPTCount how many leads a set of audience filters would match for a given channel, WITHOUT creating anything. Opted-out leads are excluded automatically. Always use this to iterate on filters before calling create_campaign.
resume_campaign
ChatGPTResume a paused campaign.
search_leads
ChatGPTSearch leads in the active business by free-text query. Returns a paginated list trimmed to the most useful fields. The assigned_id field is opaque (a user_id when assigned_type='user', or an AI agent id otherwise) — call list_team_members if you need the assignee's human name.
send_message
ChatGPTSend an outbound message via SMS, WhatsApp, Email, FacebookMessenger, or Instagram. The user MUST confirm before sending — this is a real outbound message and may incur cost. Subject to a tighter rate limit than read tools (10/min vs the default 120/min).
start_campaign
ChatGPTFire off an existing campaign immediately — a Paused campaign resumes, and a Scheduled campaign sends now instead of waiting for its scheduled time. Sending begins within a minute and real messages go out, so confirm with the user first. Already-running campaigns are left alone; finished ones cannot be restarted. Use pause_campaign to stop a send.
update_campaign
ChatGPTEdit an existing campaign: rename, reschedule (this is also how you cancel-by-postponing a Scheduled campaign), change the message, or replace the audience filters (channel is then required, and the new audience is previewed and capped first). Never re-arms a Paused campaign — resume_campaign is the only way to do that.
update_lead
ChatGPTUpdate fields on an existing lead. Only the provided fields are changed.
update_lead_note
ChatGPTEdit an existing note's content.
add_lead_note
Claudeappointment_calendar
Claudeappointment_overview
Claudeassign_lead
Claudebulk_update_leads
Claudecreate_lead
Claudeget_conversation_by_lead
Claudeget_lead
Claudeget_lead_activity
Claudeget_lead_by_phone
Claudeget_lead_notes
Claudeglobal_search
Claudelist_appointment_leads
Claudelist_campaigns
Claudelist_conversation_channels
Claudelist_my_businesses
Claudelist_team_members
Claudepause_campaign
Clauderesume_campaign
Claudesearch_leads
Claudesend_message
Claudeupdate_lead
Claudeupdate_lead_note
Claude