Index / MCP servers / primitive.dev

primitive.dev MCP server

primitive.dev is an MCP server with 30 tools an agent can call, among them addDomain, awaitReply, cancelScheduledSend. It answers at https://docs.primitive.dev/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 11 of 11 times since 4 September 2026; the last check, on 25 October 2026, succeeded.

Status
Answering
Tools
30
Reliability
11 of 11 checks
Response time
296 ms
Transport
streamable HTTP
Last checked
25 October 2026

Model Context Protocol server for primitive.dev, exposing 28 tools.

Description as the publisher wrote it.

The 30 tools primitive.dev offers

ToolWhat it does
addDomainClaim a new domain and receive the DNS records to publish. Returns dns_records with the exact records to add. If the domain has an mx_conflict (existing mail provider), re-call with confirmed: true to proceed. After publishing DNS records,
Inputs: requestBody
awaitReplyWait for the threaded reply to a sent email. Call this immediately after sendEmail or replyToEmail when you expect an answer. With only the sent email's id it long-polls for up to 30 seconds by default. Do not report that nobody replied or
Inputs: id, wait, wait_timeout_ms, api_key
cancelScheduledSendCancel a still-scheduled send before it dispatches (terminal status "canceled"; the same idempotency key becomes reusable). Pass the sent email id from a sendEmail response that used scheduled_at, or from listSentEmails. Returns a conflict
Inputs: id
createEmailAddressGet this user's Primitive managed inbox domain, creating the account on first use: no signup form, no password, no email verification, no browser. CALL THIS FIRST whenever you do not already have a Primitive API key and the user wants to se
Inputs: requestBody
createEndpointCreate a webhook endpoint to receive email.received events. If an endpoint with the same URL already exists but is deactivated, it is reactivated. After creating, call testEndpoint to confirm your signature verifier accepts the payload.
Inputs: requestBody
createFilterCreate a whitelist or blocklist filter rule. Patterns are stored lowercase. Per-domain filters require a Pro plan.
Inputs: requestBody
deleteEndpointSoft-delete a webhook endpoint. The endpoint will no longer receive deliveries.
Inputs: id
deleteFilterDelete a filter rule.
Inputs: id
downloadDomainZoneFileDownload a BIND-format DNS zone file for a domain. Useful when users want to import all required DNS records at once rather than copying them individually. Returns plain text in BIND zone file format.
Inputs: id, outbound_only
downloadEmailAttachmentsDownload all attachments for an inbound email as a gzip-compressed tar archive. Returns the archive as a base64-encoded string along with the attachment count and SHA-256 digest. Prefer getEmail first to check the attachment manifest before
Inputs: id, token
getAccountUse this when you need the authenticated Primitive account summary, including plan, onboarding state, and managed inbox domain. managed_inbox_address is a domain, not a complete mailbox. When it is non-null, this MCP result also includes se
Inputs: api_key
getConversationGet the full conversation an inbound email belongs to as ordered, chat-model-ready turns with bodies. Each message is oldest-first with a direction (inbound/outbound) and a derived role (inbound→user, outbound→assistant). For a brand-new me
Inputs: id
getEmailUse this when you need full details for one inbound email ID, including parsed bodies, threading metadata, SMTP envelope, webhook state, and replies.
Inputs: id, api_key
getInboxStatusUse this when the user asks whether inbound email is ready or needs setup. Returns domains, routes, deployed Functions, and recent inbound activity.
Inputs: api_key
getOutboundStatusWhat can I send FROM? Lists this account's verified outbound (sendable) domains plus any domains still pending DNS verification, with next actions. Call this BEFORE sendEmail to pick a valid `from` domain — the account email is not necessar
getSentEmailGet the full record for a single sent email by id, including body_text and body_html. Use to inspect delivery details for a specific send — e.g. the SMTP response on a bounced row, or the gate denial reason on a gate_denied row.
Inputs: id
getThreadGet a conversation thread by id: metadata plus all inbound and outbound messages interleaved oldest-first. Each message has a direction (inbound/outbound) and id; fetch inbound message bodies via getEmail, or outbound bodies via getSentEmai
Inputs: id
listDomainsList all inbound domains for the organization, both verified and unverified. Each domain includes its verification status and DNS records. Use before addDomain to check whether a domain is already claimed.
listEmailsUse this when you need to browse inbound emails received at verified domains with cursor pagination, status filters, date filters, or sender/recipient search.
Inputs: cursor, since, wait, limit, domain_id, status
listEndpointsList all active webhook endpoints for the organization. Each endpoint shows its URL, enabled state, and optional domain restriction.
listFiltersList all whitelist and blocklist filter rules for the organization.
listSentEmailsList outbound emails sent by this org, with cursor pagination and filters. Bodies are omitted from list rows to keep responses small — use getSentEmail to fetch a specific row with full body. Useful for auditing delivery status, finding bou
Inputs: cursor, limit, status, request_id, idempotency_key, date_from
listWebhookDeliveriesList webhook delivery attempts with pagination and filters. Each delivery includes the target endpoint and a nested email object with sender/recipient/subject. Useful for diagnosing delivery failures or confirming a specific email was deliv
Inputs: cursor, limit, email_id, status, date_from, date_to
replayWebhookDeliveryRe-send a stored webhook payload from a previous delivery attempt to its original endpoint. Rate limited per org (burst + sustained windows, shared budget with email webhook replays).
Inputs: id
replyToEmailUse this when the user has selected a specific inbound email and confirmed a reply. Sends real outbound email with threading handled server-side.
Inputs: id, requestBody, api_key
searchEmailsUse this when you need to find inbound emails with structured filters or full-text matching. Use sort=received_at_asc plus date_from for new-mail polling.
Inputs: q, from, to, subject, body, domain_id
sendEmailUse this when the user has confirmed a new outbound email. Sends real email through Primitive's relay and can wait for the first SMTP delivery outcome, or schedule the send for a future time with scheduled_at. IMPORTANT: `from` is YOUR OWN
Inputs: Idempotency-Key, requestBody, api_key
sendEmailDemoSIMULATION ONLY: nothing is delivered. NEVER call this when the user actually wants an email to arrive, and never describe its result as a sent email: no message is sent, queued, or stored, and the recipient receives nothing. To really send
Inputs: requestBody
testEndpointSend a sample email.received event to a webhook endpoint to verify your signature verifier. Rate limited to 4/min and 30/hr. Successful deliveries and verified-domain endpoints are exempt.
Inputs: id
verifyDomainCheck DNS records for a domain claim (MX, TXT, SPF, DKIM, DMARC). On success the domain becomes verified and starts receiving mail. On failure, returns which checks passed and which still need attention. If DNS propagation is incomplete, wa
Inputs: id

Add primitive.dev to your AI client

Every block below points at https://docs.primitive.dev/mcp. Pick your client and copy.

Claude Code: one command in your terminal
claude mcp add --transport http primitive-dev https://docs.primitive.dev/mcp
Claude Desktop: claude_desktop_config.json
{
  "mcpServers": {
    "primitive-dev": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://docs.primitive.dev/mcp"]
    }
  }
}
Cursor: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
  "mcpServers": {
    "primitive-dev": {
      "url": "https://docs.primitive.dev/mcp"
    }
  }
}
VS Code and GitHub Copilot: .vscode/mcp.json
{
  "servers": {
    "primitive-dev": {
      "type": "http",
      "url": "https://docs.primitive.dev/mcp"
    }
  }
}
Zed: Zed settings.json
{
  "context_servers": {
    "primitive-dev": {
      "url": "https://docs.primitive.dev/mcp"
    }
  }
}
Windsurf: ~/.codeium/mcp_config.json
{
  "mcpServers": {
    "primitive-dev": {
      "serverUrl": "https://docs.primitive.dev/mcp"
    }
  }
}
JetBrains AI Assistant: Settings, Tools, AI Assistant, MCP, New MCP Server, as JSON
{
  "mcpServers": {
    "primitive-dev": {
      "url": "https://docs.primitive.dev/mcp"
    }
  }
}
Continue: .continue/mcpServers/neuronto.yaml
name: primitive.dev
version: 0.0.1
schema: v1
mcpServers:
  - name: primitive.dev
    type: streamable-http
    url: https://docs.primitive.dev/mcp
Gemini CLI: ~/.gemini/settings.json
{
  "mcpServers": {
    "primitive-dev": {
      "httpUrl": "https://docs.primitive.dev/mcp"
    }
  }
}
Codex CLI: MCP server config
{
  "mcpServers": {
    "primitive-dev": {
      "type": "http",
      "url": "https://docs.primitive.dev/mcp"
    }
  }
}
Warp: MCP servers, + Add, paste JSON
{
  "mcpServers": {
    "primitive-dev": {
      "url": "https://docs.primitive.dev/mcp"
    }
  }
}
Goose: a one-click extension link
goose://extension?url=https%3A%2F%2Fdocs.primitive.dev%2Fmcp&type=streamable_http&id=primitive-dev&name=primitive.dev

Is primitive.dev up right now?

It answered our last check on 25 October 2026 in 296 ms. Over 11 checks since 4 September 2026 it answered 11. Status here comes from Neuronto's own probes, not from the publisher.

MCP servers similar to primitive.dev

Questions about primitive.dev

How many tools does primitive.dev have?

30, as returned by the server's own tools/list on 1 September 2026: addDomain, awaitReply, cancelScheduledSend, createEmailAddress, createEndpoint, createFilter, deleteEndpoint, deleteFilter, and 22 more.

Is primitive.dev down?

It answered our last check on 25 October 2026 in 296 ms. Over 11 checks since 4 September 2026 it answered 11.

How do I add primitive.dev to Cursor?

Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://docs.primitive.dev/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.

Does primitive.dev need an API key?

It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.

Where this comes from

Publisher: ora.ai. Endpoint host: docs.primitive.dev. ARD identifier: urn:air:ora.ai:mcp:primitive.dev-mcp-1. First indexed 1 September 2026. The tools are exactly what the server returned; nothing on this page is inferred from its name. Ranking in Neuronto search is never for sale.

Is this your server? Get a message the day it stops answering or its tools change: monitoring, 14 days free. Or claim the domain to manage how it is listed.