saperly-mcp.yml
Saperly operates a remote MCP server at https://api.saperly.com/mcp (Streamable HTTP, JSON-RPC 2.0) authenticated with a scoped sap_sk_ bearer key or an MCP OAuth 2.1 access token issued by https://saperly.com. Tools are discovered at connect time via tools/list and filtered per caller by scope. A local stdio server also ships as npx -y @saperly/mcp with a 32-tool manifest.
One-click install for Cursor, VS Code, Claude, and 20+ other MCP clients, powered by API Commons MCP Install — visit install.apicommons.org for more information.
Endpoint
Hosted endpoint · transport streamable-http
Connect
This is a remote MCP server — point an MCP client at the endpoint URL. Clients with native remote support (Claude, Cursor, VS Code, …):
For stdio-only clients (older Claude Desktop, etc.), bridge with mcp-remote:
If the server requires authentication, add the provider's token/header (e.g. an X-API-Key) per its docs. A quick reachability check:
Tools
saperly_create_line— provision a new phone line for your ai agent. returns the assigned phone number. mode: webhook (S2T+T2S via your HTTP webhook, bring your own AI), audio (raw websocket stream), or hosted (saperly runs the AI, requires systemPrompt).saperly_lines— list your phone lines, or get one line's full detail. pass `line` (a phone number or line id) for that line's details; omit it to list all lines.saperly_update_line— update a phone line's configuration. can change webhook urls, system prompt, voice, recording, and other settings.saperly_await_inbound_call— wait for a new inbound call to arrive on a line.saperly_calls— list recent calls, or get full detail for one. pass `callId` for a single call's details; omit it to list recent calls (optionally filtered by line or status).saperly_hangup— terminate an active call. irreversible.saperly_place_call— place an outbound phone call. blocking by default: it waits for the call to be answered (or declined / no-answer) and returns the outcome, so you won't place a second call while the first is still ringing. modes: 'scripted' (default — you drive: optionally speak `say` once answered and get the caller's first reply, then continue with saperly_say / saperly_press_digits / saperly_hangup), or 'ai' (Saperly runs the conversation from your `prompt` and returns the full transcript when the call ends — no backend needed). consent must be on file first (saperly_check_consent / saperly_record_outbound_consent). costs credits.saperly_press_digits— press DTMF keypad digits inside an active call (e.g. to navigate an IVR menu).saperly_say— on a live call, speak text and/or listen for the caller's next response. pass `text` to speak it (and, by default, return the caller's reply); omit `text` to just listen. returns interruption details if the caller talked over the agent.saperly_check_consent— check if consent exists for a phone number on a line.saperly_record_outbound_consent— record that outbound consent was obtained for a phone number (you are recording a fact, not granting permission). required before making outbound calls to that number.saperly_revoke_consent— revoke consent for a phone number. future outbound calls to this number will be blocked.saperly_create_disclosure— create a custom tcpa disclosure message played at the start of every call on lines using this disclosure.saperly_list_disclosures— list all tcpa disclosure configurations.saperly_get_balance— check your account balance in USD. calls cost $0.13/min in webhook mode or $0.26/min in hosted mode for Zone A (US/Canada). international destinations use Zone B (×2) or Zone C (×3) multipliers. phone numbers cost $2.50/month (first number free for 30 days). credits never expire.saperly_list_transactions— list recent billing transactions in USD: signup credit, postpaid charges, refunds, number fees, call/SMS charges. shows amount, type, and running balance (all dollars).saperly_account_overview— get a full snapshot of your saperly account: all lines, balance, usage, and 5 most recent calls. use this first to understand current state.saperly_webhook_deliveries— list recent webhook delivery attempts. shows status, duration, errors for each delivery.saperly_webhook_stats— get aggregate webhook delivery statistics.saperly_webhook_test— send a test webhook to a line's configured URL.saperly_conversations— list SMS conversations grouped by contact, or get the full message history with one contact. pass `phoneNumber` (with `line`) to fetch that conversation's messages; omit it to list conversations (optionally filtered by line).saperly_send_sms— send an outbound SMS. requires either an inbound SMS from the recipient within the last 24 hours, OR active explicit_outbound consent on file for that (line, recipient) pair (e.g. recorded via POST /v1/consent or a web-form opt-in).saperly_get_usage— get usage statistics. shows calls, minutes, SMS counts, and costs by day or month.saperly_get_settings— get your account settings. currently shows default webhook URL.saperly_update_settings— update account settings. set or clear the default webhook URL used for new lines.saperly_list_voices— list available TTS voices for hosted- and webhook-mode calls. use the voice slug when creating or updating a line.saperly_key_create— mint a new child api key. requires service-key auth (sk_svc_...). returns the plaintext key ONCE — save it immediately. permissions: full | call_only | sms_only | read_only.saperly_key_delete— soft-revoke a child api key. DESTRUCTIVE — the key stops working immediately (no grace window for child keys). requires confirm=true.saperly_key_get— retrieve a single child api key by id. metadata only — no plaintext. includes revoked keys (so you can see when a key was revoked).saperly_key_list— list child api keys minted by the service key bound to this mcp client. metadata only — no plaintext.saperly_key_rotate— atomic rotate: revoke the old child api key + mint a new one with the same permissions/scope/cap. returns the new plaintext key ONCE. DESTRUCTIVE — old key stops working. requires confirm=true.saperly_key_update— update a child api key's label, scope, permissions, or cap. partial update — only fields you pass are changed. pass null to clear agent_label / line_id / monthly_cap_cents.
About MCP
The Model Context Protocol (MCP) is an open protocol Anthropic introduced for connecting LLM-based agents to external tools and data sources. Providers publish MCP servers that expose their API surface as structured, discoverable tools — an MCP-compatible client (Claude Desktop, Cursor, Cline, Continue, etc.) can connect to the server and call its tools without any per-provider integration code.
Browse every MCP server on the APIs.io network or compare with the broader Agent Skill surfaces of the same providers.
Work with this as data
Every MCP server here is available over the APIs.io API and to AI agents over MCP.