protogrid

Search / io.aerosend/mcp

Aerosend

R2· OAuth, once

Manage Aerosend cold email domains, mailboxes, tags, warmup, inbox placement and domain burn.

v1.0.0 · active · repository · website · descriptor JSON · versions

An agent can connect after a one-time OAuth consent by a human.Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.
Quality96strong
Trust95of 100
Uptime, 30 days98%
Latency p50576 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "aerosend": {
      "type": "http",
      "url": "https://mcp.aerosend.io/mcp",
      "headers": {
        "X-API-Key": "${X_API_KEY}"
      }
    }
  }
}
claude mcp add --transport http aerosend https://mcp.aerosend.io/mcp --header "X-API-Key: ${X_API_KEY}"
[mcp_servers.aerosend]
url = "https://mcp.aerosend.io/mcp"
env_http_headers = { "X-API-Key" = "X_API_KEY" }
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "aerosend": {
      "type": "remote",
      "url": "https://mcp.aerosend.io/mcp",
      "enabled": true,
      "headers": {
        "X-API-Key": "{env:X_API_KEY}"
      }
    }
  }
}
{
  "mcpServers": {
    "aerosend": {
      "type": "http",
      "url": "https://mcp.aerosend.io/mcp",
      "headers": {
        "X-API-Key": "${X_API_KEY}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=aerosend&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLmFlcm9zZW5kLmlvL21jcCIsImhlYWRlcnMiOnsiWC1BUEktS2V5IjoiJHtYX0FQSV9LRVl9In19"
}
{
  "servers": {
    "aerosend": {
      "type": "http",
      "url": "https://mcp.aerosend.io/mcp",
      "headers": {
        "X-API-Key": "${X_API_KEY}"
      }
    }
  }
}
{
  "mcpServers": {
    "aerosend": {
      "httpUrl": "https://mcp.aerosend.io/mcp",
      "headers": {
        "X-API-Key": "${X_API_KEY}"
      }
    }
  }
}
extensions:
  "aerosend":
    enabled: true
    name: "aerosend"
    type: streamable_http
    uri: "https://mcp.aerosend.io/mcp"
    headers:
      "X-API-Key": "${X_API_KEY}"
    timeout: 300

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

Quality 96 / 100strong

protocoln/a · weight 25
  • n/a
    protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)
authorization83 · weight 15
  • pass
    auth.prmProtected Resource Metadata (RFC 9728) published
  • pass
    auth.as_metadataauthorization server metadata reachable
  • warn
    auth.cimdonly Dynamic Client Registration, deprecated in 2026-07-28 in favour of CIMD
  • 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.annotations29 of 29 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 5,406 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno 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

29 tools, about 5,406 tokens to load them all · tool set 290b8af9bc69 · checked 2026-10-20 11:08 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

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 95 / 100

provenance85
liveness99
freshness100
hygiene100

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

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://mcp.aerosend.io/mcp streamable-httpoauth2 AS: https://mcp.aerosend.ioyes98%576 ms–2026-10-20

Tools (29)

add_domainsdestructiveAdd one or more domains (POST /api/v1/domains). New domains start pending with warmup on. Pass domains as comma-separated names plus one redirectUrl for all, or domainsJson as [{"domain":"example.com","redirect_url":"mysite.com"}]. Inactive existing domains are reactivated. Active duplicates are rejected. Max 100 per request.
add_mailboxesdestructiveAdd one or more mailboxes (POST /api/v1/mailboxes). Domain is taken from the email and must exist, belong to the client, and be active. Max 3 mailboxes per domain and 60 per request. Pass email, firstName, and lastName for one mailbox, or mailboxesJson as [{"email":"[email protected]","first_name":"John","last_name":"Doe"}].
create_tagsdestructiveCreate one or more tags (POST /api/v1/tags). You send display_name; the API stores a normalized name (e.g. Sales Team ABC -> sales-team-abc). Existing normalized names are returned idempotently. Pass displayNames (comma-separated) plus optional color, or tagsJson as [{"display_name":"Sales Team","color":"#10B981"}]. Color is #RGB or #RRGGBB.
delete_domainsdestructiveImmediately delete pending domains only (DELETE /api/v1/domains). Active or in-progress domains are skipped. When the user asks to delete a list of domains (especially active ones, or via ChatGPT/Claude), use request_domain_deletion instead. Pass ids and/or domains (comma-separated names). Only pending domains with no active mailboxes are removed.
delete_mailboxesdestructiveDelete pending mailboxes (DELETE /api/v1/mailboxes). Non-pending mailboxes are skipped. Pass ids and/or emails (comma-separated).
delete_tagsdestructiveDelete tags and their domain/mailbox mappings (DELETE /api/v1/tags). Pass tagIds as comma-separated ids. The request fails if any id is missing.
get_domaindestructiveGet one domain by id (GET /api/v1/domains/{id}), including nameservers, DNS provider, tags, and mailboxes. Call list_domains first when you only have a name.
get_domain_burn_connect_urldestructiveReturn the page where the user adds Smartlead or Instantly sequencer keys for domain burn alerts. Never ask for or submit sequencer API keys in chat. Always show this URL when keys are missing or scan.next_step is CONNECT_SEQUENCER.
get_domain_burn_detaildestructiveGet burn detail for one domain (GET /api/v1/domain-burn/domains/{domain}): domain row, sequencer name, metrics (burn_score, warmup_score, reply_rate, bounce_rate, placement_score, total_sent), issues, monthly score history, and recommended action (replace or slowdown). Call get_domain_burn_report first when you only have a status group. Pass keyId from list_domain_burn_keys to require the domain belongs to that sequencer.
get_domain_burn_reportdestructiveGet the domain burn report (GET /api/v1/domain-burn). Includes report_available, scan status, summary counts (total_domains, burnt, at_risk, good, excellent, low_volume), status groups, clients (from redirect URLs), and one row per domain (domain, status, burn_score, sent, delta, flags). Domain status values: burnt, at-risk, good, excellent, low-volume. When report_available is false and scan.next_step is CONNECT_SEQUENCER, tell the user to add keys at https://app.aerosend.io/connect-sequencer — do not collect API keys in chat. Pass keyId from list_domain_burn_keys to limit the report to that sequencer. Page size default 100, maximum 100. Call get_domain_burn_detail with a domain name for issues and history.
get_domain_burn_scan_statusdestructiveGet domain burn report generation status (GET /api/v1/domain-burn/scan-score). Same object as data.scan on get_domain_burn_report. status is NOT_STARTED, IN_PROGRESS, COMPLETED, or FAILED. next_step drives the flow: CONNECT_SEQUENCER, GENERATE_REPORT, WAIT, or VIEW_REPORT. Pass keyId from list_domain_burn_keys for one sequencer; omit it for the whole account. If next_step is CONNECT_SEQUENCER, tell the user to add keys at https://app.aerosend.io/connect-sequencer — do not collect API keys in chat.
get_domain_burn_sequencersdestructiveDetect which sequencers have an active API key stored (GET /api/v1/domain-burn/sequencer). Returns has_api_key and sequencers [{sequencer, connected, account_count, scan_supported}] for smartlead and instantly. Keys are never returned. If has_api_key is false or a sequencer is not connected, tell the user to add keys at https://app.aerosend.io/connect-sequencer — do not collect API keys in chat.
get_inbox_placement_analyticsdestructiveGet the latest inbox placement test for the account (GET /api/v1/analytics/inbox-placement). Not paginated — the full domain list is returned. Use this to analyze delivery: total_emails_sent, inbox_count, spam_count, inbox_percentage, spam_percentage, google_total_sent, outlook_total_sent, overall_esp_breakdown, and domain_breakdown (each domain has its own esp_breakdown). Returns 404 if no completed test exists.
get_mailboxdestructiveGet one mailbox by id (GET /api/v1/mailboxes/{id}). Call list_mailboxes first when you only have a name or email. Set includeCredentials=true to include SMTP and IMAP connection details.
get_medestructiveGet the current Aerosend account (GET /api/v1/me): id, name, email, domain_slots, domain_slots_used, mailbox_slots, mailbox_slots_used, status
get_tagdestructiveGet one tag by id (GET /api/v1/tags/{id}), including domain_count and mailbox_count by default. Call list_tags first when you only have a name.
greetdestructiveReturn a greeting for a person by name
list_domain_burn_keysdestructiveList connected Smartlead and Instantly sequencer keys (GET /api/v1/domain-burn/keys). Each row has id, sequencer, display_name, report_status (NOT_STARTED, IN_PROGRESS, COMPLETED, FAILED), and message. Pass id into get_domain_burn_report, get_domain_burn_scan_status, or get_domain_burn_detail to scope results to that key. Keys themselves are never returned. If the list is empty, tell the user to add keys at https://app.aerosend.io/connect-sequencer — do not collect API keys in chat.
list_domainsdestructiveList domains in the current Aerosend account (GET /api/v1/domains). Filter with search (domain name substring), status (active, inactive, pending, in_progress), tagIds (comma-separated), and isWarmup. Sort is latest or oldest (default latest). Each item includes id, domain_tld, mail_domain, status, is_warmup, mailbox_count, redirect_url, nameservers, dns_provider. Set includeTags or includeMailboxes to expand those. Use get_domain with an id from this list for full details. Page size default 20, maximum 100.
list_mailboxesdestructiveList mailboxes in the current Aerosend account (GET /api/v1/mailboxes). Filter with search (email substring), status (active, inactive, pending, in_progress), domainId, and tagIds (comma-separated). Sort is latest or oldest (default latest). Each item includes id, email, first_name, last_name, status, domain_id. Set includeTags to attach tags. Set includeCredentials only when SMTP/IMAP details are needed. Use get_mailbox with an id from this list for full details. Page size default 20, maximum 100.
list_tagsdestructiveList tags in the current Aerosend account (GET /api/v1/tags). Search matches the normalized name (lowercase, hyphenated) as well as display name. Filter with status. Set includeCounts=true for domain_count and mailbox_count. Each item includes id, name, display_name, color, status. Page size default 20, maximum 100. Use get_tag with an id from this list for one tag.
list_warmup_scoresdestructiveList warmup score and warmup start date for each mailbox (GET /api/v1/analytics/warmup-scores). Each item includes email, score, warmup_start_date. Page size default 20, maximum 100. Call list_mailboxes first when you only have a name.
map_tags_to_domainsdestructiveMap tags onto domains (POST /api/v1/tags/domains/mapping). Existing mappings are ignored. Set includeDomainMailboxes=true to also tag mailboxes under those domains.
map_tags_to_mailboxesdestructiveMap tags onto mailboxes (POST /api/v1/tags/mailboxes/mapping). Existing mappings are ignored.
remove_tag_from_domainsdestructiveRemove one tag from domains (DELETE /api/v1/tags/{tagId}/domains). The tag itself is kept. Set includeDomainMailboxes=true to also untag mailboxes under those domains.
remove_tag_from_mailboxesdestructiveRemove one tag from mailboxes (DELETE /api/v1/tags/{tagId}/mailboxes). The tag itself is kept.
request_domain_deletiondestructiveAsk the Aerosend team to delete domains (POST /api/v1/domains/deletion-request). Use this when the user wants to delete a list of domains, including active ones. Pass comma-separated domain names. Domains are NOT deleted; Slack notifies the team. Tell the user the request was submitted and domains remain until the team acts. Max 100 per request.
update_domain_redirect_urlsdestructiveUpdate redirect URLs for one or more domains (PUT /api/v1/domains/redirect-urls). Pass domainId plus redirectUrl for one domain, or domainsJson as [{"domain_id":123,"redirect_url":"mysite.com"}]. Max 100 per request.
update_tagdestructiveUpdate a tag display name and/or color (PUT /api/v1/tags/{id}). Changing display_name recalculates the normalized name. Mappings are unchanged. At least one of displayName or color is required.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.aerosend/mcp",
  "title": "Aerosend",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.aerosend.io/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "X-API-Key",
          "isSecret": true,
          "description": "Aerosend API key (starts with aero_), from app.aerosend.io > Developer. Not needed if your client signs in with OAuth."
        }
      ]
    }
  ],
  "version": "1.0.0",
  "repository": {
    "url": "https://github.com/Aerosend-Public/aerosend-mcp",
    "source": "github"
  },
  "websiteUrl": "https://www.aerosend.io/mcp/",
  "description": "Manage Aerosend cold email domains, mailboxes, tags, warmup, inbox placement and domain burn."
}