Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getsmartalex.com/llms.txt

Use this file to discover all available pages before exploring further.

MCP Tools Reference

Complete reference for all 28 SmartAlex MCP tools, organized by domain. Each tool includes its parameters, response shape, and example usage. All tool names are prefixed with smartalex_ to avoid conflicts when used alongside other MCP servers.

Contacts

smartalex_list_contacts

List all contacts in the current workspace with pagination. Parameters:
ParameterTypeRequiredDescription
pageintegerNoPage number (default: 1)
per_pageintegerNoResults per page (default: 25, max: 100)
Example usage:
"Show me all my contacts"
"Show page 2 of contacts"
Example response:
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "first_name": "Sarah",
      "last_name": "Johnson",
      "email": "sarah@example.com",
      "phone": "+15551234567",
      "company": "Acme Corp",
      "tags": ["enterprise"],
      "status": "active",
      "created_at": "2026-03-01T10:30:00+00:00"
    }
  ],
  "meta": {
    "total": 21,
    "page": 1,
    "per_page": 25
  }
}

smartalex_get_contact

Get a single contact by UUID. Returns all fields including tags and engagement history. Use this when you have a specific contact ID. Use smartalex_list_contacts to browse contacts. Parameters:
ParameterTypeRequiredDescription
idstring (UUID)YesContact UUID
Example usage:
"Show me details for contact a1b2c3d4-..."

smartalex_create_contact

Create a new contact. Returns the created contact with its UUID. Parameters:
ParameterTypeRequiredDescription
first_namestringYesFirst name
last_namestringNoLast name
phonestringNoPhone number (E.164 format preferred, e.g. +14155551234)
emailstringNoEmail address
companystringNoCompany name
tagsstring[]NoTags for categorization (e.g. ["buyer", "vip"])
statusstringNoContact status (e.g. active, inactive)
Example usage:
"Add a contact John Doe, john@acme.com, +1 555 987 6543"
"Create contact Jane Smith at Acme Corp, tag as enterprise"

smartalex_update_contact

Update an existing contact. Only provided fields are changed (partial update). Returns the updated contact. Parameters:
ParameterTypeRequiredDescription
idstring (UUID)YesContact UUID to update
first_namestringNoFirst name
last_namestringNoLast name
phonestringNoPhone number
emailstringNoEmail address
companystringNoCompany name
tagsstring[]NoTags (replaces existing tags)
statusstringNoContact status
Example usage:
"Change John's email to john.doe@newcompany.com"
"Tag contact a1b2... as VIP"

Agents

smartalex_list_agents

List all AI voice agents. Returns agent name, language, active status, and creation date. Returns all agents (no pagination). Use this to browse all agents. Use smartalex_get_agent if you have a specific agent ID. Parameters: None Example usage:
"Show me my AI agents"
"Which agents are configured?"
Example response:
[
  {
    "id": "d835542e-111b-44ff-b9d8-bf22e9cf7abf",
    "name": "Sales Assistant",
    "voice_provider": "cloud",
    "language": "en",
    "is_active": true,
    "created_at": "2026-02-22T18:10:31+00:00"
  }
]
The voice_provider field is always returned as "cloud" , actual provider details are not exposed through the API for security.

smartalex_get_agent

Get a single AI voice agent by UUID. Returns full agent configuration. Parameters:
ParameterTypeRequiredDescription
idstring (UUID)YesAgent UUID
Example usage:
"Show me the config for agent d835542e-..."

smartalex_create_agent

Create a new AI voice agent from a website URL (Quick Setup). The system automatically scrapes the website, analyzes the business, generates an optimized AI prompt, and deploys the agent.
Agent creation takes 30-60 seconds as it scrapes the website and configures the AI voice assistant.
Parameters:
ParameterTypeRequiredDescription
website_urlstring (URL)YesBusiness website URL to analyze
company_namestringNoOverride auto-detected company name
Example usage:
"Create an agent for my website https://example.com"

smartalex_create_agent_advanced

Create a fully customized AI voice agent with specific settings (Advanced Setup).
Agent creation takes 15-30 seconds as it configures the AI voice assistant.
Parameters:
ParameterTypeRequiredDescription
namestringYesAgent display name (e.g. “Sarah”)
company_namestringYesCompany name the agent represents
objectivestringNoWhat the agent should do on calls
call_directionstringNo”inbound”, “outbound”, or “both” (default: “inbound”)
languagestringNoLanguage code (default: “en”)
website_urlstring (URL)NoWebsite URL for enhanced knowledge
first_messagestringNoCustom greeting message
Example usage:
"Create an agent named Sarah for Bright Smiles Dental that schedules appointments"

smartalex_update_agent

Update an existing voice agent’s settings. Changes are automatically synced to the live voice platform. Prompt-affecting fields trigger system prompt regeneration. Parameters:
ParameterTypeRequiredDescription
idstring (UUID)YesAgent UUID
namestringNoDisplay name (sidebar/dashboard)
assistant_namestringNoAI name (how the agent introduces itself)
company_namestringNoCompany name the agent represents
assistant_personalitystringNoPersonality description
is_activebooleanNoActive/inactive toggle
objectivestringNoWhat the agent should do on calls
product_descriptionstringNoProduct/service description
first_messagestringNoCustom greeting message
call_directionstringNo”inbound”, “outbound”, or “both”
languagestringNoLanguage code
custom_instructionsstring[]NoCustom behavior rules
background_soundstringNo”office” or “off”
enabled_toolsstring[]NoTool keys to enable
knowledge_item_idsstring[] (UUID)NoKB item UUIDs to link (replaces current)
phone_number_idstring (UUID) or nullNoPhone number to assign (null to unassign)
Example usage:
"Rename agent to Sophie and change the objective to schedule demos"

smartalex_delete_agent

Permanently delete a voice agent. This action cannot be undone. Parameters:
ParameterTypeRequiredDescription
idstring (UUID)YesAgent UUID
Example usage:
"Delete the test agent"

Phone Numbers

smartalex_list_phone_numbers

List all active phone numbers with country and agent assignment. Use this to see which numbers are available for campaigns and agents. Parameters: None Example usage:
"What phone numbers do I have?"
"List my phone numbers"

smartalex_search_available_numbers

Search for available phone numbers to purchase by country. Returns a list of phone numbers that can be bought. Supported countries: US, CA, GB, AU, NZ, FI, DK, NL, ZA. Parameters:
ParameterTypeRequiredDescription
country_codestringNoISO-2 country code (default: “US”)
limitintegerNoMax results to return (default: 20, max: 50)
Example usage:
"Search for available US phone numbers"
"Find 5 phone numbers in the UK"
Example response:
{
  "data": [
    {
      "phone_number": "+14155551234",
      "country": "US",
      "region": "CA",
      "capabilities": ["voice", "sms"]
    }
  ]
}

smartalex_buy_phone_number

Purchase a specific phone number for use with campaigns and agents. First number is free on trial; additional numbers cost ~$1.66/month. Parameters:
ParameterTypeRequiredDescription
phone_numberstringYesPhone number in E.164 format (e.g. +14155551234)
Example usage:
"Buy the number +14155551234"
Example response:
{
  "id": "a1b2c3d4-...",
  "phone_number": "+14155551234",
  "country": "US",
  "status": "active"
}

Campaigns

smartalex_list_campaigns

List all voice campaigns. Returns campaign name, mode, status, and agent assignment. Parameters:
ParameterTypeRequiredDescription
pageintegerNoPage number (default: 1)
per_pageintegerNoResults per page (default: 25, max: 100)
Pagination parameters are accepted but all campaigns are currently returned regardless of page/per_page values.
Example usage:
"Show me all campaigns"
"What campaigns are running?"
Example response:
[
  {
    "id": "c1d2e3f4-...",
    "name": "Q2 Outreach",
    "status": "active",
    "campaign_mode": "outbound",
    "agent_id": "d835542e-...",
    "created_at": "2026-03-01T09:00:00+00:00"
  }
]

smartalex_create_campaign

Create a new voice campaign. Optionally assign an AI agent to handle calls. Parameters:
ParameterTypeRequiredDescription
namestringYesCampaign name (1–200 characters)
agent_idstring (UUID)NoUUID of the AI agent to assign
objectivestringNoCall objective , what the agent should do on each call (1–2000 chars)
descriptionstringNoCampaign description (max 500 chars)
campaign_typestringNoCampaign type (e.g. outbound, follow-up)
phone_number_idstring (UUID)NoPhone number to use for outbound calls (from smartalex_list_phone_numbers)
timezonestringNoIANA timezone for calling hours (e.g. America/New_York, Europe/London)
business_hoursobjectNoCustom calling hours per day , each day has enabled, start, end (24h format)
Before creating a campaign, always call smartalex_list_agents and smartalex_list_phone_numbers to let the user pick an agent and phone number.
Example usage:
"Create a new outbound campaign called Q2 Outreach with agent d835542e-..."

smartalex_get_campaign

Get a single campaign by UUID. Returns full details including status, objective, contact counts, and call statistics. Parameters:
ParameterTypeRequiredDescription
idstring (UUID)YesCampaign UUID
Example usage:
"Show me the details for campaign c1d2e3f4-..."

smartalex_add_contacts_to_campaign

Add one or more contacts to a campaign. Contacts are queued for calling when the campaign starts. Duplicates are automatically skipped. Parameters:
ParameterTypeRequiredDescription
campaign_idstring (UUID)YesCampaign UUID
contact_idsstring[] (UUID)YesArray of contact UUIDs (max 100 per call)
Example usage:
"Add contacts John and Sarah to the Q2 Outreach campaign"

smartalex_start_campaign

Start a campaign to begin making calls. The campaign must have an agent, an objective, and at least one contact. Parameters:
ParameterTypeRequiredDescription
campaign_idstring (UUID)YesCampaign UUID to start
Pre-requisites: The campaign must have an agent assigned, an objective set, contacts added, and a phone number available on the account. Missing requirements return a helpful error message.
Example usage:
"Start the Q2 Outreach campaign"

Calls

smartalex_list_calls

List call records with pagination. Returns direction, status, duration, sentiment score, and cost. Use this to browse call history. Use smartalex_get_call if you need the full transcript for a specific call. Parameters:
ParameterTypeRequiredDescription
pageintegerNoPage number (default: 1)
per_pageintegerNoResults per page (default: 25, max: 100)
Example usage:
"Show me recent calls"
"Get page 3 of call history"
Example response:
{
  "data": [
    {
      "id": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
      "contact_id": "a1b2c3d4-...",
      "agent_id": "d835542e-...",
      "direction": "outbound",
      "call_status": "completed",
      "duration_seconds": 185,
      "sentiment": 0.72,
      "cost": 0.39,
      "start_timestamp": "2026-03-17T14:30:00+00:00",
      "end_timestamp": "2026-03-17T14:33:05+00:00"
    }
  ],
  "meta": {
    "total": 243,
    "page": 1,
    "per_page": 25
  }
}

smartalex_get_call

Get a single call record by UUID. Returns full detail including the conversation transcript, duration, sentiment score, and status. Parameters:
ParameterTypeRequiredDescription
idstring (UUID)YesCall UUID
Example usage:
"Show me the transcript for call f1e2d3c4-..."
"What happened in this call?"

Deals

smartalex_list_deals

List all deals in the sales pipeline. Optionally filter by stage. Parameters:
ParameterTypeRequiredDescription
stageenumNoFilter by stage (see valid stages below)
pageintegerNoPage number (default: 1)
per_pageintegerNoResults per page (default: 25, max: 100)
Valid stages: lead, qualified, showing, offer, under_contract, closed_won, closed_lost Example usage:
"Show me all deals"
"Show deals in offer stage"
"What's in my pipeline?"
Example response:
{
  "data": [
    {
      "id": "b7a4bc72-31e2-48a3-85ac-7f3ea5fcdab2",
      "deal_name": "Acme Corp Enterprise",
      "stage": "offer",
      "deal_value": 7500,
      "commission_earned": null,
      "close_date": null,
      "contact_id": null,
      "assigned_user_id": null,
      "created_at": "2026-03-17T08:08:06+00:00",
      "updated_at": "2026-03-17T08:09:19+00:00"
    }
  ],
  "meta": {
    "total": 1,
    "page": 1,
    "per_page": 25
  }
}

smartalex_create_deal

Create a new deal in the sales pipeline. Optionally link to a contact and set the initial stage and value. Parameters:
ParameterTypeRequiredDescription
deal_namestringYesDeal name
stageenumNoPipeline stage (default: lead)
deal_valuenumberNoDeal value in dollars
contact_idstring (UUID)NoUUID of the associated contact
Example usage:
"Create a deal for $50k called Acme Corp"
"Add a qualified deal linked to contact a1b2..."

smartalex_update_deal

Update an existing deal. Only provided fields are changed. Use to move deals through pipeline stages or update values. Parameters:
ParameterTypeRequiredDescription
idstring (UUID)YesDeal UUID to update
deal_namestringNoDeal name
stageenumNoPipeline stage
deal_valuenumberNoDeal value in dollars
contact_idstring (UUID)NoAssociated contact UUID
Example usage:
"Move deal b7a4bc72-... to closed_won"
"Update deal value to $75,000"

smartalex_delete_deal

Permanently delete a deal from the pipeline. This action cannot be undone. Parameters:
ParameterTypeRequiredDescription
idstring (UUID)YesDeal UUID to delete
Example usage:
"Delete deal b7a4bc72-..."
Response:
{
  "deleted": true
}

Webhooks

smartalex_list_webhooks

List all active webhook subscriptions. Returns URL, event types, active status, failure count, and last delivery time. Parameters: None Example usage:
"Show my webhook subscriptions"
"What webhooks are configured?"
Example response:
[
  {
    "id": "7842bee8-f18d-445d-9451-fa62fbfc3300",
    "url": "https://api.example.com/webhook",
    "description": "CRM sync",
    "event_types": ["call.completed"],
    "is_active": true,
    "failure_count": 0,
    "last_delivered_at": "2026-03-18T11:45:00+00:00",
    "created_at": "2026-03-01T10:00:00+00:00"
  }
]

smartalex_create_webhook

Create a new webhook subscription. Returns the webhook ID and an HMAC-SHA256 signing_secret.
The signing_secret is returned only once on creation. Save it immediately , it cannot be retrieved later.
Parameters:
ParameterTypeRequiredDescription
urlstring (URL)YesWebhook endpoint URL (HTTPS required)
event_typesstring[]YesEvent types to subscribe to
descriptionstringNoHuman-readable description
Available event types:
EventDescription
call.completedA call has ended
call.startedA call has started
deal.stage_changedA deal moved to a new stage
contact.createdA new contact was created
contact.updatedA contact was updated
campaign.startedA campaign was activated
campaign.completedA campaign finished all contacts
Example usage:
"Subscribe to call events at https://example.com/webhook"
Example response:
{
  "id": "7842bee8-f18d-445d-9451-fa62fbfc3300",
  "url": "https://example.com/webhook",
  "description": "Call notifications",
  "event_types": ["call.completed"],
  "is_active": true,
  "created_at": "2026-03-23T12:27:15+00:00",
  "signing_secret": "a6e1738893513ff5a4a72fba583aa30ba3f3c1a8..."
}

smartalex_delete_webhook

Unregister a webhook subscription. The endpoint will stop receiving events immediately. This action cannot be undone. Parameters:
ParameterTypeRequiredDescription
idstring (UUID)YesWebhook UUID to delete
Example usage:
"Remove webhook 7842bee8-..."
Response:
{
  "deleted": true
}

Platform

smartalex_get_platform_status

Check SmartAlex platform health and get usage statistics for the current workspace. Parameters: None Example usage:
"How's my account doing?"
"Show me platform stats"
"Is SmartAlex working?"
Example response:
{
  "status": "operational",
  "version": "1.0.0",
  "stats": {
    "total_contacts": 21,
    "total_campaigns": 1,
    "total_calls": 243,
    "total_deals": 1
  }
}

Tool Annotations

All tools include MCP annotations that help AI clients understand tool behavior:
AnnotationDescriptionTools
readOnlyHint: trueDoes not modify dataAll list/get tools, platform status
destructiveHint: truePermanently removes datadelete_agent, delete_deal, delete_webhook
idempotentHint: trueSame args = same resultupdate_contact, update_agent, update_deal
openWorldHint: trueInteracts with external APIAll tools