Skip to main content

MCP Tools Reference

Complete reference for all 18 SmartAlex MCP tools, organized by domain. Each tool includes its description, parameters, and example usage.

Contacts

list_contacts

List and search contacts with filters. Parameters:
ParameterTypeRequiredDescription
querystringNoSearch by name, email, or phone number
tagsstring[]NoFilter by one or more tags
created_afterstringNoISO 8601 date — only contacts created after this date
created_beforestringNoISO 8601 date — only contacts created before this date
limitnumberNoMaximum results to return (default: 50, max: 200)
offsetnumberNoPagination offset (default: 0)
Example usage:
"List all contacts tagged 'enterprise' created in the last 30 days"
Example response:
{
  "contacts": [
    {
      "id": "c_01HQ...",
      "first_name": "Sarah",
      "last_name": "Johnson",
      "email": "sarah@example.com",
      "phone": "+15551234567",
      "tags": ["enterprise", "decision-maker"],
      "created_at": "2026-03-01T10:30:00Z",
      "updated_at": "2026-03-15T14:22:00Z"
    }
  ],
  "total": 12,
  "limit": 50,
  "offset": 0
}

get_contact

Get a specific contact by ID with full details. Parameters:
ParameterTypeRequiredDescription
contact_idstringYesThe contact ID
Example usage:
"Get the full details for contact c_01HQ..."
Example response:
{
  "id": "c_01HQ...",
  "first_name": "Sarah",
  "last_name": "Johnson",
  "email": "sarah@example.com",
  "phone": "+15551234567",
  "company": "Acme Corp",
  "job_title": "VP of Operations",
  "tags": ["enterprise", "decision-maker"],
  "custom_fields": {
    "industry": "Manufacturing",
    "employee_count": "500-1000"
  },
  "notes": "Met at SaaStr 2026. Interested in outbound AI calling.",
  "call_count": 3,
  "last_called_at": "2026-03-10T09:15:00Z",
  "campaigns": ["camp_01HR..."],
  "deals": ["deal_01HS..."],
  "created_at": "2026-03-01T10:30:00Z",
  "updated_at": "2026-03-15T14:22:00Z"
}

create_contact

Create a new contact. Parameters:
ParameterTypeRequiredDescription
first_namestringYesContact’s first name
last_namestringYesContact’s last name
emailstringNoEmail address
phonestringNoPhone number in E.164 format (e.g., +15551234567)
companystringNoCompany name
job_titlestringNoJob title
tagsstring[]NoTags to assign
custom_fieldsobjectNoKey-value pairs for custom fields
notesstringNoFree-text notes
Example usage:
"Create a contact: John Smith at Acme Corp, john@acme.com, +1 555 987 6543, tag as enterprise"
Example response:
{
  "id": "c_01HT...",
  "first_name": "John",
  "last_name": "Smith",
  "email": "john@acme.com",
  "phone": "+15559876543",
  "company": "Acme Corp",
  "tags": ["enterprise"],
  "created_at": "2026-03-18T12:00:00Z"
}

update_contact

Update contact details. Parameters:
ParameterTypeRequiredDescription
contact_idstringYesThe contact ID to update
first_namestringNoUpdated first name
last_namestringNoUpdated last name
emailstringNoUpdated email address
phonestringNoUpdated phone number in E.164 format
companystringNoUpdated company name
job_titlestringNoUpdated job title
tagsstring[]NoReplace all tags (use add_tags/remove_tags for incremental)
add_tagsstring[]NoTags to add without replacing existing
remove_tagsstring[]NoTags to remove
custom_fieldsobjectNoCustom fields to update (merged with existing)
notesstringNoUpdated notes (replaces existing)
Example usage:
"Update contact c_01HQ... — add the tag 'qualified' and set job title to 'CTO'"
Example response:
{
  "id": "c_01HQ...",
  "first_name": "Sarah",
  "last_name": "Johnson",
  "job_title": "CTO",
  "tags": ["enterprise", "decision-maker", "qualified"],
  "updated_at": "2026-03-18T12:05:00Z"
}

Agents

list_agents

List all voice agents with status and configuration summary. Parameters:
ParameterTypeRequiredDescription
statusstringNoFilter by status: active, inactive, draft
limitnumberNoMaximum results (default: 50)
Example usage:
"Show me all active voice agents"
Example response:
{
  "agents": [
    {
      "id": "agent_01HP...",
      "name": "Sales Outreach Agent",
      "status": "active",
      "mode": "advanced",
      "voice": "alloy",
      "language": "en-US",
      "calls_today": 42,
      "avg_duration_seconds": 185,
      "created_at": "2026-02-15T08:00:00Z"
    },
    {
      "id": "agent_01HQ...",
      "name": "Customer Support Agent",
      "status": "active",
      "mode": "standard",
      "voice": "nova",
      "language": "en-US",
      "calls_today": 18,
      "avg_duration_seconds": 240,
      "created_at": "2026-02-20T10:30:00Z"
    }
  ],
  "total": 2
}

get_agent

Get full agent details including prompt, voice settings, and tools. Parameters:
ParameterTypeRequiredDescription
agent_idstringYesThe agent ID
Example usage:
"Get the full configuration for my Sales Outreach Agent"
Example response:
{
  "id": "agent_01HP...",
  "name": "Sales Outreach Agent",
  "status": "active",
  "mode": "advanced",
  "voice": {
    "provider": "cartesia",
    "voice_id": "alloy",
    "speed": 1.0,
    "emotion": "friendly"
  },
  "language": "en-US",
  "system_prompt": "You are a professional sales development representative...",
  "tools": ["transfer_call", "book_meeting", "send_sms"],
  "first_message": "Hi, this is Alex from SmartAlex. How are you today?",
  "max_duration_seconds": 300,
  "analytics": {
    "total_calls": 1247,
    "avg_duration_seconds": 185,
    "positive_sentiment_rate": 0.72,
    "transfer_rate": 0.15
  },
  "created_at": "2026-02-15T08:00:00Z",
  "updated_at": "2026-03-17T16:45:00Z"
}

Campaigns

list_campaigns

List campaigns with status filters. Parameters:
ParameterTypeRequiredDescription
statusstringNoFilter by status: active, paused, completed, draft
created_afterstringNoISO 8601 date filter
limitnumberNoMaximum results (default: 50)
offsetnumberNoPagination offset
Example usage:
"Show me all active campaigns"
Example response:
{
  "campaigns": [
    {
      "id": "camp_01HR...",
      "name": "Q1 Enterprise Outreach",
      "status": "active",
      "agent_id": "agent_01HP...",
      "total_contacts": 250,
      "contacted": 142,
      "remaining": 108,
      "positive_outcomes": 38,
      "started_at": "2026-03-01T09:00:00Z"
    }
  ],
  "total": 1
}

get_campaign

Get campaign details and analytics. Parameters:
ParameterTypeRequiredDescription
campaign_idstringYesThe campaign ID
Example usage:
"Get detailed analytics for the Q1 Enterprise Outreach campaign"
Example response:
{
  "id": "camp_01HR...",
  "name": "Q1 Enterprise Outreach",
  "status": "active",
  "agent_id": "agent_01HP...",
  "agent_name": "Sales Outreach Agent",
  "schedule": {
    "timezone": "America/New_York",
    "days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
    "start_time": "09:00",
    "end_time": "17:00"
  },
  "contacts": {
    "total": 250,
    "contacted": 142,
    "remaining": 108,
    "answered": 98,
    "voicemail": 31,
    "no_answer": 13
  },
  "outcomes": {
    "positive": 38,
    "neutral": 42,
    "negative": 18,
    "callback_requested": 12
  },
  "analytics": {
    "answer_rate": 0.69,
    "positive_rate": 0.39,
    "avg_call_duration_seconds": 165,
    "total_talk_time_minutes": 391
  },
  "started_at": "2026-03-01T09:00:00Z",
  "updated_at": "2026-03-18T11:30:00Z"
}

Calls

list_calls

List recent calls with filters. Parameters:
ParameterTypeRequiredDescription
agent_idstringNoFilter by agent
campaign_idstringNoFilter by campaign
directionstringNoFilter by direction: inbound, outbound
statusstringNoFilter by status: completed, missed, voicemail, failed
date_fromstringNoISO 8601 start date
date_tostringNoISO 8601 end date
limitnumberNoMaximum results (default: 50, max: 200)
offsetnumberNoPagination offset
Example usage:
"Show me all calls from the last 7 days that resulted in a positive outcome"
Example response:
{
  "calls": [
    {
      "id": "call_01HS...",
      "direction": "outbound",
      "status": "completed",
      "agent_id": "agent_01HP...",
      "agent_name": "Sales Outreach Agent",
      "contact_id": "c_01HQ...",
      "contact_name": "Sarah Johnson",
      "phone": "+15551234567",
      "duration_seconds": 210,
      "sentiment": "positive",
      "outcome": "meeting_booked",
      "started_at": "2026-03-17T14:30:00Z",
      "ended_at": "2026-03-17T14:33:30Z"
    }
  ],
  "total": 38,
  "limit": 50,
  "offset": 0
}

get_call

Get full call details including transcript, recording, and analysis. Parameters:
ParameterTypeRequiredDescription
call_idstringYesThe call ID
Example usage:
"Get the transcript and analysis for call call_01HS..."
Example response:
{
  "id": "call_01HS...",
  "direction": "outbound",
  "status": "completed",
  "agent_id": "agent_01HP...",
  "agent_name": "Sales Outreach Agent",
  "contact_id": "c_01HQ...",
  "contact_name": "Sarah Johnson",
  "phone": "+15551234567",
  "duration_seconds": 210,
  "recording_url": "https://storage.getsmartalex.com/recordings/call_01HS....wav",
  "transcript": [
    {
      "role": "agent",
      "content": "Hi Sarah, this is Alex from SmartAlex. How are you today?",
      "timestamp": 0.0
    },
    {
      "role": "user",
      "content": "Hi Alex, I'm doing well. I was actually expecting your call.",
      "timestamp": 3.2
    },
    {
      "role": "agent",
      "content": "Great to hear! I wanted to follow up on the demo we discussed last week...",
      "timestamp": 6.5
    }
  ],
  "analysis": {
    "sentiment": "positive",
    "outcome": "meeting_booked",
    "summary": "Productive call. Sarah confirmed interest in the enterprise plan. Meeting booked for March 20 at 2pm EST.",
    "key_topics": ["pricing", "enterprise features", "implementation timeline"],
    "objections": [],
    "next_steps": ["Send enterprise pricing sheet", "Calendar invite for March 20"]
  },
  "started_at": "2026-03-17T14:30:00Z",
  "ended_at": "2026-03-17T14:33:30Z"
}

Deals

list_deals

List deals in pipeline with filters. Parameters:
ParameterTypeRequiredDescription
stagestringNoFilter by stage: lead, qualified, proposal, negotiation, closed_won, closed_lost
min_valuenumberNoMinimum deal value
max_valuenumberNoMaximum deal value
owner_idstringNoFilter by deal owner
created_afterstringNoISO 8601 date filter
limitnumberNoMaximum results (default: 50)
offsetnumberNoPagination offset
Example usage:
"Show me all deals in the negotiation stage worth over $10,000"
Example response:
{
  "deals": [
    {
      "id": "deal_01HS...",
      "name": "Acme Corp Enterprise License",
      "stage": "negotiation",
      "value": 48000,
      "currency": "USD",
      "contact_id": "c_01HQ...",
      "contact_name": "Sarah Johnson",
      "company": "Acme Corp",
      "probability": 0.75,
      "expected_close_date": "2026-04-15",
      "created_at": "2026-02-20T10:00:00Z",
      "updated_at": "2026-03-17T16:00:00Z"
    }
  ],
  "total": 3,
  "pipeline_summary": {
    "total_value": 127000,
    "weighted_value": 89250,
    "deal_count": 3
  }
}

get_deal

Get deal details including history and activities. Parameters:
ParameterTypeRequiredDescription
deal_idstringYesThe deal ID
Example usage:
"Get the full details and history for the Acme Corp deal"
Example response:
{
  "id": "deal_01HS...",
  "name": "Acme Corp Enterprise License",
  "stage": "negotiation",
  "value": 48000,
  "currency": "USD",
  "probability": 0.75,
  "expected_close_date": "2026-04-15",
  "contact": {
    "id": "c_01HQ...",
    "name": "Sarah Johnson",
    "email": "sarah@example.com",
    "company": "Acme Corp"
  },
  "activities": [
    {
      "type": "call",
      "description": "Demo call — positive response, requested pricing",
      "date": "2026-03-10T14:00:00Z"
    },
    {
      "type": "email",
      "description": "Sent enterprise pricing sheet",
      "date": "2026-03-11T09:00:00Z"
    },
    {
      "type": "stage_change",
      "description": "Moved from proposal to negotiation",
      "date": "2026-03-15T11:00:00Z"
    }
  ],
  "notes": "Strong fit. Decision expected by mid-April. Budget approved.",
  "created_at": "2026-02-20T10:00:00Z",
  "updated_at": "2026-03-17T16:00:00Z"
}

create_deal

Create a new deal in the pipeline. Parameters:
ParameterTypeRequiredDescription
namestringYesDeal name
valuenumberYesDeal value
currencystringNoCurrency code (default: USD)
stagestringNoPipeline stage (default: lead)
contact_idstringNoAssociated contact ID
companystringNoCompany name
expected_close_datestringNoExpected close date (YYYY-MM-DD)
probabilitynumberNoWin probability 0.0 to 1.0
notesstringNoDeal notes
Example usage:
"Create a deal: GlobalTech Annual License, $36,000, qualified stage, expected close June 2026"
Example response:
{
  "id": "deal_01HT...",
  "name": "GlobalTech Annual License",
  "stage": "qualified",
  "value": 36000,
  "currency": "USD",
  "expected_close_date": "2026-06-30",
  "created_at": "2026-03-18T12:00:00Z"
}

update_deal

Update deal status, stage, value, or details. Parameters:
ParameterTypeRequiredDescription
deal_idstringYesThe deal ID to update
namestringNoUpdated deal name
valuenumberNoUpdated deal value
currencystringNoUpdated currency
stagestringNoUpdated stage
probabilitynumberNoUpdated win probability
expected_close_datestringNoUpdated expected close date
contact_idstringNoUpdated associated contact
notesstringNoUpdated notes
Example usage:
"Move the Acme Corp deal to closed_won and update the value to $52,000"
Example response:
{
  "id": "deal_01HS...",
  "name": "Acme Corp Enterprise License",
  "stage": "closed_won",
  "value": 52000,
  "currency": "USD",
  "updated_at": "2026-03-18T12:10:00Z"
}

Webhooks

list_webhooks

List all configured webhook endpoints. Parameters:
ParameterTypeRequiredDescription
statusstringNoFilter by status: active, inactive
Example usage:
"Show me all active webhooks"
Example response:
{
  "webhooks": [
    {
      "id": "wh_01HR...",
      "url": "https://api.example.com/smartalex/events",
      "events": ["call.completed", "deal.stage_changed", "contact.created"],
      "status": "active",
      "last_triggered_at": "2026-03-18T11:45:00Z",
      "success_rate": 0.99,
      "created_at": "2026-02-01T10:00:00Z"
    }
  ],
  "total": 1
}

create_webhook

Create a new webhook endpoint for specific events. Parameters:
ParameterTypeRequiredDescription
urlstringYesThe webhook endpoint URL (must be HTTPS)
eventsstring[]YesEvent types to subscribe to
secretstringNoSigning secret for payload verification
descriptionstringNoHuman-readable description
Available events:
EventDescription
call.startedA call has started
call.completedA call has ended
call.failedA call failed to connect
contact.createdA new contact was created
contact.updatedA contact was updated
deal.createdA new deal was created
deal.stage_changedA deal moved to a new stage
deal.closedA deal was closed (won or lost)
campaign.startedA campaign was activated
campaign.completedA campaign finished all contacts
agent.status_changedAn agent’s status changed
Example usage:
"Create a webhook to https://api.mycrm.com/events for call.completed and deal.stage_changed events"
Example response:
{
  "id": "wh_01HT...",
  "url": "https://api.mycrm.com/events",
  "events": ["call.completed", "deal.stage_changed"],
  "status": "active",
  "secret": "whsec_abc123...",
  "created_at": "2026-03-18T12:00:00Z"
}

delete_webhook

Remove a webhook endpoint. Parameters:
ParameterTypeRequiredDescription
webhook_idstringYesThe webhook ID to delete
Example usage:
"Delete webhook wh_01HR..."
Example response:
{
  "deleted": true,
  "id": "wh_01HR..."
}

Platform

get_platform_status

Get platform health, usage statistics, and account summary. Parameters: None required. Example usage:
"What's the status of my SmartAlex platform?"
Example response:
{
  "status": "operational",
  "uptime_percent": 99.97,
  "version": "2.14.0",
  "account": {
    "plan": "professional",
    "tenant_id": "tenant_01HP..."
  },
  "usage": {
    "agents_active": 2,
    "agents_limit": 10,
    "campaigns_active": 1,
    "contacts_total": 1247,
    "calls_this_month": 892,
    "minutes_this_month": 2450,
    "minutes_limit": 5000
  },
  "services": {
    "voice": "operational",
    "api": "operational",
    "database": "operational",
    "storage": "operational"
  },
  "checked_at": "2026-03-18T12:00:00Z"
}

Error Responses

All tools return consistent error responses:
{
  "error": {
    "code": "not_found",
    "message": "Contact with ID c_01HX... was not found",
    "status": 404
  }
}
Common error codes:
CodeStatusDescription
bad_request400Invalid parameters
unauthorized401Missing or invalid API key
forbidden403Insufficient permissions
not_found404Resource not found
rate_limited429Too many requests — check Retry-After header
internal_error500Server error — retry or contact support

  • MCP Overview — Architecture, resources, prompts, and workflows
  • Getting Started — Connect SmartAlex to your AI assistant in 2 minutes