Community Gmail server with auto-auth: search, read and send email via MCP.
Emailwarmup is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Warm up mailboxes, check the ready-for-outbound gate, run cold email and get checkout links.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http emailwarmup-mcp https://app-emailwarmup.bobwork.ai/mcp --header 'Authorization: Bearer ${API_KEY}'
# 2 — ask your agent for something these tools do
# get_account, list_mailboxes, get_mailbox and 42 more
It needs API_KEY (BobWork Email Warm-up API key (bwk_...). An agent can get one with no browser: POST https://app-emailwarmup.bobwork.ai/api/v1/signup/code then /signup/verify): this sends it in the Authorization header from your environment, so export it first — its endpoint answers 401 without it.
Emailwarmup costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it. Claude Code reads API_KEY (BobWork Email Warm-up API key (bwk_...). An agent can get one with no browser: POST https://app-emailwarmup.bobwork.ai/api/v1/signup/code then /signup/verify) from your environment each time it connects and sends it in the Authorization header — its endpoint answers 401 without it — so the key stays out of its config: export it in your shell profile (macOS, Linux), or run setx API_KEY … and open a new terminal (Windows).
claude mcp add --scope user --transport http emailwarmup-mcp https://app-emailwarmup.bobwork.ai/mcp --header 'Authorization: Bearer ${API_KEY}'Reconnect, or start a new session, and the tools appear in the model’s tool list.
It reaches a system of yours, so it needs your own credential rather than the publisher’s: Authorization header — BobWork Email Warm-up API key (bwk_...). An agent can get one with no browser: POST https://app-emailwarmup.bobwork.ai/api/v1/signup/code then /signup/verify.. You set it in your own client’s config, on your machine — this marketplace never holds it.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
45 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Your account: email, credit balance, free mailbox allowance (10, or 20 for accounts created before 27 October 2026, plus referral bonus), paid extras and your referral link.
No parameter schema on file.
Every connected mailbox with warm-up day, status, 7-day spam rate, today's and last 7 days' numbers, and whether it is ready for outbound.
No parameter schema on file.
One mailbox's warm-up status and health.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com |
The last 100 warm-up events for a mailbox (sent, received, replied, rescued from spam, errors).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com |
Totals across your mailboxes: today and last 7 days (sent, received, rescued, replied), active and ready counts.
No parameter schema on file.
IMAP/SMTP presets (Gmail app password, Yahoo, iCloud, Zoho, Lark, SES, SendGrid, Mailgun…) with hosts and ports, plus the Google and Zoho API routes.
No parameter schema on file.
Connect any mailbox with IMAP + SMTP. The login is tested before it is saved. Use an app password when two-factor sign-in is on. Give a preset (see list_providers) or the hosts. Warm-up starts the same day.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com | |
| password | string | yes | Mailbox password or app password |
| preset | string | no | e.g. gmail-imap, yahoo, icloud, zoho, lark, aws-ses, sendgrid, mailgun, other |
| name | string | no | Display name on sent mail |
| host | string | no | IMAP host (if no preset) |
| port | integer | no | — |
| smtp_host | string | no | — |
| smtp_port | integer | no | — |
| user | string | no | Login if not the email |
| smtp_user | string | no | Relay platforms only (SES/SendGrid/Mailgun) |
| smtp_password | string | no | — |
Connect a Zoho Mail mailbox through the Zoho API (works on Zoho's free plan). Needs a Self Client id, secret and a generated code from api-console.zoho.com.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com | |
| client_id | string | yes | — |
| client_secret | string | yes | — |
| code | string | yes | Self Client code (valid 10 minutes) |
| dc | string | no | Zoho data centre: com, eu, in, com.au, jp, ca |
| name | string | no | — |
Get a link the user opens to connect Gmail / Google Workspace with Google sign-in (one click, any device). The mailbox appears in list_mailboxes a few minutes after they allow it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| renew | boolean | no | Make a fresh link |
Change a mailbox's display name, daily warm-up cap (1-100, null = default) or time zone (IANA, e.g. Europe/London).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com | |
| name | string | no | — |
| daily_cap | integer/null | no | — |
| timezone | string | no | — |
Pause warm-up for a mailbox.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com |
Resume warm-up for a mailbox.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com |
Sign in to the mailbox now and report whether the stored login still works.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com |
Remove a mailbox and delete its stored login. Irreversible: ask the user first, then pass confirm=true.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com | |
| confirm | boolean | yes | — |
Shared network (default: warm with every mailbox on the service) or private pool (only your own mailboxes write to each other; needs 2+).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| private_pool | boolean | yes | — |
Client workspaces (agencies): each client's mailboxes are kept separate under one login and one bill. Returns id, name and mailbox count. Each mailbox in list_mailboxes has a workspace id (null = My mailboxes).
No parameter schema on file.
Create a client workspace, e.g. the client's company name (max 100 per account).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Client name, up to 60 characters |
Rename a client workspace.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | string | yes | Workspace id (ws_…) from list_workspaces |
| name | string | yes | — |
Delete a client workspace. Its mailboxes are NOT deleted: they move back to My mailboxes and keep warming. The client's report link stops working.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | string | yes | Workspace id (ws_…) from list_workspaces |
Put a mailbox in a client workspace. Leave workspace_id out (or empty) to move it back to My mailboxes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com | |
| workspace_id | string | no | Workspace id (ws_…) from list_workspaces |
The public read-only report link for one client workspace (mailbox health, spam rate, SPF/DKIM/DMARC). The client opens it without a login; it shows no prices and nothing about other clients.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_id | string | yes | Workspace id (ws_…) from list_workspaces |
SPF, DKIM selector, DMARC policy and MX for every domain you have connected.
No parameter schema on file.
Look up a domain's SPF record.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domain | string | yes | Domain, e.g. yourdomain.com |
Find a domain's DKIM key: tries the selector you give, selectors seen in real mail, then 45 common ones.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domain | string | yes | Domain, e.g. yourdomain.com |
| selector | string | no | — |
Look up a domain's DMARC record and policy.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domain | string | yes | Domain, e.g. yourdomain.com |
Prepaid credit balance, prices and recent charges (Outbound emails, AI drafts).
No parameter schema on file.
Your Outbound campaigns with status and stats.
No parameter schema on file.
One campaign: its emails, mailboxes, stats and time left.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign id from list_campaigns |
Create a draft Outbound campaign (nothing is sent). Emails can use {first_name}, {company} and any contact field. Any connected mailbox can send; one that is still warming shows a warning first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| emails | array | yes | 1-4 emails in order |
| mailboxes | array | no | — |
| daily_limit | integer | no | Per mailbox per day |
Edit a paused or draft campaign. Fields you leave out keep their value.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign id from list_campaigns |
| name | string | no | — |
| emails | array | no | — |
| mailboxes | array | no | — |
| daily_limit | integer | no | — |
Add up to 1,000 contacts to a campaign. Each needs email; other fields (first_name, company…) fill the placeholders. Duplicates and unsubscribed addresses are skipped.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign id from list_campaigns |
| contacts | array | yes | — |
Contacts in a campaign and where each is in the sequence (first 200).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign id from list_campaigns |
Start or resume a campaign. This SENDS real email and uses credits. Confirm with the user first. accept_sending_rules=true means the user agrees to https://emailwarmup.bobwork.ai/terms#outbound-beta (only people who may receive it, honest sender, unsubscribe honoured). If a chosen mailbox is still warming the call fails with warming:true; show the user the message and set accept_warming_risk=true
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign id from list_campaigns |
| accept_sending_rules | boolean | no | — |
| accept_warming_risk | boolean | no | The user agreed to send from mailboxes that have not finished warm-up |
Pause a running campaign.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign id from list_campaigns |
Payment status after you gave the user a checkout link: credit balance, whether the extra-mailbox subscription is active, mailboxes vs the free limit, and checkouts still waiting for payment. Confirms a paid checkout straight away.
No parameter schema on file.
Get a Stripe Checkout url for extra mailboxes beyond the free limit (monthly, or yearly = 10 months' price for 12). The USER opens it and pays; you cannot. Then poll get_billing_status. Returns already:true when the account is subscribed. Prices come back in the result (prices).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| yearly | boolean | no | Bill yearly instead of monthly |
Get a Stripe Checkout url to top up prepaid credits for Outbound sending and AI drafts (one-off $5, $10, $25 or $100; credits never expire). The USER opens it and pays; you cannot. Then poll get_billing_status.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| usd | integer | yes | — |
Domains bought in the domain shop, their hosted mailboxes, renewal date and price, plus IMAP/SMTP settings.
No parameter schema on file.
Find available lookalike domains for cold email, with first-term and renewal prices.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | yes | Brand or domain, e.g. acme |
Buy domains with up to 3 mailboxes each. Returns a Stripe checkout link for the person to pay; setup starts once paid. Needs accept_sending_rules true.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domains | array | yes | — |
| accept_sending_rules | boolean | yes | — |
Add mailboxes to a domain you bought here ($3 per mailbox per month). Returns a Stripe checkout link.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domain | string | yes | Domain, e.g. yourdomain.com |
| mailboxes | array | yes | — |
Password, IMAP and SMTP settings for one of your hosted mailboxes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | yes | Mailbox address, e.g. sales@yourdomain.com |
DNS records on a domain you bought here.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domain | string | yes | Domain, e.g. yourdomain.com |
Add a DNS record to a domain you bought here. name = subdomain ('' for the domain itself). Types A, AAAA, CNAME, ALIAS, MX, TXT, CAA, SRV.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domain | string | yes | Domain, e.g. yourdomain.com |
| type | string | yes | — |
| name | string | no | — |
| content | string | yes | — |
| ttl | integer | no | — |
| prio | integer | no | — |
Delete a DNS record by id (from list_dns_records). Deleting MX, SPF, DKIM or DMARC stops the mailboxes working.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domain | string | yes | Domain, e.g. yourdomain.com |
| record_id | string | yes | — |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Emailwarmup or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| get_account | no tags | |
| list_mailboxes | no tags | |
| get_mailbox | no tags | |
| mailbox_activity | no tags | |
| warmup_stats | no tags | |
| list_providers | no tags | |
| connect_imap_mailbox | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| connect_zoho_mailbox | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| google_connect_link | state-write | state-write: declares readOnlyHint: false |
| update_mailbox | state-write | state-write: declares readOnlyHint: false |
| pause_mailbox | state-write | state-write: declares readOnlyHint: false |
| resume_mailbox | state-write | state-write: declares readOnlyHint: false |
| test_mailbox | no tags | |
| remove_mailbox | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| set_pool_mode | state-write | state-write: declares readOnlyHint: false |
| list_workspaces | no tags | |
| create_workspace | state-write | state-write: declares readOnlyHint: false |
| rename_workspace | state-write | state-write: declares readOnlyHint: false |
| delete_workspace | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| move_mailbox_to_workspace | state-write | state-write: declares readOnlyHint: false |
| get_workspace_report | no tags | |
| domain_health | no tags | |
| check_spf | no tags | |
| check_dkim | no tags | |
| check_dmarc | no tags | |
| get_credits | no tags | |
| list_campaigns | no tags | |
| get_campaign | no tags | |
| create_campaign | state-write | state-write: declares readOnlyHint: false |
| update_campaign | state-write | state-write: declares readOnlyHint: false |
| add_contacts | state-write | state-write: declares readOnlyHint: false |
| list_campaign_contacts | no tags | |
| start_campaign | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| pause_campaign | state-write | state-write: declares readOnlyHint: false |
| get_billing_status | state-write | state-write: declares readOnlyHint: false |
| create_billing_checkout | state-write | state-write: declares readOnlyHint: false |
| create_credits_checkout | state-write | state-write: declares readOnlyHint: false |
| list_bought_domains | no tags | |
| search_domains | no tags | |
| buy_domains | state-write | state-write: declares readOnlyHint: false |
| add_hosted_mailboxes | state-write | state-write: declares readOnlyHint: false |
| hosted_mailbox_login | no tags | |
| list_dns_records | no tags | |
| add_dns_record | state-write | state-write: declares readOnlyHint: false |
| delete_dns_record | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Emailwarmup can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.