Skip to content
Primitive logo

Primitive MCP server

Which servers in the official MCP registry are Primitive's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-20

← Back to Primitive

Whose server it is
  • Registry namedev.primitive/emailverified in the MCP registry

The registry name sits under primitive.dev. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-20
  • Stateanswerschecked 2026-10-20
  • Tools14
  • Server calls itselfprimitive
  • Server version0.2.0
  • Protocol version2025-06-18

On 2026-10-20 the server answered initialize and tools/list without a sign-in. First answer in 207 ms.

Should an agent connect itNot proven either way yet
  • Whether its tools do the product's job has not been judged yet.
  • Checked on 2 of the 7 days it takes to judge reliability.

Once connected

  • sendEmail, createEmailAddress change data without a sign-in: anyone with the address can call them.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 2, the first on 2026-10-20
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 2 so far
  • Answeredmeasuring2 of the 7 daily checks it takes to print a share
  • Median first answer276 ms
  • Space in an agent's context≈ 7,193 tokensthe definitions of all its tools (14), which an agent carries on every turn
  • Tool definitionsA · 100 of 100
  • Typed results14 of 14 toolsdeclared outputSchema: results come typed, read once
  • Every tool passes all six checks.

Worth a look

  • Tools that change data, on a server that answers without a sign-in: sendEmail, createEmailAddress

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (30%), doing the product's job (25%), definitions (20%), context (10%) and use (15%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers14 tools · read 2026-10-20
  • getAccount

    Use 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…

  • getInboxStatus

    Use this when the user asks whether inbound email is ready or needs setup. Returns domains, routes, deployed Functions, and recent inbound activity. Adding or verifying a domain is done with the domain management tools, which are served…

  • getOutboundStatus

    What can I send FROM? Lists this account's verified outbound (sendable) domains plus any domains still pending DNS verification, with next actions. The result also carries can_send_to: the recipients this account is allowed to send to…

  • listEmails

    Browse the inbox in arrival order. Use this for "what arrived most recently" (newest first, a page at a time with cursor) and for waiting on new mail (pass since, plus wait to hold the request until something arrives). It filters by…

  • searchEmails

    Find particular inbound emails. Use this when you are looking for specific messages: a full-text query (q) over subject, body, sender and recipient, or structured filters on sender, recipient, subject, body, attachments, spam score, or…

  • getEmail

    Use this when you need to read one inbound email. Returns id, thread_id, received_at, from, to, subject, preheader, body_text and each attachment's filename, content type, size and part_index (read one with getEmailAttachment). body_text…

  • replyToEmail

    Reply to one inbound email, threaded server-side. This sends a real email immediately and it cannot be undone or recalled, so call it only after the user has confirmed the reply. When you expect an answer back, pass await_reply: true and…

  • sendEmail

    Send a new email. This sends a real email immediately (or at scheduled_at) and it cannot be undone or recalled, so call it only after the user has confirmed the message. `from` is optional and defaults to your account's managed inbox…

  • listSentEmails

    List outbound emails sent by this org, with cursor pagination and filters. Each row is id, thread_id, created_at, status, from, to, subject and a snippet, plus the error, SMTP response or gate denial when the send did not deliver. Use…

  • getSentEmail

    Read a single sent email by id: status, from, to, subject, body_text and its attachments, plus the error, SMTP response or gate denial when the send did not deliver. Use to inspect delivery details for a specific send, such as the SMTP…

  • awaitReply

    Wait for the threaded reply to a sent email. Use it when a send was made without await_reply, or returned reply_wait.status "no_reply_yet". With only the sent email's id it long-polls for up to 30 seconds by default. Do not report that…

  • getConversation

    Read a whole conversation, with message bodies. Pass the id of any inbound email and get every message of its thread, inbound and outbound, oldest first, each with its text, a direction (inbound/outbound) and a derived role (inbound→user…

  • getEmailAttachment

    Read ONE attachment of an email. A text attachment (plain text, CSV, JSON, XML, Markdown, calendar and similar) comes back as text; an HTML attachment comes back reduced to text; a PNG, JPEG, GIF or WebP image up to 1 MB comes back as an…

  • createEmailAddress

    Get 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…

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "email": {
      "type": "http",
      "url": "https://www.primitive.dev/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http primitive https://www.primitive.dev/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://www.primitive.dev/mcp as a custom connector in the settings.

OpenAPI spec

151 paths, read 2026-10-20. Open the spec ↗

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.