From f7a0c2098641186234b97f2c454a5dadccd95b2b Mon Sep 17 00:00:00 2001 From: Sameersribot Date: Fri, 14 Aug 2026 02:21:25 +0530 Subject: [PATCH] docs: add AgentLine MCP telephony integration Add AgentLine as an MCP integration for ADK. AgentLine gives agents real US phone numbers for outbound voice calls, inbound call handling, inbound SMS, transcripts, and billing. Includes Python and TypeScript examples for the hosted Streamable HTTP MCP server, with all 21 available tools documented. --- docs/integrations/agentline.md | 195 +++++++++++++++++++++++++ docs/integrations/assets/agentline.png | Bin 0 -> 36137 bytes 2 files changed, 195 insertions(+) create mode 100644 docs/integrations/agentline.md create mode 100644 docs/integrations/assets/agentline.png diff --git a/docs/integrations/agentline.md b/docs/integrations/agentline.md new file mode 100644 index 0000000000..7969189a40 --- /dev/null +++ b/docs/integrations/agentline.md @@ -0,0 +1,195 @@ +--- +catalog_title: AgentLine +catalog_description: Make voice calls, read inbound SMS, and provision numbers +catalog_icon: /integrations/assets/agentline.png +catalog_tags: ["mcp"] +--- + +# AgentLine MCP tool for ADK + +
+ Supported in ADKPythonTypeScript +
+ +The [AgentLine MCP Server](https://github.com/AgentLineHQ/agentline-mcp) +connects your ADK agent to [AgentLine](https://agentline.cloud), an AI-native +telephony platform. This integration gives your agent the ability to provision +US phone numbers, make and receive voice calls, retrieve transcripts, read +inbound SMS, and manage billing using natural language. + +## Use cases + +- **Autonomous Phone Calls**: Have your agent call a US number, hold an + AI-powered conversation with a custom greeting and system prompt, then return + the full transcript. + +- **Inbound Voice Agents**: Create a voice agent, attach a phone number, and let + AgentLine answer inbound calls with the agent's prompt, greeting, and voice. + +- **Phone Number Management**: Provision a US local or toll-free number with a + preferred area code and assign it to an agent. + +- **Inbound SMS**: Read SMS that callers send to the agent's number and poll + for `sms.received` events. + +- **Transcripts and Events**: List calls, hang up an in-progress call, and poll + or peek at the event mailbox for `call.completed` and `call.owner_task` + results. + +- **Voice and Billing**: Choose a TTS voice preset and check account balance + before placing calls or buying numbers. + +## Prerequisites + +- Create an [AgentLine account](https://agentline.cloud/signup) +- Generate an API key with the email one-time-code flow. See + [Authentication](https://docs.agentline.cloud/authentication) + +## Use with agent + +=== "Python" + + === "Remote MCP Server" + + ```python + from google.adk.agents import Agent + from google.adk.tools.mcp_tool import McpToolset + from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams + + AGENTLINE_API_KEY = "YOUR_AGENTLINE_API_KEY" + + root_agent = Agent( + model="gemini-flash-latest", + name="agentline_agent", + instruction="Help users make phone calls, read inbound SMS, and manage phone numbers", + tools=[ + McpToolset( + connection_params=StreamableHTTPConnectionParams( + url="https://api.agentline.cloud/mcp", + headers={ + "Authorization": f"Bearer {AGENTLINE_API_KEY}", + }, + ), + ) + ], + ) + ``` + +=== "TypeScript" + + === "Remote MCP Server" + + ```typescript + import { LlmAgent, MCPToolset } from "@google/adk"; + + const AGENTLINE_API_KEY = "YOUR_AGENTLINE_API_KEY"; + + const rootAgent = new LlmAgent({ + model: "gemini-flash-latest", + name: "agentline_agent", + instruction: "Help users make phone calls, read inbound SMS, and manage phone numbers", + tools: [ + new MCPToolset({ + type: "StreamableHTTPConnectionParams", + url: "https://api.agentline.cloud/mcp", + transportOptions: { + requestInit: { + headers: { + Authorization: `Bearer ${AGENTLINE_API_KEY}`, + }, + }, + }, + }), + ], + }); + + export { rootAgent }; + ``` + +## Available tools + +### Agents + +Tool | Description +---- | ----------- +`create_agent` | Create a voice agent with a name, system prompt, greeting, and voice +`list_agents` | List all agents +`get_agent` | Get details for a specific agent +`update_agent` | Update an agent's prompt, greeting, voice, or owner phone +`delete_agent` | Delete an agent + +### Phone numbers + +Tool | Description +---- | ----------- +`buy_phone_number` | Provision a US local or toll-free number and attach it to an agent +`list_phone_numbers` | List phone numbers on the account + +### Voice calls + +Tool | Description +---- | ----------- +`make_outbound_call` | Place an outbound call from an agent's number +`list_calls` | List recent calls +`get_call_details` | Get status and metadata for a call +`get_call_transcript` | Get the full `{role, text, timestamp}` transcript +`hangup_call` | End an active call + +### SMS + +Outbound SMS is not available. Inbound messages arrive as `sms.received` events. + +Tool | Description +---- | ----------- +`list_messages` | List inbound SMS for an agent + +### Events + +The `poll_events` tool consumes pending events. Use `peek_events` to inspect +the queue without deleting it. Common `event_type` values include +`call.received`, `call.completed`, `call.owner_task`, and `sms.received`. + +Tool | Description +---- | ----------- +`poll_events` | Consume pending call and SMS events from the mailbox +`peek_events` | Preview pending events without consuming them + +### Billing + +Tool | Description +---- | ----------- +`get_account_balance` | Get the current account balance +`get_expenditure_breakdown` | Get spending for the current period + +### Voice + +Voice presets include `female-1`, `female-2`, `female-3`, `male-1`, `male-2`, +and `male-3`. Per-call and per-agent settings override the account default. + +Tool | Description +---- | ----------- +`list_available_voices` | List TTS voice presets +`get_account_voice` | Get the account-level default voice +`set_account_voice` | Set the account-level default voice +`reset_account_voice` | Reset the account voice to the platform default + +## Configuration + +The remote AgentLine MCP server authenticates with a Bearer API key. Keys use +the `al_live_` prefix. Legacy `sk_live_` keys are also accepted. + +| Setting | Description | Default | +| ------- | ----------- | ------- | +| `Authorization` header | `Bearer al_live_...` | Required | +| MCP URL | Hosted Streamable HTTP endpoint | `https://api.agentline.cloud/mcp` | + +Phone numbers are E.164 (for example, `+12125557890`). Each agent can have one +active number. Numbers are US-only. + +## Additional resources + +- [AgentLine Documentation](https://docs.agentline.cloud/introduction) +- [AgentLine MCP Server on GitHub](https://github.com/AgentLineHQ/agentline-mcp) +- [AgentLine on GitHub](https://github.com/AgentLineHQ/AgentLine) +- [AgentLine Website](https://agentline.cloud) +- [Discord](https://discord.gg/69SVE2jWNr) diff --git a/docs/integrations/assets/agentline.png b/docs/integrations/assets/agentline.png new file mode 100644 index 0000000000000000000000000000000000000000..0da464d8a275b3f89add9cb5b844326377545830 GIT binary patch literal 36137 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%0D21(gGJm>n9wXZdxbaP<{ROU;>K^g4OR@0( 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