AgentLine MCP
A phone API for AI agents: Claude and Cursor get a real number, make and take calls, read SMS and transcripts over MCP.
- 62 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The agent calls real people, takes calls, reads SMS and buys numbers at the account owner's expense.
- Carrier, speech service and model keys are stored in `.env` and in the client configuration.
Install
- Works in
Manual install
git clone https://github.com/agentlineHQ/AgentLine.gitThe first step of the Docker Compose option: then `cp .env.example .env`, fill in keys and `docker-compose up -d`.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent calls real people, takes calls, reads SMS and buys numbers at the account owner's expense.
- Carrier, speech service and model keys are stored in `.env` and in the client configuration.
This is third-party code. Review the repository files before installing.
What it does
AgentLine gives coding agents and LLM apps a real phone number and a voice pipeline of speech recognition, a model and synthesis. An agent places calls, takes inbound ones, reads SMS, presses DTMF tones in voice menus and leaves voicemail. All of this is available over REST and through a built-in MCP server. The server is deployed from the repository with Docker Compose together with PostgreSQL and Redis, or the hosted version at agentline.cloud is used. MCP exposes `make_outbound_call`, `list_calls`, `get_call_transcript`, `hangup_call`, `buy_phone_number` and other tools. Owner mode accepts calls from a registered number and records instructions for the agent. The repository includes a skill file for agents.
Who it is for. Developers who build voice agents or want Claude Code and Cursor to place phone calls.
Good fit when
- You need an AI receptionist: inbound calls with a set greeting and system prompt.
- Outbound reminders and surveys are handled by a voice agent and transcripts are read through `get_call_transcript`.
- A voice menu needs key presses and a voicemail message.
- You want a self-hosted replacement for Twilio plus speech recognition plus a voice model.
Not a fit when
- Calls cannot be left to an agent without oversight: each call costs money and reaches real people.
- You have no carrier account or required speech service keys.
- You only need SMS without voice: the service is wider than the task.
Example request
Show the call list and the transcript of the last call, and make no new outbound calls without my confirmation.MCP
- Transport
- http
- Authentication
- API key
Environment variables
AGENTLINE_API_KEYrequired, secret- AgentLine API key of the form `al_live_...` for REST, MCP and the skill.
TWILIO_ACCOUNT_SID- Twilio account SID when numbers come from Twilio.
TWILIO_AUTH_TOKENsecret- Twilio auth token.
DEEPGRAM_API_KEYsecret- Deepgram key for built-in speech recognition.
CARTESIA_API_KEYsecret- Cartesia key for speech synthesis.
Limitations
The repository bills no one: you pay the carrier, speech vendors and model host you configure. The built-in pipeline needs Deepgram, Cartesia and OpenAI-compatible API keys, and numbers need a Twilio or Telnyx account. Every request requires an `al_live_...` key. The `buy_phone_number` tool provisions a new number and outbound calls reach real people, so calling laws and recipient consent stay on you. The README MCP example points to `localhost:8000`, and the hosted version at agentline.cloud is run by a third party.
How to disable. Remove the `agentline` entry from `claude_desktop_config.json` or the client configuration and stop the containers with `docker-compose down`. Release numbers and revoke keys with the carrier.
FAQ
How do I run AgentLine?
With Docker Compose: clone the repository, copy `.env.example` to `.env`, fill in keys and run `docker-compose up -d`. The API comes up at `http://localhost:8000`.
How do I connect MCP to Claude Desktop?
Add an `agentline` server with command `npx`, arguments `-y`, `mcp-remote@latest`, the address `http://localhost:8000/mcp` and the header `Authorization: Bearer al_live_...`.
Which keys are needed?
For numbers, Twilio (`TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN`) or Telnyx (`TELNYX_API_KEY`). For the built-in voice pipeline, Deepgram, Cartesia and an OpenAI-compatible API key.
What is owner mode?
A call from a registered number captures your instructions and the agent carries them out after you hang up.
Is there a skill for agents?
Yes, `skills/agentline/SKILL.md` in the repository and a copy at agentline.cloud. The `AGENTLINE_API_KEY` variable is required.
Discussion
No questions or reviews yet.
Related
MCP serversThe Agent Call MCP server prepares a phone call for your task and dials only after you explicitly confirm the plan.
An agent messages your phone or calls it over VoIP, a voice AI discusses the decision and the transcript returns to the agent
CLI dispatcher for agents: tasks run in the background and the agent sleeps on a question until you reply from a messenger.
SeldonFrame MCP server and plugin: an agent builds a client site, booking flow, CRM and AI agent from one request
A self-hosted control plane for running several agents: task dispatch, run review, spend tracking, connected via MCP, CLI or REST
Open Agent Email — a self-hosted mail server for AI agents: inboxes, in-thread replies, human approval, webhooks and an MCP endpoint with 96 tools
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| AgentLine (this card) | no | API key | 62 | |
| Twilio MCP Server | yes | API key | 114 | public Twilio APIs as tools; AgentLine adds a ready voice pipeline and numbers for the agent |
| WhoBot phone call skill | yes | 119 | a skill for creating AI staff who call customers; AgentLine is self-hosted and exposes calls over MCP and REST |
README in short
The document describes the service purpose, a comparison table with Twilio and Vapi, use cases, a feature list, architecture, run options, configuration, the API and MCP tool reference, the skill file and deployment.
README badge
Original SKILL.md
---
name: agentline
description: Make phone calls, view received SMS, provision numbers, and manage agents through a self-hosted AgentLine telephony API (REST or MCP). Use when the user asks to call someone, check transcripts, view text messages, manage phone agents, or buy numbers. The server operator chooses the carrier and the voice runtime.
metadata:
openclaw:
emoji: "📞"
requires:
env:
- AGENTLINE_API_KEY
primaryEnv: AGENTLINE_API_KEY
---
# AgentLine — AI Telephony Skill
Give your AI agent a real phone number and voice calls. Use the persistent relay for live context; use webhooks only as a fallback.
## First-Time Setup
**Follow these steps IN ORDER when setting up AgentLine for the first time:**
1. **Check for `AGENTLINE_API_KEY`** (starts with `al_live_` or `sk_live_`) and `AGENTLINE_URL` (defaults to `http://localhost:8000`).
- **If you do NOT have this key**, stop and ask the human for the API key from their AgentLine server. Do NOT proceed without it.
2. **Check for `AGENTLINE_AGENT_ID`** (starts with `agt_`) — this is optional.
- **If you already have one**, use it and skip to step 3.
- **If you do NOT have one**, create a new agent now by calling `POST /v1/agents` with `{"name": "My Agent"}`. Save the returned agent ID.
3. **Ask for area code and provision the number** — **Always ask the human:**
> "What area code would you like for your phone number? (e.g. 212 for NYC, 415 for SF, 313 for Detroit)"
- Once they give an area code, call `POST /v1/numbers` with `{"agent_id": "...", "area_code": "XXX"}`
- If it succeeds, confirm the provisioned number to the human
- If it fails (no numbers available for that area code), tell them and ask for a different area code
4. **Ask for voice preference** — **Always ask the human:**
> "Would you like your agent to have a **male** or **female** voice?"
- If **female**: set `voice_id` to `"female-1"` (or `"female-2"` for warmer tone)
- If **male**: set `voice_id` to `"male-1"`
- Apply via `PATCH /v1/agents/$AGENTLINE_AGENT_ID` with `{"voice_id": "chosen_preset"}`
- Available presets: `female-1`, `female-2`, `male-1` — or any Cartesia voice UUID