MCP server

MCP server

MCP (Model Context Protocol) is an open protocol that lets AI assistants (such as Claude) connect to external services as tools. Instead of writing code against the REST API, you connect MAIA as a “connector,” and the assistant calls the actions itself: lists projects, reads calls, places outbound calls.

The MAIA MCP server uses the same data and the same permissions as the REST API, and authenticates with the same API key.

Connection parameters

ParameterValue
URLhttps://mcp.maia-ai.com/mcp
TransportStreamable HTTP
AuthorizationX-API-Key: maia_YOUR_KEY header

Create an API key in the dashboard at dashboard.maia-ai.com → “API & MCP” section → “API” tab → “Create key”. The key is shown only once. To place calls you need a key with the write scope.

Connecting to Claude Desktop

The “Add custom connector” button in the Claude UI does not work here — it relies on OAuth. For MAIA, you configure the connection via a config file and the mcp-remote bridge.

⚠️

You need Node.js installed — the mcp-remote bridge is launched via npx.

Step 1. Install Node.js (if you haven’t already) — it includes npx.

Step 2. Open the Claude Desktop config file claude_desktop_config.json. In Claude Desktop you can open it via Settings → Developer → Edit Config.

Step 3. Add the MAIA server, inserting your key:

{
  "mcpServers": {
    "maia": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.maia-ai.com/mcp",
        "--header",
        "X-API-Key:maia_YOUR_KEY"
      ]
    }
  }
}

Step 4. Fully restart Claude Desktop. After the restart, the MAIA tools will be available to the assistant.

Tools

The server exposes 30 tools. Mutations require a key with the write scope. The assistant calls them itself — you just ask it in natural language.

Projects and agents

ToolWhat it doesScope
list_projectslist your projectsread
create_projectcreate a new agent (Business/Pro plan)write
get_agent_configcurrent agent configurationread
list_agent_actionsavailable configuration actions (the “Maestro” registry)read
configure_agentchange agent settings with a batch of actionswrite

Ask Claude: “Create an agent for barbershop bookings and show me its settings.”

Calls

ToolWhat it doesScope
list_callscall historyread
get_callcall details: status, duration, transcriptread
place_callplace an outbound call (spends balance)write

Ask Claude: “Call +79991234567 from the “Sales team” project and confirm the appointment.”

Contacts and balance

ToolWhat it doesScope
get_balancecurrent balanceread
list_contactslist of contactsread
update_contactedit name/notes/tags/lead statuswrite

Ask Claude: “Find the contact Ivanov and mark them as a hot lead.”

Knowledge base

ToolWhat it doesScope
list_knowledgeknowledge sources and indexing statusread
add_knowledgeadd a source: text or URLwrite
delete_knowledgedelete a sourcewrite

Ask Claude: “Add example.com/faq to the project’s knowledge base and crawl the whole site.” Files (PDF/DOCX) can’t be sent over MCP — upload them via REST POST /v1/public/projects/{id}/knowledge/file.

Calling campaigns

ToolWhat it doesScope
create_campaigncreate a campaign (draft)write
add_campaign_contactsupload contacts (JSON, before start)write
start_campaignstart (requires explicit consent=true)write
campaign_statusstatus, counters, spend (poll)read
pause_campaign / resume_campaign / stop_campaignpause / resume / stopwrite
requeue_campaignre-call the ones not reachedwrite

Ask Claude: “Create a campaign from this list and start calling” — before starting, Claude will always ask you to confirm subscriber consent (Russian laws 152-FZ/38-FZ).

ToolWhat it doesScope
parse_lead_brieffree brief parse + estimatewrite
search_leadsrun a paid searchwrite
get_lead_searchjob status and progress (poll)read
list_leadsfound leadsread
leads_to_campaignbuild a calling campaign from leadswrite

Ask Claude: “Find 50 beauty salons in Kazan” — Claude shows the estimate, asks for consent to the paid search, then turns the results into a campaign.

Numbers (telephony)

ToolWhat it doesScope
list_numberstrunk numbers and their project assignmentsread
assign_numberassign a number to a projectwrite
unassign_numberunassign a numberwrite

Ask Claude: “Assign +74951234567 to the “Sales team” project for outbound.”

How it differs from REST

MCP and REST work with the same data and the same permissions (scopes read/write), but solve different problems:

  • REST API — for integrating into your own code and services: you send HTTP requests and handle the responses yourself. See REST API.
  • MCP — for working from an AI assistant: the assistant itself selects and calls tools in response to your natural-language requests, with no code to write.

If you need automation inside an application, use REST. If you want to “talk” to MAIA through Claude, use MCP.

Available outside MCP

MCP already covers almost the entire public API: projects and agent configuration, calls, contacts, knowledge base, campaigns, lead search and numbers. A few capabilities are used differently:

  • Uploading files to the knowledge base — PDF/DOCX/txt can’t be sent over MCP; use the REST route POST /v1/public/projects/{id}/knowledge/file (multipart). Text and URLs are added straight from MCP (add_knowledge).
  • Real-time voice API — a live voice session with the agent: available via REST (POST /v1/public/realtime/session), see Real-time voice. Not exposed through MCP yet.
  • Custom tools — calling your external webhooks as agent tools: configured in the dashboard (project editor, Business/Pro), see Custom tools.