mcpField
S
Stexa Voice Mcp

Stexa Voice Mcp

Remote
github.com/stexaaiCommunication0Updated 22w ago
Repository

About Stexa Voice Mcp

Stexa Voice MCP is a cloud service that lets AI agents place outbound calls and retrieve call records. It is for voice workflows that need call status and transcripts, with API-key or OAuth 2.1 authentication.

Key features

  1. 01Place outbound voice calls
  2. 02Check call status
  3. 03Retrieve transcripts and summaries
  4. 04List recent calls with filters
  5. 05Authenticate with API key or OAuth 2.1

Use cases

  1. 01Trigger calls from CRM events
  2. 02Send voice appointment reminders
  3. 03Collect post-service feedback by phone
  4. 04Add call transcripts to CRM records

MCP support

It exposes outbound calling, call status, transcript, and recent-call tools to MCP clients over HTTP using JSON-RPC 2.0. Authentication supports API keys and OAuth 2.1.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://stexa.ru/mcp/v1/jsonrpc
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

All endpoints
Streamable HTTPhttps://stexa.ru/mcp/v1/jsonrpcAuth required

Tools

4
ParameterTypeRequiredDescription
phonestringYesSubscriber number in E.164 format (+7XXXXXXXXXX for Russia).
scenario_idstringNoID of the bot scenario. If not specified, the tenant's default scenario is used.
varsobjectNoVariables to substitute into the script ({{name}}, {{date}}). All values must be strings.
wait_for_completionbooleanNoM1.1.4: if true, blocks for up to 90s and returns transcript. M0: ignored.
max_duration_sintegerNoМаксимальная длительность звонка в секундах. M0: пишется в БД, не enforce'ится (это M1.1).

Details

From the project README

Stexa Voice MCP — Examples & Quickstart

Status Protocol Auth

Voice telephony as an MCP tool. Give your AI agent the ability to make real outbound phone calls, get transcripts, and check call status — all via the Model Context Protocol.

stexa_call_outbound("+79991234567")  →  AI bot dials, speaks, records
stexa_get_transcript("oc:42")        →  [{"role": "bot", "text": "..."}, ...]

→ EN Docs · Get API Key · Live demo


What's in this repo

PathDescription
examples/claude-desktop/Config snippet for Claude Desktop
examples/cursor/Cursor .cursor/mcp.json settings
examples/python/Direct HTTP calls via Python + httpx
examples/n8n/Ready-to-import n8n workflow

Quick start (5 minutes)

Step 1 — Get an API key
  1. Register at stexa.ru
  2. Open Cabinet → MCP Server → + Create key
  3. Copy the key (format: stx_live_...)

OAuth 2.1 is also supported and recommended for production. See OAuth setup below.


Step 2 — Connect your MCP client
Claude Desktop

Add to your config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "stexa-voice": {
      "url": "https://stexa.ru/mcp/v1/jsonrpc",
      "headers": {
        "Authorization": "Bearer stx_live_YOUR_KEY"
      }
    }
  }
}

Restart Claude Desktop — Stexa tools appear in the tool picker automatically.

For OAuth (no static key needed):

{
  "mcpServers": {
    "stexa-voice": {
      "url": "https://stexa.ru/mcp/v1/jsonrpc",
      "auth": "oauth2"
    }
  }
}

Claude Desktop opens a browser window for the OAuth consent flow on first use.


Cursor

Create or edit .cursor/mcp.json in your project root (or ~/.cursor/mcp.json globally):

{
  "mcpServers": {
    "stexa-voice": {
      "url": "https://stexa.ru/mcp/v1/jsonrpc",
      "headers": {
        "Authorization": "Bearer stx_live_YOUR_KEY"
      }
    }
  }
}

Python
pip install httpx
from examples.python.connect_and_call import StexaMCPClient

client = StexaMCPClient(api_key="stx_live_YOUR_KEY")

# Async call — returns immediately, poll for status
result = client.call_outbound("+79991234567")
call_id = result["call_id"]   # "oc:42"

# Or synchronous call — blocks up to 90s, returns transcript
result = client.call_outbound("+79991234567", wait=True)
print(result["transcript"])

Full example: examples/python/connect_and_call.py


n8n
  1. Open your n8n instance
  2. Go to Workflows → Import from file
  3. Upload examples/n8n/stexa_voice_workflow.json
  4. Set your API key in the HTTP Request node headers
  5. Activate and test via the Webhook trigger

Tools reference

stexa_call_outbound

Make an outbound voice call. The AI bot (Alina) dials the number and conducts a conversation.

Scope required: call:write

ArgumentTypeRequiredDescription
phonestring✅Phone in E.164 format (+79991234567)
scenario_idstring—Custom scenario ID (default: tenant default)
varsobject—Variables for template substitution {{name}}, {{date}}
wait_for_completionboolean—Block up to 90s, return full transcript (default: false)
max_duration_sinteger—Max call length in seconds, 30–600 (default: 300)

Response (async):

{
  "call_id": "oc:42",
  "status": "queued",
  "estimated_start_in_s": 5
}

Response (wait_for_completion=true):

{
  "call_id": "oc:42",
  "status": "completed",
  "duration_s": 87,
  "transcript": [
    {"role": "bot", "text": "Hello, this is Alina from Stexa. May I speak with..."},
    {"role": "client", "text": "Yes, speaking."}
  ],
  "summary": "Client confirmed the appointment for Tuesday at 3 PM."
}

stexa_get_call_status

Check the current status of a call initiated via stexa_call_outbound.

Scope required: call:read

ArgumentTypeRequiredDescription
call_idstring✅From stexa_call_outbound (format oc:N)

Status lifecycle:

queued → ringing → talking → completed
                            → failed (no_answer / busy / error)

Response:

{
  "call_id": "oc:42",
  "status": "talking",
  "phone": "+7953****5875",
  "started_at": "2026-05-25T10:30:00+00:00",
  "duration_s": 34
}

stexa_get_transcript

Get the conversation transcript of a completed (or in-progress) call.

Scope required: transcript:read

ArgumentTypeRequiredDescription
call_idstring✅From stexa_call_outbound
include_summaryboolean—Include AI-generated summary (default: true)

Response:

{
  "call_id": "oc:42",
  "status": "completed",
  "duration_s": 87,
  "transcript": [
    {"role": "bot", "text": "Hello, this is Alina..."},
    {"role": "client", "text": "Yes, I remember. Tuesday at 3 PM works."}
  ],
  "summary": "Client confirmed appointment, expressed satisfaction."
}

If the call is still in progress, returns status: "in_progress" with partial_transcript.


stexa_list_recent_calls

List recent calls with filters. Useful for context before making a new call ("has this client been called before?").

Scope required: call:read

ArgumentTypeDescription
phonestringFilter by phone number
sincestringISO-8601 timestamp (default: 7 days ago)
limitintegerNumber of results, 1–100 (default: 20)
originstringall / mcp / manual / scheduled

OAuth 2.1 setup

For production integrations where embedding a static API key is not acceptable:

EndpointURL
Authorization server metadatahttps://stexa.ru/.well-known/oauth-authorization-server
Protected resource metadatahttps://stexa.ru/.well-known/oauth-protected-resource
Dynamic client registrationhttps://stexa.ru/mcp/v1/oauth/register

Supported flows:

  • Authorization Code + PKCE (RFC 7636) — for user-facing apps
  • Dynamic Client Registration (RFC 7591) — for automated agent registration

Register a client:

curl -X POST https://stexa.ru/mcp/v1/oauth/register \
  -H "Content-Type: application/json" \
  -d '{
    "client_name": "My AI Agent",
    "redirect_uris": ["https://my-agent.example.com/callback"],
    "scope": "call:write call:read transcript:read"
  }'

Returns client_id and client_secret for the Authorization Code flow.


Authentication scopes

ScopeGrants access to
call:writestexa_call_outbound
call:readstexa_get_call_status, stexa_list_recent_calls
transcript:readstexa_get_transcript

API keys created in the Cabinet include all three scopes by default.


Rate limits

LevelLimit
Per IP (global)60 requests / minute
Per API key (global)120 requests / minute
stexa_call_outbound per key10 calls / minute

Server info

Endpoint:         POST https://stexa.ru/mcp/v1/jsonrpc
Health:           GET  https://stexa.ru/mcp/v1/health
Protocol version: 2024-11-05
Transport:        HTTP (JSON-RPC 2.0)
Discovery:        GET  https://stexa.ru/mcp/v1/jsonrpc (tools/list, no auth)

Use cases

  • AI-triggered outbound campaigns — agent fires calls when a CRM event occurs
  • Appointment reminders — Claude reminds clients 24h before a visit (voice)
  • Post-call feedback — collect NPS via a voice call after service
  • Call transcripts in CRM — enrich lead records with real dialogue
  • Beauty salon / clinic / auto-service booking — voice bot handles scheduling

Links


License

Stexa Voice MCP is a proprietary cloud service (terms · privacy). The example code in this repository is available under the MIT License.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.