protogrid

Search / com.mailcheer/mailcheer

Mailcheer

R1· needs a key

Email API + newsletters. 17 MCP tools. OAuth 2.1 PKCE or API key. EU-hosted (Hetzner + SES).

v1.1.0 · active · website · descriptor JSON · versions

An agent can connect on its own if it already holds MAILCHEER_TOKEN.Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.
Quality86good
Trust82of 100
Uptime, 30 days98%
Latency p50637 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "mailcheer": {
      "type": "http",
      "url": "https://mailcheer.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${MAILCHEER_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http mailcheer https://mailcheer.com/api/mcp --header "Authorization: Bearer ${MAILCHEER_TOKEN}"
[mcp_servers.mailcheer]
url = "https://mailcheer.com/api/mcp"
bearer_token_env_var = "MAILCHEER_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mailcheer": {
      "type": "remote",
      "url": "https://mailcheer.com/api/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:MAILCHEER_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "mailcheer": {
      "type": "http",
      "url": "https://mailcheer.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${MAILCHEER_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=mailcheer&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWFpbGNoZWVyLmNvbS9hcGkvbWNwIiwiaGVhZGVycyI6eyJBdXRob3JpemF0aW9uIjoiQmVhcmVyICR7TUFJTENIRUVSX1RPS0VOfSJ9fQ%3D%3D"
}
{
  "servers": {
    "mailcheer": {
      "type": "http",
      "url": "https://mailcheer.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${MAILCHEER_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "mailcheer": {
      "httpUrl": "https://mailcheer.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${MAILCHEER_TOKEN}"
      }
    }
  }
}
extensions:
  "mailcheer":
    enabled: true
    name: "mailcheer"
    type: streamable_http
    uri: "https://mailcheer.com/api/mcp"
    headers:
      "Authorization": "Bearer ${MAILCHEER_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${MAILCHEER_TOKEN}. The registry never accepts secret values.

Quality 86 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations19 of 19 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 3,602 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes34 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

19 tools, about 3,602 tokens to load them all · tool set d84fa581e940 · tools last changed 2026-10-10 · checked 2026-10-20 09:31 UTC

Tool changes

  • verify_emailadded

    Verifies one or more addresses (up to 100) BEFORE writing to them, without sending anything: syntax, a domain that receives mail, a mailbox that already hard-bounced on Mailcheer, disposable or role mailboxes, and DNS signals of a dead mailbox. Each address gets a verdict: `invalid` (writing to it will bounce), `risky` (may bounce, or is not a person), `unknown` (DNS did not answer) or `valid` (nothing known against it — not a proof that the mailbox exists). Use it before prospecting, or before importing a list you did not collect yourself.

  • send_emailchangedinput schema
  • update_subscriberadded

    Updates the first name (`first_name`), last name (`last_name`) and custom fields (`fields`, by technical key) of an existing subscriber. The email address cannot be changed: it is the identifier. Tags are managed with `tag_subscriber`. Unknown fields are rejected (400). The response contains the updated record and the `fields` keys that were ignored (`ignored_fields`).

  • get_emailchangedannotations
  • get_campaign_statschangedannotations
  • send_campaignchangedannotations
  • preview_campaign_sendchangedannotations
  • update_campaignchangedannotations
  • create_campaignchangedannotations
  • list_campaignschangedannotations

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 82 / 100

no-repository
provenance55
liveness99
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-98% +updated-15d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mailcheer.com/api/mcp streamable-httpapi_key ${MAILCHEER_TOKEN}yes98%637 ms2025-06-182026-10-20

Tools (19)

add_subscriberAdds or updates a subscriber. By default the person enters as PENDING and receives a confirmation email: that is double opt-in, and it protects the workspace's sending reputation. `double_opt_in: false` subscribes directly and must only be used when consent was already collected elsewhere — never on your own initiative. A suppressed or unsubscribed address is refused. An address gets at most one confirmation every 2 minutes and 3 per 24 hours: do not retry in a loop, read `confirmation_not_sent_reason` and `confirmation_retry_at` in the response.
add_suppressiondestructiveAdds an address to the workspace's suppression list. By default (`manual`), it will receive nothing further, neither campaigns nor individual emails; with `unsubscribe`, only campaigns, automations, and sends carrying `unsubscribe_url` are refused to it. Use when someone requests no further contact outside the unsubscribe link.
create_campaignCreates a DRAFT. Nothing is sent: you then need to call send_campaign, or send it from the Mailcheer workspace. Content is written in plain text in `text` — a blank line separates paragraphs, "#" at the start of a line makes a heading. Always have the draft reviewed before sending.
erase_subscriberdestructiveErases a person from the workspace at THEIR request (right to erasure): record, name, fields, proof of consent, tags. Statistics of campaigns already sent do not move; the suppression list is not touched. To stop someone receiving anything, use remove_subscriber — not this one. IRREVERSIBLE: only use it on the explicit request of the person concerned, relayed by the user.
get_accountread-onlyReturns the workspace this key grants access to, its scopes, plan, remaining emails this month (queued sends included), when the counter resets, billing status, member and domain limits, sending domains (verified or not) and registered senders. Call this FIRST: it tells you which address to send from before attempting anything.
get_campaign_statsread-onlyStatus and figures for a campaign: recipients, sent, delivered, opened, clicked, bounced, complained. Rates are calculated on delivered messages, not on recipients. Every rate comes twice: open_rate and click_rate include bots (security gateways, preloads), human_open_rate and human_click_rate set them aside — that is the figure to give the person when they ask how many read it.
get_emailread-onlyStatus of an email sent via send_email: sent, delivered, bounced, or complained. Amazon's delivery callback arrives a few seconds to a few minutes after sending — a "sent" status right after the call is normal.
list_campaignsread-onlyThe workspace's campaigns, from newest to oldest, with their status: draft, scheduled, sending, or sent.
list_subscribersread-onlyLists the workspace's subscribers, page by page. Use `cursor` with the `next_cursor` value from the response to get the next page. `status` filters on subscribed, pending, unsubscribed, bounced, or complained.
list_suppressionread-onlySuppressed addresses, with their reason: bounced, complained or manually suppressed (nothing goes to them), or unsubscribed (no more campaigns, automations, or sends carrying `unsubscribe_url`, but an individual email still reaches them). The `scope` field tells whether the address is suppressed for this workspace only or for the entire platform. No tool removes an address from this list: that action is done manually in the Mailcheer workspace, because it is the one that can suspend a sending capability.
list_tagsread-onlyThe workspace's tags, with how many subscribers carry each one (`subscribers`) and, among them, the active ones (`subscribed`). Read this before tagging: reuse an existing name rather than creating a near-duplicate.
preview_campaign_sendread-onlyRead-only: nothing is sent. Returns exactly what send_campaign would do right now — would it go out (and if not, why), and how many people would receive it. With `to`, reports address by address who is kept and who is excluded, with the reason (unsubscribed, bounced, complained, not in the list…). If the monthly quota is not enough, `would_send` is false, `blocked_code` is `quota_exceeded` and `blocked_details` gives the figures and the reset date. Call it BEFORE send_campaign, and give that number to the person when you ask them to confirm.
remove_subscriberdestructiveUnsubscribes an address and adds it to the workspace's suppression list: no more campaigns, automations, or sends carrying `unsubscribe_url`. The record is not deleted — that is what prevents the address from coming back on the next file import. This action cannot be reversed via the API: only the person can re-subscribe.
send_campaigndestructive⚠️ IRREVERSIBLE. Locks the recipient list and triggers sending to ALL active subscribers in the workspace — or, with `to`, only to the requested addresses that are active subscribers (never an unsubscribed or suppressed address). A sent email cannot be recalled. First call preview_campaign_send with the same parameters, then ask the person for explicit confirmation, telling them how many people will receive the message. Messages go out progressively; get_campaign_stats tracks progress.
send_emaildestructiveSends a single (transactional) email to one or more addresses. The sender must belong to a verified domain of the workspace — call get_account to see which ones. An address suppressed for a bounce, a complaint or by hand fails the entire call, with its reason. An unsubscribed address still gets an individual email (a reply, an invoice, an appointment); a newsletter or a prospecting email must carry `unsubscribe_url`, and is then refused to an unsubscribed address. At most 50 addresses in all, to, cc and bcc together. Every address (to, cc, bcc) counts against the plan's monthly quota: past it, the call is refused (`quota_exceeded`) with the figures and the reset date — do not retry before that date. The email is sent immediately: this action cannot be undone.
tag_subscriberAdds (`add`) and removes (`remove`) tags on ONE existing subscriber, and nothing else: no subscription, no confirmation email, no status touched. Prefer it to add_subscriber for changing tags: add_subscriber is a subscription and sends the confirmation again to a pending person. An unknown address is not created (404). The response says what really changed (`added`, `removed`).
update_campaignEdits a DRAFT: name, subject, preheader, kind, sender, content (`text`). Nothing is sent. Prefer it to create_campaign to rework a text: otherwise the old draft stays in the list. A scheduled, sending or sent campaign cannot be edited (409).
update_subscriberUpdates the first name (`first_name`), last name (`last_name`) and custom fields (`fields`, by technical key) of an existing subscriber. The email address cannot be changed: it is the identifier. Tags are managed with `tag_subscriber`. Unknown fields are rejected (400). The response contains the updated record and the `fields` keys that were ignored (`ignored_fields`).
verify_emailread-onlyVerifies one or more addresses (up to 100) BEFORE writing to them, without sending anything: syntax, a domain that receives mail, a mailbox that already hard-bounced on Mailcheer, disposable or role mailboxes, and DNS signals of a dead mailbox. Each address gets a verdict: `invalid` (writing to it will bounce), `risky` (may bounce, or is not a person), `unknown` (DNS did not answer) or `valid` (nothing known against it — not a proof that the mailbox exists). Use it before prospecting, or before importing a list you did not collect yourself.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.mailcheer/mailcheer",
  "title": "Mailcheer",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mailcheer.com/api/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "isRequired": true,
          "description": "Bearer mch_live_... API key, created in Mailcheer under Settings > API. Alternatively, connect via OAuth 2.1 PKCE at https://mailcheer.com/api/oauth/authorize — no key needed."
        }
      ]
    }
  ],
  "version": "1.1.0",
  "websiteUrl": "https://mailcheer.com/docs/api",
  "description": "Email API + newsletters. 17 MCP tools. OAuth 2.1 PKCE or API key. EU-hosted (Hetzner + SES)."
}