Saperly MCP server for AI agents and assistants

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Saperly MCP or direct API to provision phone numbers, send SMS, place voice calls, and manage compliance through natural language.

Saperly logoSaperly
Api Key

Saperly is a phone carrier API for AI agents, offering phone numbers, voice, SMS, and compliance tools. It gives agents reliable telecom infrastructure without stitching together carrier, messaging, and compliance systems yourself.

30 Tools

Try Saperly now

Type what you want done — sign in and watch it run live in the Tool Router playground.

TOOL ROUTER PLAYGROUND
Saperly
Try asking
TOOLS

Supported Tools

Every Saperly action and event your agent gets out of the box.

Bind Connection to Number

Attach a connection (the AI persona / answering brain from SAPERLY_CREATE_CONNECTION) to a phone number, so inbound calls and SMS to that number — and outbound calls placed from it — are handled by that connection.

Check Consent

Check whether a contact currently has active TCPA consent for one of your Saperly numbers, given numberId (your number) and peerNumber (the contact's E.

Create Connection

Create a connection: the AI 'brain' that answers calls and (optionally) SMS on a Saperly phone number.

Delete Connection

PERMANENTLY AND IRREVERSIBLY delete a connection (the AI answering brain / persona that handles calls and SMS) by its id.

End Call

End an in-progress call by its id, hanging up and settling the metered cost.

Get Call

Fetch a single call by its id, returning its status, per-minute rate, final duration (durationSec) and cost (costCents), and the hasRecording / hasTranscript flags.

Get Call Recording

Get the audio recording for a call and return it as a downloadable file.

Get Call Transcript

Fetch the transcript (conversation turns/segments) of a completed call by its id.

Get Connection

Fetch a single connection (the AI answering brain / persona that handles calls and SMS) by its id, returning its full config: name, mode, backend, instructions, tts voice, language, compliance/disclosure settings, recordingEnabled, and manual webhook URL.

Get Phone Number

Fetch a single phone number by its id, returning its E.

Get Usage & Balance

Return the workspace usage summary and prepaid balance: calls {count, totalCostCents, totalDurationSec}, messages {count}, and balanceCents (the prepaid balance, in cents).

List Calls

Return the full voice-call history (inbound + outbound) for the connected Saperly workspace.

List Connections

Return every connection (the AI persona / answering 'brain' that handles calls and SMS) in the connected Saperly workspace.

List Consent Records

Return every TCPA consent record in the connected Saperly workspace, with each record's id, numberId (the Saperly number contact is authorized FROM), peerNumber (the contact's E.

List Languages

Return the spoken languages Saperly supports for voice connections, each as a {code, name} pair (about 42 entries, e.

List Messages

Return SMS messages in the connected Saperly workspace (both inbound and outbound).

List Phone Numbers

Return every phone number provisioned in the connected Saperly workspace, with each number's id, phoneNumber (E.

List Voices

List the text-to-speech voices available for Saperly connections.

Place Call

PAID / METERED — places a REAL outbound voice call that RINGS A REAL PHONE and BILLS PER MINUTE (~26¢/min); it keeps billing until hung up — end it with SAPERLY_END_CALL to stop the meter.

Provision Phone Number

PAID / METERED: provision (buy) a new phone number in a country.

Quote Number Price

READ-ONLY and FREE: quote the price to provision a phone number in a country/type, returning { customerMonthlyCents, customerUpfrontCents }.

Record Consent

Record TCPA consent for a contact so outbound SMS (SAPERLY_SEND_SMS) and calls (SAPERLY_PLACE_CALL) from your number are permitted.

Release Phone Number

PERMANENTLY AND IRREVERSIBLY release a phone number back to the carrier.

Revoke Consent

Revoke a contact's TCPA consent for a given Saperly number, blocking further outbound contact to them.

Send SMS

PAID / METERED: send a single SMS from one of your Saperly numbers to an E.

Set Number Caller ID Name

Set the outbound caller ID name / CNAM (1-15 characters: letters, digits, spaces) presented to recipients on outbound calls from a Saperly phone number, or pass callerIdName=null to CLEAR it.

Set Number SMS Sender ID

Set the alphanumeric SMS sender id (1-11 alphanumeric chars, e.

Set Number Webhook

Set the HTTPS webhook URL that Saperly POSTs this number's events (inbound SMS/calls, status) to.

Transfer Call

PAID / METERED — BLIND-transfers a LIVE, in-progress voice call to another destination `to` (an E.

Update Connection

Partially update a connection (the AI answering brain bound to a number).

SETUP GUIDE

Connect Saperly MCP Tool with your Agent

1

Install Composio

typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
Install the Composio SDK and your agent framework
2

Create a session with MCP enabled

typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["saperly"],
  mcp: true,
});
Create a session scoped to Saperly and read its MCP URL and headers
3

Connect your agent to the MCP server

typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "Send an SMS with Saperly to +15551234567 saying: Your demo is confirmed for tomorrow at 2 PM.",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
Pass the session's MCP URL and headers to your agent and run a Saperly request
SETUP GUIDE

Connect Saperly API Tool with your Agent

1

Install Composio

typescript
npm install @composio/core @composio/openai openai
Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
2

Create a Composio session

typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["saperly"] });
const tools = await session.tools();
Initialize Composio with the OpenAI Responses provider and create a session scoped to Saperly
3

Run Saperly tools with your agent

typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "Send an SMS with Saperly to +15551234567 saying: Your demo is confirmed for tomorrow at 2 PM." }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
Send a request, execute the Saperly tool calls through the session, and print the final answer

Why Use Composio?

AI Native Saperly Integration

  • Supports both Saperly MCP and direct API based integrations
  • Structured, LLM-friendly schemas for reliable voice, SMS, phone number, and compliance actions
  • Rich coverage for building agents that can communicate with customers over real phone channels

Managed Auth

  • Secure API key handling for Saperly without hard-coding secrets in agent code
  • Central place to manage, scope, and revoke Saperly access across users and environments
  • Use auth_configs.create() and connected_accounts.link() to set up Saperly credentials cleanly

Agent Optimized Design

  • Saperly tools are shaped so AI agents can understand phone, SMS, and compliance actions clearly
  • Tools are tuned using real error and success rates to improve reliability over time
  • Comprehensive execution logs so you always know what call, message, or number action ran, when, and on whose behalf

Enterprise Grade Security

  • Fine-grained RBAC so you control which agents and users can access Saperly
  • Scoped, least privilege access to Saperly phone numbers, messaging, voice, and compliance workflows
  • Full audit trail of agent actions to support review, carrier compliance, and internal governance
FRAMEWORKS

Use Saperly with any AI Agent Framework

Choose a Framework you want to connect Saperly with

Rolling this out across your team?

Give your team centralized access control across every framework with Composio’s MCP Gateway.

EXPLORE MCP GATEWAY
FAQ

Frequently asked questions

Yes, Saperly requires you to configure your own API key credentials. Once set up, Composio handles secure credential storage and API request handling for you.

Yes! Composio's Tool Router enables agents to use multiple toolkits. Learn more.

Yes. Composio is SOC 2 Type II compliant and is built to keep your Saperly connection and credentials secure. OAuth tokens and API keys are encrypted, and sensitive customer data is protected at rest and in transit.

Composio also undergoes independent security testing and continuously monitors its systems for security threats. You can review the latest reports and policies in the Composio Trust Center.

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

Create the key in your Saperly account settings, then paste it once on Composio's connection page. Composio stores it encrypted and uses it only for the Saperly actions your agent runs. Nobody else in your workspace can read it, and you can revoke it inside Saperly at any time.

When you connect a Saperly account through Composio, every action runs under that account, so anything the agent creates, sends, or changes shows up in Saperly as done by you. Keep an approval step in your prompt for actions with side effects, such as sending or deleting, and have the agent draft first.

Whatever the credentials you connect allow inside Saperly. If Saperly lets you scope a key to specific permissions, create a scoped one so the agent can only do what you intend. You can revoke the key inside Saperly at any time.

Yes. Composio supports multiple connected accounts for the same app, and that works in Claude, ChatGPT, or any other assistant you connect through Composio. Give each Saperly connection a name such as work or personal, and the assistant uses the one you mention in the request. Each account keeps its own credentials and nothing is merged.

The connection stops working the moment Saperly rejects the old key. Create a new key in Saperly and reconnect the account from the Composio dashboard or by asking your agent to reconnect Saperly. Nothing else changes.

Composio's free Hobby plan includes 100,000 tool calls per month with no credit card, which covers most personal Saperly use. Paid plans add higher limits and team features. Your Saperly plan and its API limits still apply as usual.

Built-in connectors usually give one AI access to a limited set of apps. Many people use Composio because it lets their AI connect to more apps than it normally supports, or connect to multiple accounts for the same app (e.g. connect Claude to multiple Saperly accounts).

With Composio, you connect Saperly once and then use it across different AI assistants without setting it up separately in each one. Connect your apps to Composio once, then connect Composio to whichever AI you use, whether that's Claude, ChatGPT, Hermes, or your own custom assistant.

Start with Saperly.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Saperly tool your agent needs.Free to start.

Start building