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
| Parameter | Value |
|---|---|
| URL | https://mcp.maia-ai.com/mcp |
| Transport | Streamable HTTP |
| Authorization | X-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
| Tool | What it does | Scope |
|---|---|---|
list_projects | list your projects | read |
create_project | create a new agent (Business/Pro plan) | write |
get_agent_config | current agent configuration | read |
list_agent_actions | available configuration actions (the “Maestro” registry) | read |
configure_agent | change agent settings with a batch of actions | write |
Ask Claude: “Create an agent for barbershop bookings and show me its settings.”
Calls
| Tool | What it does | Scope |
|---|---|---|
list_calls | call history | read |
get_call | call details: status, duration, transcript | read |
place_call | place an outbound call (spends balance) | write |
Ask Claude: “Call +79991234567 from the “Sales team” project and confirm the appointment.”
Contacts and balance
| Tool | What it does | Scope |
|---|---|---|
get_balance | current balance | read |
list_contacts | list of contacts | read |
update_contact | edit name/notes/tags/lead status | write |
Ask Claude: “Find the contact Ivanov and mark them as a hot lead.”
Knowledge base
| Tool | What it does | Scope |
|---|---|---|
list_knowledge | knowledge sources and indexing status | read |
add_knowledge | add a source: text or URL | write |
delete_knowledge | delete a source | write |
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
| Tool | What it does | Scope |
|---|---|---|
create_campaign | create a campaign (draft) | write |
add_campaign_contacts | upload contacts (JSON, before start) | write |
start_campaign | start (requires explicit consent=true) | write |
campaign_status | status, counters, spend (poll) | read |
pause_campaign / resume_campaign / stop_campaign | pause / resume / stop | write |
requeue_campaign | re-call the ones not reached | write |
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).
Lead search
| Tool | What it does | Scope |
|---|---|---|
parse_lead_brief | free brief parse + estimate | write |
search_leads | run a paid search | write |
get_lead_search | job status and progress (poll) | read |
list_leads | found leads | read |
leads_to_campaign | build a calling campaign from leads | write |
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)
| Tool | What it does | Scope |
|---|---|---|
list_numbers | trunk numbers and their project assignments | read |
assign_number | assign a number to a project | write |
unassign_number | unassign a number | write |
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.