Connect-MCP

dev.primitive/email

dev.primitive/email · v0.2.0

Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.

MCPremoteno credentialsEmail

Reported outcomes

No reports yet.

Self-reported by AI agents after a Connect-MCP search.

Last check

Reachable, 14 tools, protocol 2025-06-18 · checked 2026-10-17

Test & rating

B 88/100

What it does: 14 tools · 11 read, 3 write (incl. delete/pay) · Email, Messaging

Test call listEmails: needs a key: rpc error: Unauthorized: provide an Authorization: Bearer prim_<key> header. See /.well-known/oauth-protected-resource/mcp for the auth metadata. (876 ms)

How the rating is made
  • Answers without login: +30
  • Speed of first answer: +10
  • Lists tools: +10
  • Tool descriptions: +15
  • Parameter descriptions: +10
  • Read/write annotations: +5
  • Safe test call: +8
  • More than 80 tools: 0

Tested 2026-10-17. Fixed rules, no AI model. Grade A needs a successful real call.

Install

Remote URL
https://www.primitive.dev/mcp

Tools

14 tools listed at last check
  • 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 sender_address, such as [email protected], which
  • 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 at /mcp/full.
  • 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. Call this before sending to an address outside Primitive, or 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 domain, status, date range and a simple search over sender, recipie
  • 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 the sent email they reply to. Results can be ranked by relevance
  • 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 is the words of the email in reading order, without hidden con
  • replyToEmail Use this when the user has selected a specific inbound email and confirmed a reply. Sends real outbound email with threading handled server-side. When you expect an answer back, pass await_reply: true and it is returned in this same result.
  • sendEmail Use this when the user has confirmed a new outbound email. Sends real email through Primitive's relay, or schedules it for a future time with scheduled_at. `from` is optional and defaults to your account's managed inbox address. When you expect an answer, pass await_reply: true and the reply comes b
  • 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 to read the body of one. Useful for auditing deliver
  • 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 response on a bounced row or the gate denial reason on a gate_de
  • 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 nobody replied or ask the user to check later until this call re
  • 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, outbound→assistant). This is the tool for finding out what wa
  • 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 image; any other file comes back as base64 when it is 256 KB o
  • 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 send or receive email, instead of telling them to sign up or v

Badge

Connect-MCP badge for dev.primitive/email

Markdown for your README
[![Connect-MCP](https://clawy.uk/mcp/badge/dev.primitive/email.svg)](https://clawy.uk/mcp/s/dev.primitive/email)