Speko
वॉइस एजेंट, फोन कॉल, TTS, STT, और कॉल ट्रांसक्रिप्ट
दस्तावेज़
MCP
Connect Speko to Claude Code, Codex, OpenCode, Cursor, and other AI coding tools.
Speko MCP gives coding agents authenticated access to organizations, agents, sessions, calls, phone numbers, knowledge bases, evals, deployment, migration helpers, and usage data.
Tool surfaces are bound to hostnames. This page documents the full surface at mcp.speko.ai; assistant directories are published on narrower hosts, listed under Directory hosts.
Install in your tool
Run the guided installer and choose OAuth browser sign-in:
npx @spekoai/mcp@latest init
The hosted endpoint is https://mcp.speko.ai/mcp. It uses stateless JSON HTTP with MCP 2026-07-28. Better Auth owns OAuth state while the MCP service validates every access token independently, so requests can reach any replica. Automation can instead use a Speko Platform API key from API keys.
MCP does not expose API-key lifecycle tools. Create and revoke product-wide Platform keys from API keys.
claude mcp add --transport http speko https://mcp.speko.ai/mcp
Add to ~/.codex/config.toml:
[mcp_servers.speko]
url = "https://mcp.speko.ai/mcp"
Add to opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"speko": {
"type": "remote",
"url": "https://mcp.speko.ai/mcp",
"enabled": true
}
}
}
Open Cursor Settings > MCP > Add new global MCP server, then add:
{
"mcpServers": {
"speko": {
"url": "https://mcp.speko.ai/mcp"
}
}
}
Configure a remote HTTP MCP server:
| Setting | Value |
|---|---|
| Name | speko |
| URL | https://mcp.speko.ai/mcp |
| Authentication | OAuth browser sign-in |
For API-key automation, add Authorization: Bearer ${SPEKO_API_KEY} using the client's environment-variable syntax.
What to ask your agent
Once connected to mcp.speko.ai, ask your agent to:
- inspect organization usage and credit balance;
- create, update, deploy, or roll back agents;
- create sessions and inspect call transcripts or recordings;
- create phone numbers, knowledge bases, and evals;
- convert external voice-agent configs with
migration.workspace.inspect,migration.external_config.parse, andmigration.session_config.build.
Directory hosts
Assistant directories run on their own hosts. Each surface is a property of the host — no query parameter, header, or account setting widens it.
| Host | Tools | Surface |
|---|---|---|
mcp.speko.ai | 101 | Full operational surface. Coding agents use this. |
anthropic.speko.ai | 35 | Anthropic MCP Directory. Reads, audio.transcribe, outbound calling. |
chatgpt.speko.ai | 20 | OpenAI Plugin Directory. |
builder-mcp.speko.ai | 12 | App builders (v0, Lovable, Bolt, Replit, Base44, Figma Make). |
Anthropic MCP Directory
https://anthropic.speko.ai/mcp serves 35 tools: reads across agents, sessions, calls, transcripts, recordings, phone numbers, knowledge bases, credits and usage, plus audio.transcribe, docs.search, the migration helpers, sessions.phone.create for placing a call, and phone_numbers.kyb.{get,submit} for the declaration that unlocks calling.
Six groups are absent from that host:
| group | absent |
|---|---|
| audio generation | audio.synthesize |
| live session / call creation | sessions.create, agents.test_call |
| agent configuration and deployment | agents.create, agents.update, agents.deploy, agents.rollback, agents.tools writes |
| knowledge-base and phone-number writes | knowledge_bases writes, phone_numbers.create, phone_numbers.update |
| bulk evaluation and monitoring | agents.evals.*, agents.monitors.* |
| irreversible and outward-facing writes | agents.delete, phone_numbers.delete, knowledge_bases.delete, share_cards.create |
Configuring an agent is equivalent to arming it — a deployed agent speaks on inbound traffic with no further tool call — so agent configuration is withheld alongside speech generation itself. audio.transcribe remains, because speech-to-text produces no audio and returns only text. Calling a withheld tool returns Unknown tool, indistinguishable from a name that was never registered.
Before any outbound call the workspace files a business declaration: the business name, what calling is for, and an attestation. It is two fields, it takes effect the moment it is submitted, and phone_numbers.kyb.get returns the prefilled name and the exact attestation text to show. Calls from the shared caller-ID pool dial from a Speko-owned number, so the declaration is what keeps a named business behind every call.
sessions.phone.create is served here. It places one call, to one number, per explicit tool call, using an agent you deployed elsewhere — no bulk, scheduled or unattended path reaches it, and the caller cannot configure the agent that speaks. Every call created on a directory host has AI disclosure injected server side: the first thing said on the line is that the caller is an AI, and no prompt can override it.
To create agents or synthesize speech, use mcp.speko.ai, the REST API, or an SDK.
[
Quickstart
From sign-up to your first transcribe call in under five minutes.
](https://docs.speko.ai/quickstart)[
Replit
Add voice — STT, TTS, and LLM with provider routing and failover — to any Replit app.