Ranla MCP server

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

Package: ranla-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 ranla-mcp Env RANLA_API_KEY=rnl_…
HTTP (local) npx -y ranla-mcp --http --port 3000 Authorization: Bearer rnl_… per request
HTTP (hosted) https://mcp.ranla.ai/mcp OAuth (recommended) or Authorization: Bearer rnl_…

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.ranla.ai/mcp (no headers block).
  2. The client discovers OAuth via WWW-Authenticate + /.well-known/oauth-protected-resource.
  3. Sign in on app.ranla.ai, approve access, and the client receives tokens.

Authorization server metadata: https://app.ranla.ai/.well-known/oauth-authorization-server

Bearer rnl_… 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": {
    "@supersend/ranla": {
      "command": "npx",
      "args": ["-y", "ranla-mcp"],
      "env": {
        "RANLA_API_KEY": "rnl_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 ranla-mcp --http --port 3000

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

{
  "mcpServers": {
    "@supersend/ranla": {
      "url": "http://127.0.0.1:3000/mcp",
      "headers": {
        "Authorization": "Bearer rnl_your_key_here"
      }
    }
  }
}

Replit (hosted remote)

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

Install Ranla

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": {
    "@supersend/ranla": {
      "url": "https://mcp.ranla.ai/mcp"
    }
  }
}

Cursor runs the browser OAuth flow on first connect.

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

{
  "mcpServers": {
    "@supersend/ranla": {
      "url": "https://mcp.ranla.ai/mcp",
      "headers": {
        "Authorization": "Bearer rnl_your_key_here"
      }
    }
  }
}

Health check: GET https://mcp.ranla.ai/health


Claude Code

# stdio
claude mcp add --transport stdio supersendtx -- npx -y ranla-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.ranla.ai/mcp

Export RANLA_API_KEY=rnl_… 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 ranla-mcp
npx -y ranla-mcp --http --port 3000
npx -y ranla-mcp
# or
npm install -g ranla-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.