This documentation URL will be retired soon. Start using the Ranla API at https://api.ranla.ai. Docs: docs.ranla.ai.

SuperSend TX MCP server

Expose SuperSend TX to Cursor, Claude Code, or any MCP client with a curated tool surface.

Package: supersendtx-mcp on npm
Version: 0.6.0

Docs index for agents: llms.txt · Agent Skills · Agent skill notes

For Ranla branding, use ranla-mcp (npx ranla-mcp) with RANLA_API_KEY=rnl_…. Arc tools call the app host (app.ranla.ai); mail tools call api.ranla.ai.


Transports

Mode How to run Auth
stdio (default) npx -y supersendtx-mcp Env SUPERSENDTX_API_KEY=stx_…
HTTP (local) npx -y supersendtx-mcp --http --port 3000 Authorization: Bearer stx_… per request
HTTP (hosted) https://mcp.supersendtx.com/mcp OAuth (recommended) or Authorization: Bearer stx_…

Local HTTP listens on http://127.0.0.1:3000/mcp by default (--host / --port override). GET /health is unauthenticated (local and hosted).

Remote MCP clients (Cursor, Claude Code) can connect without pasting an API key:

  1. Add the hosted URL only — https://mcp.supersendtx.com/mcp (no headers block).
  2. The client discovers OAuth via WWW-Authenticate + /.well-known/oauth-protected-resource.
  3. Sign in on app.supersendtx.com, approve access, and the client receives tokens.

Authorization server metadata: https://app.supersendtx.com/.well-known/oauth-authorization-server

Bearer stx_… still works for scripts, CI, and advanced setups.


Install in Cursor (stdio)

  1. Create an API key in the dashboard (or use Get started → Copy setup prompt / Install in Cursor).
  2. Add to .cursor/mcp.json (or global ~/.cursor/mcp.json):
{
  "mcpServers": {
    "supersendtx": {
      "command": "npx",
      "args": ["-y", "supersendtx-mcp"],
      "env": {
        "SUPERSENDTX_API_KEY": "stx_your_key_here"
      }
    }
  }
}
  1. Restart Cursor. The tools appear in Agent chat.

Optional: set SUPERSENDTX_API_URL when pointing at a local app (http://localhost:3003/api).

The dashboard Install in Cursor button generates a deeplink with your key pre-filled.

Cursor (HTTP)

Terminal:

npx -y supersendtx-mcp --http --port 3000

.cursor/mcp.json (URL + Bearer; exact shape depends on Cursor version):

{
  "mcpServers": {
    "supersendtx": {
      "url": "http://127.0.0.1:3000/mcp",
      "headers": {
        "Authorization": "Bearer stx_your_key_here"
      }
    }
  }
}

Replit (hosted remote)

One-click install of the hosted server (OAuth — no API key in the link):

Install SuperSend TX

App-side sends in a Replit project still use Secrets + code — see Replit builder guide.

Cursor (hosted remote)

OAuth (recommended): no local process, no API key in config.

{
  "mcpServers": {
    "supersendtx": {
      "url": "https://mcp.supersendtx.com/mcp"
    }
  }
}

Cursor runs the browser OAuth flow on first connect.

Bearer (advanced): dashboard Copy hosted MCP JSON pre-fills your key.

{
  "mcpServers": {
    "supersendtx": {
      "url": "https://mcp.supersendtx.com/mcp",
      "headers": {
        "Authorization": "Bearer stx_your_key_here"
      }
    }
  }
}

Health check: GET https://mcp.supersendtx.com/health


Claude Code

# stdio
claude mcp add --transport stdio supersendtx -- npx -y supersendtx-mcp

# HTTP (local — start --http server first)
claude mcp add --transport http supersendtx http://127.0.0.1:3000/mcp

# HTTP (hosted)
claude mcp add --transport http supersendtx https://mcp.supersendtx.com/mcp

Export SUPERSENDTX_API_KEY=stx_… for stdio. For HTTP (local or hosted), configure Bearer headers in the client.


Tools

All tools call the supersendtx SDK (no duplicate HTTP).

Tool Purpose
send_email POST /emails
list_emails / get_email List or fetch sends
list_domains / create_domain Domain inventory
apply_domain_dns / verify_domain DNS apply + verify
list_webhooks / create_webhook / delete_webhook Webhook endpoints
list_suppressions / add_suppression / remove_suppression Suppression list
list_templates / get_template Templates by id or alias
send_test_webhook_event POST /emails/test (CI / webhook sink)
get_deliverability Best-effort metrics (7d / 30d)

Arc (growth agent)

Talk to Arc from Claude / Cursor without opening the dashboard. Mutations go through Arc; read tools are talk-mode only.

Tool Purpose
arc_ensure_thread / arc_list_threads Durable MCP thread
arc_message Send text to Arc; waits for the turn (sync JSON)
arc_list_approvals / arc_approve / arc_reject HITL without the UI
arc_<tool> Read-only growth tools (audience, campaigns list, health, …)
arc_request_connection Connect-card for a missing integration slot

Example flow: arc_ensure_threadarc_message (“draft a re-activation campaign”) → if gated, arc_list_approvalsarc_approve.

Set SUPERSENDTX_APP_URL (or RANLA_APP_URL) when the app host is not the default. Do not point Arc at the transactional API host.

send_email

Inputs: from, to, subject, optional html / text / reply_to.

Sandbox: if from is [email protected], recipients must match the account email.

send_test_webhook_event

Inputs:

  • event (required) — e.g. email.bounced, email.delivered
  • optional email_id (msg_…)
  • optional deliver (default true) — enqueue to subscribed webhooks

Install

npx -y supersendtx-mcp
npx -y supersendtx-mcp --http --port 3000
npx -y ranla-mcp
# or
npm install -g supersendtx-mcp

For agents without MCP, use the dashboard Copy setup prompt flow, Agent Skills, or agent-skill.md with llms.txt.

The package is also listed on Smithery for agent discovery.

Common questions

What does Ranla MCP do?

It connects Cursor, Claude, and other MCP clients to Ranla for growth work and mail tools. Mutations still go through Ranla so approvals stay in the loop.

Do I paste an API key for hosted MCP?

Hosted MCP can use OAuth so the client signs in without pasting a key. Local stdio setups use RANLA_API_KEY or the SuperSend TX key equivalents.