Developers · MCP

Run your email
from your AI assistant

The WorkOnward Reach MCP server connects Claude, ChatGPT, Codex, Cursor, VS Code and any other Model Context Protocol client to your workspace — 101 tools covering emails, campaigns, contacts, templates, analytics, domains, mailboxes, deliverability, developer settings and webhooks. Every send asks you to pick the sending domain and approve a preview first.

Server URL

https://send.gitdate.ink/api/mcp

Transport

Streamable HTTP

MCP 2025-11-25, compatible with 2025-06-18, 2025-03-26 and 2024-11-05 clients.

Authentication

Bearer rmcp_…

An MCP key from Settings → MCP, sent as the Authorization header.

Coverage

101 tools · 5 prompts

Every sidebar area: emails, campaigns, contacts, templates and more.

1

Create an MCP key

  1. Sign in and open Settings → MCP.
  2. Click Create MCP key, give it a name (e.g. “Claude Code on my laptop”), and choose:
    • Access — Full access, or Read-only (only tools that read data are exposed).
    • Toolsets — which areas the assistant can see (all by default).
    • Expiry — never, 30 days, 90 days or a year.
  3. Copy the key — it starts with rmcp_ and is shown only once. The dialog also gives you ready-to-paste configs for every client below.

A key acts as you, inside the workspace where it was created, and can never do more than your role allows. API keys (us_…) are for the REST API and don't work with MCP.

2

Connect your client

Pick your client. Replace rmcp_your_mcp_key with your key.

Claude Code

Anthropic's terminal and IDE coding agent. Connects to remote HTTP servers with headers and exposes MCP prompts as slash commands.

  1. Run the command below (use --scope user to make it available in every project).
  2. Start Claude Code and run /mcp — “reach” should show as connected.
  3. Ask: “Using Reach, show my verified sending domains.”

Terminal

claude mcp add --transport http --scope user reach https://send.gitdate.ink/api/mcp \
  --header "Authorization: Bearer rmcp_your_mcp_key"

Or commit a project .mcp.json (key read from your environment)

{
  "mcpServers": {
    "reach": {
      "type": "http",
      "url": "https://send.gitdate.ink/api/mcp",
      "headers": {
        "Authorization": "Bearer ${REACH_MCP_KEY}"
      }
    }
  }
}

With the .mcp.json option, export REACH_MCP_KEY=rmcp_your_mcp_key in your shell before starting Claude Code.

3

Try it

Just ask in plain language — the assistant picks the right tools:

  • “What does my Reach workspace look like? Anything left to set up?”
  • “Draft a thank-you email to jane@example.com for her order and send it after I approve.”
  • “Create a campaign for the Newsletter list announcing our new pricing page. Send me a test first.”
  • “Which campaigns had the highest bounce rate in the last 30 days?”
  • “Here's a CSV of 40 customers — email each of them our launch announcement from holly@mail.acme.com.”
  • “Create a product-update template with my signature and logo, then show me the preview.”
  • “Add these 15 people to the Beta Testers contact book: …”
  • “Is mail.acme.com set up correctly? Show me any DNS records that are missing.”
  • “Create a webhook to https://api.acme.com/hooks for bounces and complaints.”
  • “Rotate the production API key, and remind me to confirm it once deployed.”

How sending stays safe

Nothing is emailed without you. Every send is two steps, and you choose where it comes from:

1. Draft

draft_email writes the email (Markdown, HTML, text or a saved template). Nothing is sent.

2. Choose the sending domain

If you didn't name a sender, Reach asks you to pick one of your verified domains, the address before the @ and a sender name — and builds the complete address, e.g. Acme <hello@acme.com>.

3. Review the preview

You get the From/To/Subject summary, a plain-text view and a private link to the fully rendered email.

4. Confirm and send

send_email asks you to confirm one last time. A draft can only ever be sent once, and drafts expire after 24 hours.

Interactive prompts. When your client supports MCP elicitation, the domain picker and the final confirmation appear as native dialogs, so you approve sends yourself. In other clients the assistant shows the options and preview in the chat and may only send after you say yes.

Campaigns follow the same pattern: create_campaign asks which verified domain or connected mailbox to send from, check_campaign_readiness flags blocking issues (missing unsubscribe link, empty audience, unknown variables), send_campaign_test sends you a copy, and schedule_campaign shows the audience size and asks for confirmation before anything goes out. Markdown content stays editable in the visual editor, and an unsubscribe footer is added automatically when missing.

Lists of people. Share a CSV file or paste names and emails in the chat: create_campaign (recipientsCsv) or import_recipients puts them in a contact book — any column order, header row optional, extra columns become {{variables}} — skipping duplicates and invalid addresses and keeping earlier unsubscribes unsubscribed. Each person then gets their own email with their own unsubscribe link.

Templates. create_template asks for your email signature (with an example), an optional logo — resized to the right size and kept sharp on retina screens — the sending domain and full from address, and the reply-to address, then returns a private preview link. Every template includes a “Click here to Unsubscribe” link, and emails are left-aligned like a personal email (pass layout for a centred or wider design).

You:     Email jane@example.com a short thank-you for her order.
Claude:  → draft_email(to, subject, markdown)
Reach:   [prompt] Sending domain: acme.com ▾  Address: hello  Name: Acme
Claude:  Here's the preview — From: Acme <hello@acme.com> … (link). Send it?
Reach:   [prompt] Send this email?  ☑ Yes, send it
Claude:  → send_email(draftId)  ✓ queued · emailId cm3…

Tool reference (101 tools)

Tools are grouped into toolsets that match the dashboard sidebar. Badges show what a tool can do: ReadWriteSends emailDestructive

Workspace toolset: account

1 tools

Workspace overview, your role and permissions, setup progress.

  • get_workspace
    Workspace, your role and permissions, key access, enabled toolsets and setup progress.Read

Emails toolset: emails

7 tools

Draft, preview and send transactional email; inspect, cancel and reschedule sends.

  • get_sending_options
    Verified sending domains with suggested from-addresses, plus connected mailboxes.Read
  • draft_email
    Compose an email, choose the sending domain, and get a rendered preview. Never sends.Write
  • send_email
    Send or schedule a drafted email — only after you confirm the preview.Sends email
  • list_emails
    Search sent and scheduled emails by status, domain, mailbox or text.Read
  • get_email
    One email with its full delivery/engagement event timeline.Read
  • cancel_scheduled_email
    Cancel an email that is still scheduled.Write
  • reschedule_email
    Move a scheduled email to a new send time.Write

Campaigns toolset: campaigns

11 tools

Create, edit, test, schedule, pause, resume and analyse marketing campaigns.

  • list_campaigns
    Campaigns with status, schedule and delivery counts.Read
  • get_campaign
    Campaign details, stats, readiness, recent emails and optional content.Read
  • create_campaign
    Create a draft campaign from Markdown, HTML or a template — for a contact book or a CSV/pasted list of people — asking which sender to use.Write
  • update_campaign
    Edit a campaign's name, sender, subject, audience or content.Write
  • check_campaign_readiness
    Blocking issues, audience size and personalised recipient previews before sending.Read
  • send_campaign_test
    Send a test copy of a campaign to one address.Sends email
  • schedule_campaign
    Send now or schedule a campaign after a readiness check and your confirmation.Sends email
  • pause_campaign
    Pause a running or scheduled campaign.Write
  • resume_campaign
    Resume a paused campaign.Write
  • duplicate_campaign
    Copy a campaign into a new draft.Write
  • delete_campaign
    Permanently delete a campaign.Destructive

Templates toolset: templates

6 tools

Create, edit, duplicate and delete reusable email templates.

  • list_templates
    Saved email templates.Read
  • get_template
    A template's subject, default sender and reply-to, variables and optional HTML.Read
  • create_template
    Create a template from Markdown or HTML, asking for a signature, logo (auto-resized), sender and reply-to, then previewing it.Write
  • update_template
    Edit a template's name, subject, content, sender, reply-to, layout, signature or logo.Write
  • duplicate_template
    Copy a template.Write
  • delete_template
    Permanently delete a template.Destructive

Contacts toolset: contacts

24 tools

Contact books, contacts, people, subscriptions, segments, topics and exports.

  • list_contact_books
    Contact books (lists) with contact counts.Read
  • get_contact_book
    Contact book details: totals, unsubscribes, variables, double opt-in, campaigns.Read
  • create_contact_book
    Create a contact book with optional custom variables.Write
  • update_contact_book
    Rename, change variables or configure double opt-in.Write
  • delete_contact_book
    Delete a contact book (optionally with its contacts).Destructive
  • list_contacts
    Contacts in a book, filterable by text and subscription.Read
  • add_contacts
    Add or update up to 1,000 contacts in a book per call.Write
  • import_recipients
    Import people from a CSV file or a pasted list of names and emails into a contact book for a campaign.Write
  • update_contact
    Edit a contact's email, name, properties or subscription.Write
  • delete_contacts
    Delete contacts from a book.Destructive
  • resend_double_opt_in
    Resend the double opt-in confirmation to a pending contact.Sends email
  • search_people
    Search everyone in the workspace by text, segment, topic or status.Read
  • get_person
    A person's profile, lists, segments, topics and recent activity.Read
  • upsert_person
    Create or update a person by email.Write
  • update_subscription
    Subscribe or unsubscribe a person globally or for one topic.Write
  • delete_people
    Delete people from the workspace.Destructive
  • list_segments
    Static and dynamic segments with member counts.Read
  • preview_segment
    Who matches a saved segment or a set of filter rules.Read
  • save_segment
    Create a segment or edit its name, description and rules.Write
  • delete_segment
    Delete a segment (optionally with its contacts).Destructive
  • list_topics
    Subscription topics (preference-center categories).Read
  • save_topic
    Create a topic or rename / describe one.Write
  • delete_topic
    Delete a topic.Destructive
  • export_contacts
    Export people to CSV (filters supported).Read

Suppressions toolset: suppressions

4 tools

Search, check, add and remove suppressed addresses.

  • list_suppressions
    Suppressed addresses with reasons, plus totals by reason.Read
  • check_suppressions
    Check whether up to 100 addresses are suppressed.Read
  • add_suppressions
    Suppress up to 1,000 addresses so they are never emailed.Write
  • remove_suppressions
    Remove addresses from the suppression list.Write

Analytics toolset: analytics

4 tools

Delivery, engagement and reputation metrics, breakdowns and CSV reports.

  • get_analytics
    Sent, delivered, opened, clicked, bounced and complaint metrics with daily trend and reputation.Read
  • get_analytics_breakdown
    Metrics broken down by domain, campaign, template, API key, mailbox or provider.Read
  • export_report
    CSV reports: campaign report, email log, bounces & complaints, webhook deliveries.Read
  • get_export_status
    Status and download of a report or contact export.Read

Domains toolset: domains

8 tools

Add, verify, configure, test and delete sending domains and DNS records.

  • list_domains
    Sending domains, verification status and available regions.Read
  • get_domain
    A domain's DNS records (DKIM, SPF, MX, DMARC) and verification state.Read
  • add_domain
    Add a sending domain and get the DNS records to publish.Write
  • verify_domain
    Re-check DNS now and start verification.Write
  • update_domain
    Toggle open/click tracking or set a custom MAIL FROM subdomain.Write
  • delete_domain
    Remove a sending domain.Destructive
  • send_domain_test_email
    Send a test email from a verified domain to yourself.Sends email
  • manage_domain_reclaim
    Check availability and claim a domain that another workspace registered.Write

Mailboxes toolset: mailboxes

8 tools

Connected Gmail and SMTP mailboxes used to send campaigns: connect, test, default, usage.

  • list_mailboxes
    Connected Gmail/SMTP mailboxes with status and daily usage.Read
  • get_mailbox
    One mailbox's settings, limits and status.Read
  • connect_smtp_mailbox
    Connect an SMTP mailbox (credentials are verified and encrypted).Write
  • update_smtp_mailbox
    Change an SMTP mailbox's server, credentials or limits.Write
  • set_default_mailbox
    Make a mailbox the default campaign sender.Write
  • send_mailbox_test
    Send a test email through a mailbox to yourself.Sends email
  • reconnect_mailbox
    Get the link to connect or re-authorise a Gmail mailbox in the browser.Write
  • disconnect_mailbox
    Disconnect a mailbox.Destructive

Deliverability toolset: deliverability

4 tools

Domain health, SES quota, alerts and warm-up guidance for sending reputation.

  • get_deliverability_overview
    Health of every domain, SES quota pressure and open alerts.Read
  • get_domain_health
    DNS status, bounce/complaint rates, sending controls and history for one domain.Read
  • resolve_deliverability_alert
    Mark a deliverability alert as resolved.Write
  • get_warmup_guidance
    Recommended daily volumes to warm up a domain safely.Read

Developer settings toolset: developer

7 tools

API keys, rotation, API request logs, rate limits and SMTP.

  • list_api_keys
    API keys with scopes, domain access, status and last use.Read
  • create_api_key
    Create an API key with scopes and optional domain restriction.Write
  • update_api_key
    Rename an API key or change its scopes and domain access.Write
  • rotate_api_key
    Start a zero-downtime key rotation or confirm a pending one.Write
  • revoke_api_key
    Revoke an API key immediately.Destructive
  • list_api_logs
    Public API request logs and rate-limit settings.Read
  • get_smtp_settings
    SMTP relay host, ports and username for sending via SMTP.Read

Webhooks toolset: webhooks

9 tools

Webhook endpoints, delivery logs, tests, retries, replays and secrets.

  • list_webhooks
    Webhook endpoints with status, events and failure counts.Read
  • get_webhook
    One webhook endpoint's configuration.Read
  • create_webhook
    Create a webhook endpoint for chosen event types.Write
  • update_webhook
    Edit, pause, resume or rotate the secret of a webhook.Write
  • delete_webhook
    Delete a webhook endpoint.Destructive
  • test_webhook
    Send a sample event to a webhook endpoint.Write
  • list_webhook_deliveries
    Webhook delivery attempts filterable by status, event and time.Read
  • get_webhook_delivery
    One delivery's payload, response and error.Read
  • redeliver_webhook
    Retry a failed delivery or replay any delivery.Write

Settings toolset: settings

8 tools

Team members and invites, usage, and workspace SES configuration.

  • list_team
    Team members, roles and pending invites.Read
  • invite_team_member
    Invite someone to the workspace with a role.Write
  • update_team_member_role
    Change a member's role.Write
  • remove_team_member
    Remove a member from the workspace.Destructive
  • manage_team_invite
    Resend or revoke a pending invite.Write
  • get_usage
    This month's email usage by day and type.Read
  • list_ses_settings
    Workspace AWS SES regions, status, callbacks and send rate.Read
  • manage_ses_settings
    Test, add, update, disable or remove a workspace AWS SES configuration.Destructive

Prompts

The server also publishes ready-made workflows. In Claude Code they appear as slash commands such as /mcp__reach__send-email; other clients list them in their prompt or attachment menu.

  • send-emailWrite an email, choose the domain, preview and send after approval.
  • create-campaignPlan, build, test and schedule a campaign with a final confirmation.
  • create-templateWrite a template, add your signature, logo, sender and reply-to, and preview it.
  • campaign-from-listEmail everyone in a CSV or pasted list — each person gets their own email.
  • deliverability-checkupAudit domains, DNS, bounce/complaint rates, quota and alerts.
  • performance-reportSummarise volume, delivery and engagement with recommendations.
  • setup-domainAdd a domain, list the DNS records to publish, and verify it.

Toolsets & access control

  • Your role is the ceiling. A Marketer's key sees campaign, contact and template tools but not API keys; a Viewer's key is read-only by nature. Tools your role can't use are hidden.
  • Read-only keys expose only tools marked Read — nothing can be created, changed, sent or deleted.
  • Toolsets per key limit which areas the assistant sees. You can also narrow a single connection with a query parameter or header:
# Only email + campaign tools for this connection
https://send.gitdate.ink/api/mcp?toolsets=emails,campaigns

# …or as a header
X-Reach-Toolsets: emails,campaigns,contacts

# Available toolsets
account, emails, campaigns, templates, contacts, suppressions, analytics, domains, mailboxes, deliverability, developer, webhooks, settings

Workspace owners and admins see every member's MCP keys in Settings → MCP and can revoke any of them. Removing someone from the workspace disables their keys immediately.

Security & limits

  • Keys are random 160-bit secrets. Only a hash is stored, so a key can't be shown again — revoke and create a new one if it's lost.
  • Prefer the Authorization header. The connector URL (https://send.gitdate.ink/api/mcp/<key>) exists for clients that only accept a URL; treat it like a password.
  • Each key is limited to 300 requests per minute. Sending still follows your workspace's SES limits and suppression list.
  • Preview links use unguessable ids, are never indexed, and expire after 24 hours.
  • Ownership transfer and MCP key management are dashboard-only by design.

Troubleshooting

401 “Invalid MCP key” or the client asks you to sign in
The client isn't sending a valid key. Check it starts with rmcp_ (not us_), hasn't been revoked or expired, and that the header is exactly Authorization: Bearer <key>. For URL-only clients use the connector URL.
“The member who created this MCP key is no longer part of the workspace”
Keys belong to the member who made them. Create a new key while signed in as a current member.
Some tools are missing
The key may be read-only, limited to certain toolsets, or your role may not allow those tools. Some clients also cap the total number of tools — create a key with fewer toolsets.
“needs_sender_selection” keeps coming back
Your workspace has no verified domain yet, or the assistant hasn't passed the domain you chose. Verify a domain under Domains (or ask the assistant to run add_domain and verify_domain).
The connection drops after a long idle period
Reconnect from your client (in Claude Code run /mcp → reconnect). Sessions recover automatically in most clients.

Quick check from a terminal:

curl -s https://send.gitdate.ink/api/mcp \
  -H "Authorization: Bearer rmcp_your_mcp_key" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Next steps