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.
Create an MCP key
- Sign in and open Settings → MCP.
- 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.
- 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.
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.
- Run the command below (use --scope user to make it available in every project).
- Start Claude Code and run /mcp — “reach” should show as connected.
- 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.
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 toolsWorkspace overview, your role and permissions, setup progress.
get_workspaceWorkspace, your role and permissions, key access, enabled toolsets and setup progress.Read
Emails toolset: emails
7 toolsDraft, preview and send transactional email; inspect, cancel and reschedule sends.
get_sending_optionsVerified sending domains with suggested from-addresses, plus connected mailboxes.Readdraft_emailCompose an email, choose the sending domain, and get a rendered preview. Never sends.Writesend_emailSend or schedule a drafted email — only after you confirm the preview.Sends emaillist_emailsSearch sent and scheduled emails by status, domain, mailbox or text.Readget_emailOne email with its full delivery/engagement event timeline.Readcancel_scheduled_emailCancel an email that is still scheduled.Writereschedule_emailMove a scheduled email to a new send time.Write
Campaigns toolset: campaigns
11 toolsCreate, edit, test, schedule, pause, resume and analyse marketing campaigns.
list_campaignsCampaigns with status, schedule and delivery counts.Readget_campaignCampaign details, stats, readiness, recent emails and optional content.Readcreate_campaignCreate 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.Writeupdate_campaignEdit a campaign's name, sender, subject, audience or content.Writecheck_campaign_readinessBlocking issues, audience size and personalised recipient previews before sending.Readsend_campaign_testSend a test copy of a campaign to one address.Sends emailschedule_campaignSend now or schedule a campaign after a readiness check and your confirmation.Sends emailpause_campaignPause a running or scheduled campaign.Writeresume_campaignResume a paused campaign.Writeduplicate_campaignCopy a campaign into a new draft.Writedelete_campaignPermanently delete a campaign.Destructive
Templates toolset: templates
6 toolsCreate, edit, duplicate and delete reusable email templates.
list_templatesSaved email templates.Readget_templateA template's subject, default sender and reply-to, variables and optional HTML.Readcreate_templateCreate a template from Markdown or HTML, asking for a signature, logo (auto-resized), sender and reply-to, then previewing it.Writeupdate_templateEdit a template's name, subject, content, sender, reply-to, layout, signature or logo.Writeduplicate_templateCopy a template.Writedelete_templatePermanently delete a template.Destructive
Contacts toolset: contacts
24 toolsContact books, contacts, people, subscriptions, segments, topics and exports.
list_contact_booksContact books (lists) with contact counts.Readget_contact_bookContact book details: totals, unsubscribes, variables, double opt-in, campaigns.Readcreate_contact_bookCreate a contact book with optional custom variables.Writeupdate_contact_bookRename, change variables or configure double opt-in.Writedelete_contact_bookDelete a contact book (optionally with its contacts).Destructivelist_contactsContacts in a book, filterable by text and subscription.Readadd_contactsAdd or update up to 1,000 contacts in a book per call.Writeimport_recipientsImport people from a CSV file or a pasted list of names and emails into a contact book for a campaign.Writeupdate_contactEdit a contact's email, name, properties or subscription.Writedelete_contactsDelete contacts from a book.Destructiveresend_double_opt_inResend the double opt-in confirmation to a pending contact.Sends emailsearch_peopleSearch everyone in the workspace by text, segment, topic or status.Readget_personA person's profile, lists, segments, topics and recent activity.Readupsert_personCreate or update a person by email.Writeupdate_subscriptionSubscribe or unsubscribe a person globally or for one topic.Writedelete_peopleDelete people from the workspace.Destructivelist_segmentsStatic and dynamic segments with member counts.Readpreview_segmentWho matches a saved segment or a set of filter rules.Readsave_segmentCreate a segment or edit its name, description and rules.Writedelete_segmentDelete a segment (optionally with its contacts).Destructivelist_topicsSubscription topics (preference-center categories).Readsave_topicCreate a topic or rename / describe one.Writedelete_topicDelete a topic.Destructiveexport_contactsExport people to CSV (filters supported).Read
Suppressions toolset: suppressions
4 toolsSearch, check, add and remove suppressed addresses.
list_suppressionsSuppressed addresses with reasons, plus totals by reason.Readcheck_suppressionsCheck whether up to 100 addresses are suppressed.Readadd_suppressionsSuppress up to 1,000 addresses so they are never emailed.Writeremove_suppressionsRemove addresses from the suppression list.Write
Analytics toolset: analytics
4 toolsDelivery, engagement and reputation metrics, breakdowns and CSV reports.
get_analyticsSent, delivered, opened, clicked, bounced and complaint metrics with daily trend and reputation.Readget_analytics_breakdownMetrics broken down by domain, campaign, template, API key, mailbox or provider.Readexport_reportCSV reports: campaign report, email log, bounces & complaints, webhook deliveries.Readget_export_statusStatus and download of a report or contact export.Read
Domains toolset: domains
8 toolsAdd, verify, configure, test and delete sending domains and DNS records.
list_domainsSending domains, verification status and available regions.Readget_domainA domain's DNS records (DKIM, SPF, MX, DMARC) and verification state.Readadd_domainAdd a sending domain and get the DNS records to publish.Writeverify_domainRe-check DNS now and start verification.Writeupdate_domainToggle open/click tracking or set a custom MAIL FROM subdomain.Writedelete_domainRemove a sending domain.Destructivesend_domain_test_emailSend a test email from a verified domain to yourself.Sends emailmanage_domain_reclaimCheck availability and claim a domain that another workspace registered.Write
Mailboxes toolset: mailboxes
8 toolsConnected Gmail and SMTP mailboxes used to send campaigns: connect, test, default, usage.
list_mailboxesConnected Gmail/SMTP mailboxes with status and daily usage.Readget_mailboxOne mailbox's settings, limits and status.Readconnect_smtp_mailboxConnect an SMTP mailbox (credentials are verified and encrypted).Writeupdate_smtp_mailboxChange an SMTP mailbox's server, credentials or limits.Writeset_default_mailboxMake a mailbox the default campaign sender.Writesend_mailbox_testSend a test email through a mailbox to yourself.Sends emailreconnect_mailboxGet the link to connect or re-authorise a Gmail mailbox in the browser.Writedisconnect_mailboxDisconnect a mailbox.Destructive
Deliverability toolset: deliverability
4 toolsDomain health, SES quota, alerts and warm-up guidance for sending reputation.
get_deliverability_overviewHealth of every domain, SES quota pressure and open alerts.Readget_domain_healthDNS status, bounce/complaint rates, sending controls and history for one domain.Readresolve_deliverability_alertMark a deliverability alert as resolved.Writeget_warmup_guidanceRecommended daily volumes to warm up a domain safely.Read
Developer settings toolset: developer
7 toolsAPI keys, rotation, API request logs, rate limits and SMTP.
list_api_keysAPI keys with scopes, domain access, status and last use.Readcreate_api_keyCreate an API key with scopes and optional domain restriction.Writeupdate_api_keyRename an API key or change its scopes and domain access.Writerotate_api_keyStart a zero-downtime key rotation or confirm a pending one.Writerevoke_api_keyRevoke an API key immediately.Destructivelist_api_logsPublic API request logs and rate-limit settings.Readget_smtp_settingsSMTP relay host, ports and username for sending via SMTP.Read
Webhooks toolset: webhooks
9 toolsWebhook endpoints, delivery logs, tests, retries, replays and secrets.
list_webhooksWebhook endpoints with status, events and failure counts.Readget_webhookOne webhook endpoint's configuration.Readcreate_webhookCreate a webhook endpoint for chosen event types.Writeupdate_webhookEdit, pause, resume or rotate the secret of a webhook.Writedelete_webhookDelete a webhook endpoint.Destructivetest_webhookSend a sample event to a webhook endpoint.Writelist_webhook_deliveriesWebhook delivery attempts filterable by status, event and time.Readget_webhook_deliveryOne delivery's payload, response and error.Readredeliver_webhookRetry a failed delivery or replay any delivery.Write
Settings toolset: settings
8 toolsTeam members and invites, usage, and workspace SES configuration.
list_teamTeam members, roles and pending invites.Readinvite_team_memberInvite someone to the workspace with a role.Writeupdate_team_member_roleChange a member's role.Writeremove_team_memberRemove a member from the workspace.Destructivemanage_team_inviteResend or revoke a pending invite.Writeget_usageThis month's email usage by day and type.Readlist_ses_settingsWorkspace AWS SES regions, status, callbacks and send rate.Readmanage_ses_settingsTest, 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, settingsWorkspace 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
Authorizationheader. 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"}'