AI Agents: MCP, UTCP and A2A¶
In a nutshell
OpenVoiceOS (OVOS) can give its speech, translation and reasoning abilities to outside AI agents, and it can use tools and agents that live outside OVOS. Three open protocols make this work: MCP, UTCP and A2A. Each page in this section is one task that you can do, with the exact steps and the real output.
What you can do¶
| What you can do | Task | Component | Component docs |
|---|---|---|---|
| Transcribe speech from Claude Code, Claude Desktop, opencode, Mistral Vibe or any MCP or UTCP agent | Transcribe audio from an AI agent | ovos-stt-server |
AI agent integration |
| Make speech from an AI agent | Let an AI agent speak | ovos-tts-server |
Agent integration |
| Translate text and detect its language from an AI agent | Translate text from an AI agent | ovos-translate-server |
AI agent integration |
| Let other agents talk to an OVOS persona | Talk to an OVOS persona over A2A | ovos-persona-server |
A2A endpoint |
| Write a tool that every OVOS agent component can use | Write a tool plugin | ovos-plugin-manager |
Agents |
| Call the tools of a persona from an AI agent | Use persona tools over MCP and UTCP | ovos-persona-server |
API surfaces |
| Share tools with every program on an OVOS device | Share tools on the messagebus | ovos-PHAL-plugin-tools |
Bus API reference |
| Give a persona tools from an MCP or UTCP server | Give a persona MCP and UTCP tools | ovos-agentic-loop, ovos-tool-adapters |
Toolboxes, MCP, UTCP |
| Let a persona answer through an agent on another server | Answer through a remote A2A agent | ovos-a2a-agent-plugin |
Configuration |
| Connect HiveMind voice satellites to an A2A agent | Connect a HiveMind satellite to an A2A agent | hivemind-a2a-agent-plugin |
Configuration |
The three protocols¶
- MCP (Model Context Protocol) lets an AI assistant, such as Claude Code, Claude Desktop, opencode or Mistral Vibe, find and call the tools of a server.
- UTCP (Universal Tool Calling Protocol) gives an agent a JSON manual at
GET /utcp. The manual tells the agent how to call the server's own HTTP endpoints, so no wrapper process is necessary. - A2A (Agent-to-Agent) lets one agent give a full question to another agent and get the answer back.
| Protocol | How an agent finds the tools | How an agent calls a tool | What the server needs |
|---|---|---|---|
| UTCP | GET /utcp returns a UTCP 1.0 manual |
The agent calls the HTTP endpoints that the manual names | Nothing. The endpoint is always on. |
| MCP | MCP initialize and tools/list at /mcp |
MCP tools/call over Streamable HTTP |
The mcp extra and the --mcp flag |
| A2A | GET /a2a/.well-known/agent-card.json |
JSON-RPC 2.0 SendMessage |
The a2a extra and the --a2a-base-url flag |
flowchart LR
subgraph Outside OVOS
Agent["AI agent<br/>Claude Code, Claude Desktop,<br/>opencode, Mistral Vibe,<br/>UTCP or A2A client"]
ExtTools["MCP or UTCP server"]
ExtA2A["A2A agent"]
end
subgraph OVOS
STT[STT server]
TTS[TTS server]
TX[Translate server]
PS[Persona server]
Loop["Persona with an<br/>agentic loop"]
Solver["Persona with<br/>ovos-a2a-solver"]
HM["HiveMind master with<br/>hivemind-a2a-agent-plugin"]
end
Agent -->|"MCP, UTCP"| STT
Agent -->|"MCP, UTCP"| TTS
Agent -->|"MCP, UTCP"| TX
Agent -->|"MCP, UTCP, A2A"| PS
Loop -->|"MCP, UTCP"| ExtTools
Solver -->|A2A| ExtA2A
HM -->|A2A| ExtA2A
Diagram: On the left, outside agents call the four OVOS servers. On the right, three OVOS components call tools and agents outside OVOS.
Default ports¶
| Server | Command | Default port |
|---|---|---|
| STT | ovos-stt-server |
8080 |
| TTS | ovos-tts-server |
9666 |
| Translate | ovos-translate-server |
9686 |
| Persona | ovos-persona-server |
8337 |
Security¶
The agent endpoints have no authentication
/mcp, /utcp, /tools/* and /a2a accept every request. Any client that can reach the port can call every tool. Bind the servers to 127.0.0.1 or to a trusted network. To serve other hosts, put a reverse proxy with authentication in front of the server.
Read next: Transcribe audio from an AI agent Related: Agent Tool Plugins · Agentic Loops · Persona Server