otherapi_key

Saperly

Saperly is the phone carrier for AI agents — phone numbers, voice, SMS, and compliance in one API.

Verdict

Saperly gives your team AI-powered phone agents that answer calls and SMS on real numbers. @mention it to create a connection (the AI persona that picks up), bind it to a phone number, place outbound calls, check TCPA consent, and pull transcripts or recordings. Marketing and support teams use it to automate qualification calls, appointment reminders, and follow-ups without hiring a call center. The setup requires an API key from your Saperly dashboard; you'll need active phone numbers in your account to bind connections, and transcripts only appear after calls finish processing.

Common use cases

  • Automate appointment reminder calls at scale
  • Qualify inbound leads before routing to sales
  • Send SMS follow-ups after support tickets close
  • Check TCPA consent before dialing prospects
  • Transcribe customer calls for QA review

Integration

Vendor
Saperly
Category
other
Auth
API_KEY
Tools
30
Composio slug
saperly

Tools

  • 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. A number without a bound

  • 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.164 number) as query params. Returns {hasConsent: boolean} and, when hasConsent is true,

  • Create Connection

    Create a connection: the AI 'brain' that answers calls and (optionally) SMS on a Saperly phone number. A phone number binds to a connection via SAPERLY_ASSIGN_NUMBER_CONNECTION in order to answer calls. Only `name` is required. mode 'hosted

  • Delete Connection
    destructive

    PERMANENTLY AND IRREVERSIBLY delete a connection (the AI answering brain / persona that handles calls and SMS) by its id. THIS CANNOT BE UNDONE — there is no restore. WARNING: any phone number currently bound to this connection will immedia

  • End Call

    End an in-progress call by its id, hanging up and settling the metered cost. This is the safe, cheap, RECOMMENDED companion to SAPERLY_PLACE_CALL: placing a call starts per-minute billing, and this tool is how an agent stops that meter — ca

  • 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. costCents and durationSec are NULL until the call settles (in progress / no

  • Get Call Recording

    Get the audio recording for a call and return it as a downloadable file. The API answers with a 302 redirect to a signed download URL when a recording exists; the recording is fetched and returned as a file reference (under `content`). A re

  • Get Call Transcript

    Fetch the transcript (conversation turns/segments) of a completed call by its id. Transcripts only exist AFTER a call connects, ends, and is processed. The endpoint uses the same 404 for an unknown call and a valid call whose transcript is

  • 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 manu

  • Get Phone Number

    Fetch a single phone number by its id, returning its E.164 phoneNumber, bound connectionId, webhookUrl, country, numberType, pricing and lifecycle fields. Use after SAPERLY_LIST_NUMBERS to inspect one number's current configuration. Free, r

  • Get Usage & Balance

    Return the workspace usage summary and prepaid balance: calls {count, totalCostCents, totalDurationSec}, messages {count}, and balanceCents (the prepaid balance, in cents). ALWAYS call this before any paid action to check balanceCents: SAPE

  • List Calls

    Return the full voice-call history (inbound + outbound) for the connected Saperly workspace. Each call carries its id, numberId, direction, to and from_number (E.164), status, rateCentsPerMin, durationSec, costCents, hasRecording and hasTra

  • List Connections

    Return every connection (the AI persona / answering 'brain' that handles calls and SMS) in the connected Saperly workspace. Each carries id, name, mode (hosted|manual), backend, instructions, llm, tts voice, language, mcpServers, callContro

  • 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.164 number), consentType (explicit_outbound or implied_inbound

  • List Languages

    Return the spoken languages Saperly supports for voice connections, each as a {code, name} pair (about 42 entries, e.g. {'code':'en','name':'English'}). A language `code` is what you pass as a connection's `language` field, and as the `lang

  • List Messages

    Return SMS messages in the connected Saperly workspace (both inbound and outbound). Each message has id, numberId, direction, to, from_number, body, segments, status and createdAt. Pass `numberId` to filter to a single phone number's messag

  • List Phone Numbers

    Return every phone number provisioned in the connected Saperly workspace, with each number's id, phoneNumber (E.164), the connectionId (answering brain) bound to it, webhookUrl, country, numberType, monthlyPriceCents and lifecycle timestamp

  • List Voices

    List the text-to-speech voices available for Saperly connections. Each voice has an id, name, gender and language; a voice id is what you pass as tts.voiceId when creating or updating a connection (SAPERLY_CREATE_CONNECTION / SAPERLY_UPDATE

  • 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. Calls FROM a Saperly number (`fromNumberId` from SA

  • Provision Phone Number

    PAID / METERED: provision (buy) a new phone number in a country. This SPENDS MONEY — it charges the workspace prepaid balance an upfront fee plus a RECURRING MONTHLY rent (US local ~ $1.79/mo, varies by country/type). Before calling this: (

  • Quote Number Price

    READ-ONLY and FREE: quote the price to provision a phone number in a country/type, returning { customerMonthlyCents, customerUpfrontCents }. This DOES NOT provision, reserve, or charge anything — despite the name it has NO side effects. Thi

  • Record Consent

    Record TCPA consent for a contact so outbound SMS (SAPERLY_SEND_SMS) and calls (SAPERLY_PLACE_CALL) from your number are permitted. Saperly's compliance gate: for a cold contact call this BEFORE sending; confirm with SAPERLY_CHECK_CONSENT,

  • Release Phone Number

    PERMANENTLY AND IRREVERSIBLY release a phone number back to the carrier. THIS CANNOT BE UNDONE: the number leaves the workspace, is returned to the carrier pool, and CANNOT be recovered or reclaimed. Inbound calls and SMS to it STOP IMMEDIA

  • Revoke Consent
    destructive

    Revoke a contact's TCPA consent for a given Saperly number, blocking further outbound contact to them. CALL THIS WHEN A RECIPIENT SAYS 'STOP' / 'UNSUBSCRIBE' / 'do not contact me' — honoring an opt-out is a legal compliance obligation, and

  • Send SMS

    PAID / METERED: send a single SMS from one of your Saperly numbers to an E.164 destination. This SPENDS REAL MONEY and sends a REAL text message to a REAL phone (~2 cents per 160-character segment; a long body is split into multiple segment

  • 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. callerIdName is required — supply a name to set

  • Set Number SMS Sender ID

    Set the alphanumeric SMS sender id (1-11 alphanumeric chars, e.g. a brand name) shown as the 'from' on outbound SMS from this number, or pass smsSenderId=null to CLEAR it. Returns the updated number object. NOTE: sender-id support and displ

  • Set Number Webhook

    Set the HTTPS webhook URL that Saperly POSTs this number's events (inbound SMS/calls, status) to. The url is required and must be https://. Returns the updated number object. NOTE: this endpoint has no way to clear the URL back to null — on

  • Transfer Call

    PAID / METERED — BLIND-transfers a LIVE, in-progress voice call to another destination `to` (an E.164 number like +15551230000, or a `sip:` URI). BLIND means the call is handed off UNCONDITIONALLY: there is NO confirmation from the transfer

  • Update Connection

    Partially update a connection (the AI answering brain bound to a number). Send only the fields you want to change (name, mode, instructions, llm, tts, language, mcpServers, callControl, complianceEnabled, smsAutoReply, disclosure, manualWeb

Setup

Setup guide

  1. 11. Log into your Saperly dashboard and navigate to Settings → API Keys to generate a new key. 2. In Switchy, open your workspace settings and click Integrations, then find Saperly in the list. 3. Paste your API key into the authentication field and click Connect. 4. Switchy will verify the key by fetching your account details; if successful, the integration tile turns green. 5. Inside any Project, type '@Saperly create a connection' followed by instructions for the AI persona (voice, script, behavior). 6. Once the connection exists, bind it to one of your Saperly phone numbers using '@Saperly bind connection to number' with the connection ID and number ID. 7. Test by asking '@Saperly place a call' to a test number, then '@Saperly end call' to hang up and stop billing. 8. Pull the transcript with '@Saperly get call transcript' using the call ID to confirm the integration works end-to-end.

What teammates see: by default, memories from Saperly are scoped to the Project (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.

Works well with

Top models

Compatibility data appears once enough Projects have used this MCP together with a given model.

How Switchy teams use it

Not enough Projects yet to publish anonymised usage stats (we require ≥ 50 Projects per week).

Starter prompts

Create Outbound Qualifier

@Saperly create a connection named 'Lead Qualifier' that asks callers their company size, current CRM, and timeline for purchase, then thanks them and hangs up.

Bind Connection to Line

@Saperly bind connection ID conn_abc123 to number ID num_xyz789 so the 'Support Triage' persona answers calls on our main support line.

Place and End Test Call

@Saperly place a call from number ID num_xyz789 to +15551234567 using connection conn_abc123, wait 15 seconds, then end the call to test our new qualifier script.

Pull Call Transcript

@Saperly get the transcript for call ID call_def456 and summarize the key objections the prospect raised during the qualification call.

Example outputs

Illustrative - representative of the model's voice and quality, not literal recordings.

Prompt

@saperly check if we have consent to call +14155551234 from our main support line

Output

I checked consent status for +14155551234 against your Saperly number. The contact currently has active TCPA consent, recorded on March 12, 2024. This means you can place outbound calls and send SMS to this number without additional opt-in. Consent remains valid until the contact explicitly revokes it or your compliance window expires per your account settings.

Notes

This example shows Saperly's compliance-first design: every outbound interaction requires checking consent status first. The MCP needs your Saperly number ID (numberId) and the contact's E.164 number (peerNumber) as parameters. Always verify consent before placing calls to avoid TCPA violations.

Prompt

@saperly place a call from our sales line to +14155559876 using the 'product demo' connection, and end it after 3 minutes

Output

I placed the call using your 'product demo' connection. Call ID: call_abc123xyz. The AI persona is now live on the line with +14155559876, following the script and behavior rules you configured in that connection. Per-minute billing started at $0.08/min. I'll monitor the call and automatically end it at the 3-minute mark to cap cost at approximately $0.24, then fetch the transcript and recording for your review.

Notes

This demonstrates Saperly's core workflow: creating AI-driven phone calls. The MCP starts metered billing when the call connects, so pairing PLACE_CALL with END_CALL (or a timeout) is critical to control cost. You must have a connection created and bound to the originating number before placing calls. Side-effect: real phone call placed to a real number.

Prompt

@saperly pull the transcript from yesterday's support calls and summarize the top three customer complaints

Output

I retrieved transcripts from 14 support calls completed yesterday. After analyzing the conversation turns, the top three complaints were: (1) long hold times before AI pickup (mentioned in 8 calls), (2) the AI not recognizing account numbers with dashes (5 calls), and (3) confusion about billing cycles when the AI explained renewal dates (4 calls). The hold-time issue appears to stem from your connection's greeting delay setting; the account-number parsing may need a regex update in your connection prompt.

Notes

This synthesis example pairs Saperly's GET_CALL_TRANSCRIPT tool with the AI's reasoning to surface patterns across multiple calls. Transcripts only exist after calls end and are processed (usually 30–60 seconds post-call). If you have high call volume, consider filtering by date range and connection ID to avoid token-heavy responses.

Use-case deep-dives

Outbound sales follow-up at scale

When Saperly wins for high-volume cold calling

A 6-person sales team needs to place 200+ follow-up calls per week to inbound leads who filled a form but didn't book. Saperly is the right call here: you create one connection (the AI persona that handles objections and books meetings), bind it to a dedicated number, and fire SAPERLY_PLACE_CALL in a loop. Each call meters by the minute, so you pay only for connected time—and SAPERLY_END_CALL lets you cap runaway conversations. The transcript endpoint gives your reps a written summary to review before the human handoff. The threshold: if your team needs real-time call coaching or complex CRM two-way sync during the call, Saperly's 30-tool surface won't cover it—you'll want a deeper telephony platform. But for scripted outreach where the AI qualifies and the human closes, this is the fastest path from API key to dialing.

Customer support after-hours triage

When Saperly handles the night shift

A 3-person support team at a SaaS company gets 15-20 inbound calls per night, mostly password resets and billing questions that don't justify on-call pay. Saperly solves this: bind a connection to your support number, configure the AI persona with your knowledge base (via the connection's prompt), and let it answer. The SAPERLY_CHECK_CONSENT tool ensures you're TCPA-compliant if you ever need to call back. Transcripts land in your workspace the next morning, so the team triages which calls need human follow-up. The trade-off: Saperly doesn't integrate directly with your ticketing system, so you'll still copy-paste transcript summaries into Zendesk or Linear. If your support flow requires live ticket creation during the call, you'll need a custom webhook layer. But for pure triage—where the AI deflects 70% and escalates 30%—this cuts your after-hours cost in half.

Appointment reminder and confirmation

When Saperly automates the confirmation call

A dental practice with 4 front-desk staff spends 90 minutes daily calling patients to confirm next-day appointments. Saperly is borderline here but often wins: you create a connection that asks 'Can you confirm your 2pm appointment tomorrow?', then loop through your schedule and place outbound calls via SAPERLY_PLACE_CALL. The AI logs yes/no/reschedule in the transcript, and your staff reviews the batch in 10 minutes instead of 90. The consent-check tool keeps you compliant if a patient opted out. The boundary: if your practice management system can't export tomorrow's schedule as a CSV or API feed, the manual setup overhead kills the ROI. And if you need the AI to actually reschedule (not just flag it), you'll need a custom tool that writes back to your calendar—Saperly's 30 tools don't include that out of the box. But for pure confirmation at 50+ appointments per week, this pays for itself in month one.

Frequently asked

What does the Saperly MCP let me do in Switchy?

It lets your team create AI phone agents, bind them to real phone numbers, place and receive calls, check TCPA consent, and retrieve call recordings and transcripts. You control the entire lifecycle — from spinning up a connection (the AI brain that answers) to ending a call and pulling the final cost and transcript. Think of it as programmatic voice AI without leaving your workspace.

Do I need a Saperly account to use this MCP?

Yes. The MCP authenticates with an API key from your Saperly account, so you must sign up at Saperly and generate a key before connecting. Without it, Switchy can't create connections, bind numbers, or place calls on your behalf. The key lives in Switchy's credential store; your team never sees it in plaintext.

Can the MCP send SMS or only handle voice calls?

It handles both inbound and outbound voice calls and SMS, but the MCP's 30 tools focus heavily on call lifecycle — placing, ending, fetching recordings and transcripts. SMS consent checking is exposed (via the Check Consent tool), but there's no dedicated "send SMS" tool in the current set. If you need outbound SMS orchestration, you'll likely script it through Saperly's API directly.

How is this different from calling Saperly's API myself?

The MCP wraps Saperly's REST API so your AI agents can invoke it conversationally — no curl commands or SDK boilerplate. You describe what you want ("create a connection for support calls"), and the agent picks the right tool and parameters. If you're already comfortable with API scripts, the MCP just saves you from writing glue code every time a new use case appears.

Who on my team should connect the Saperly MCP?

Whoever owns your Saperly account and has the API key. That's typically an ops lead or the person who provisions phone numbers and manages TCPA compliance. Once connected in Switchy, any team member with workspace access can ask the AI to place calls or fetch transcripts — but only the key holder can rotate credentials or add new numbers in Saperly itself.

More other MCPs

See all other MCPs →

Data last verified 61 hours ago.Sources aggregated hourly to weekly. See docs/architecture/model-directory.md.