---
name: fastsend
description: >
  Send SMS, email, WhatsApp, Telegram, and Signal (beta) messages from AI agents
  using Fastsend — a hosted pay-per-send messaging service built for autonomous
  agents. Use this skill when the user or agent needs to send a message, check
  delivery status, look up pricing, or verify a recipient.
version: "0.1.0"
homepage: https://fastsend.dev
mcp_endpoint: https://fastsend.dev/mcp
transport: streamable_http
---

# Fastsend Messaging Skill

You have access to Fastsend, a hosted messaging service for sending SMS, email, WhatsApp, Telegram, and Signal (beta) messages from AI agents.

MCP endpoint: https://fastsend.dev/mcp (Streamable HTTP)

## Onboarding

Set yourself up in four steps using read-only checks:

1. Check the client's existing MCP configuration, preserve other servers, and connect to https://fastsend.dev/mcp using the client's supported Streamable HTTP setup. If you cannot change the configuration, give the user exact manual steps.
2. After any required reload, list the available Fastsend tools. The hosted server currently exposes the five tools below.
3. Call `get_service_status` and `get_pricing` for email and SMS. SMS quotes need a destination country; ask for one if needed.
4. Report which checks succeeded, the quoted prices, and any payment setup needed before a future send. If the connection or checks fail, report what remains and do not claim readiness.

During setup you MUST NOT call `send_message`, `verify_recipient`, or `create_wallet`, and MUST NOT perform any paid or payment-related action. Only send messages, verify recipients, or create wallets when the user explicitly asks you to after setup is complete.

## Tools

### send_message
Submit a message on any supported channel to Fastsend for asynchronous delivery.

Parameters:
- `channel`: `"sms"`, `"email"`, `"whatsapp"`, `"telegram"`, or `"signal"`
- `recipient`: For sms/whatsapp/signal: `{ phoneNumber: "+1234567890" }` (E.164). For email: `{ email: "user@example.com", name?: "User Name" }`. For telegram: `{ chatId: "123456789" }` (numeric chat ID only)
- `content`: `{ text: "message body" }` for all channels (SMS max 149 chars). For email you may add `subject: "Subject Line"`
- `metadata` (optional): key-value pairs for your own tracking
- `paymentMethod` (optional): `"x402"` or `"mpp"` payment-method preference for paid sends
- `idempotencyKey` (optional): 24-hour key for safe retries of the same paid request

Channel prerequisites:
- `whatsapp`: delivered via Bird to a phone number; may be sent as an approved template. `sent` means handoff to WhatsApp, `delivered` means recipient delivery.
- `telegram`: recipient must have already started the Fastsend bot; status reflects relay acceptance only, not recipient delivery.
- `signal`: restricted beta — the recipient must be on the operator allowlist; status reflects relay acceptance only, not recipient delivery.

Returns a `messageId` you can use with `get_delivery_status`.

If payment is required (`status: "payment_required"`), the tool will return pricing information. Ask the user to confirm before proceeding with a paid send.

If first-time recipient verification is required, use `verify_recipient` with the returned `challengeId`.

### verify_recipient
Complete recipient verification after `send_message` returns `verification_required`. On success, the original pending message is automatically released for delivery.

Parameters:
- `challengeId`: the challenge ID from the `send_message` response
- `code`: the verification code the recipient received

### get_pricing
Look up per-send pricing for a channel and optional destination country.

Parameters:
- `channel` (optional): `"sms"`, `"email"`, `"whatsapp"`, `"telegram"`, or `"signal"`
- `country` (optional): ISO 3166-1 alpha-2 country code, e.g. `"US"`, `"GB"`, `"DE"` — applies to SMS only

### get_delivery_status
Fetch the latest delivery status and history for a previously submitted message.

Parameters:
- `messageId`: the message ID returned by `send_message`

Returns current status: `queued`, `sent`, `delivered`, `failed`, or `retrying`.

### get_service_status
Check whether the Fastsend gateway is healthy before sending.

No parameters required.

## Connecting a client

Point your MCP client at the hosted endpoint:

```json
{
  "mcpServers": {
    "fastsend": {
      "url": "https://fastsend.dev/mcp"
    }
  }
}
```

The exact field name varies by client (`url`, `serverUrl`, or a remote-server list) — check your client's docs for remote MCP servers. Works with Claude, Cursor, Windsurf, Codex CLI, and any MCP-compatible client.

For clients that only support local stdio servers, a `fastsend-mcp` binary exists in the Fastsend repository (`mcp/` workspace, run with `--stdio`); it is not published to npm, so prefer the hosted endpoint. The local build additionally exposes `create_wallet` and `get_wallet` for managing a local EVM wallet on Base — these are not available on the hosted endpoint.

## Payment model

Fastsend charges per message sent. Pricing is available via `get_pricing`. Sends may return a `402 Payment Required` response with machine-readable payment details that x402-aware clients resolve automatically.
