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:

SettingValue
Namespeko
URLhttps://mcp.speko.ai/mcp
AuthenticationOAuth 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, and migration.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.

HostToolsSurface
mcp.speko.ai101Full operational surface. Coding agents use this.
anthropic.speko.ai35Anthropic MCP Directory. Reads, audio.transcribe, outbound calling.
chatgpt.speko.ai20OpenAI Plugin Directory.
builder-mcp.speko.ai12App 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:

groupabsent
audio generationaudio.synthesize
live session / call creationsessions.create, agents.test_call
agent configuration and deploymentagents.create, agents.update, agents.deploy, agents.rollback, agents.tools writes
knowledge-base and phone-number writesknowledge_bases writes, phone_numbers.create, phone_numbers.update
bulk evaluation and monitoringagents.evals.*, agents.monitors.*
irreversible and outward-facing writesagents.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.

](https://docs.speko.ai/quickstart/replit)