primitive gives agents a managed email surface: send mail through an authenticated API, receive mail at managed addresses, and run hosted functions on inbound messages.
⣠⣤⣤⣿⡛⠛⠛⠛⠛⠛⣿⣧⣤⡄
⢀⣰⡶⠾⠛⠛ ⢷⡆ ⠈⠛⢻⣷⣶⣆⡀
⢰⣾⠉ ⠸⢷⡆ ⢀⣸⡇⠈⠹⢷⣆⡀
⣀⣶⠶⠶⣶⣀⡀ ⢸⡇ ⢸⡏⠁ ⠈⠹⢷⣀
⢠⣿⠉ ⠉⠹⠿⣧⣤ ⠘⠃ ⣤⠟⠁ ⠈⣿⣤
⢰⣤⣬⣅⣀ ⠛⡇ ⣀⣠⣤⣼⡟⠛⠿⣿⣤⣤⣀ ⢀⣠⡤⠿⣤
⢠⣤⣄⣉⠉⠹⠶⢦⣤⡀ ⢀⣶⠛⠛ ⠛⠻⣆⡀⢀⣀⣀⡰⠾⠏⠁ ⣿
⣈⣉⠉⠉ ⠛⠳⠆⢠⣿⠋ ⣰⡶⠶⢶⣆ ⠹⣷⠈⠉⠉⠁ ⣿
⠛⠛⠻⠿⠿⣦⣤⡄⣀⣀ ⢠⡼⠇ ⣶⠉⠁⣀⠈⢹ ⣿ ⣿
⢰⣶⣦⣤⣤⣤⡄ ⠉⠉⠃⢸⣷⠶⠏⠉⠉ ⠿⣄⡀⠛⠛⠋ ⢀⣰⡟⢀⣆⣀ ⣤⠿
⣤⡄ ⣀⣀⣀⣤⣤⣤⡄⢸⣿ ⢠⡄⠹⢿⣤⣤⣤⣼⠟⠃ ⠉⠛⠛⠛⣿⠛
⠰⠿⠿⠟⠛⠛⠉⠉ ⠿⣆⡀⣀⣶⠛ ⣠⠄ ⠿⣤ ⢀⣶⠿
⠙⣷⣿ ⣿ ⠙⢧⣤ ⣀⣰⠾⠉
⠛⠿⢦⣄⣀⣀⣿⡀ ⣀⣀⡶⠶⠏⠉
⠈⠉⠉⠹⠿⠿⠿⠿⠿⠏⠉⠁ ⣠⣤⣤⣿⡛⠛⠛⠛⠛⠛⣿⣧⣤⡄
⢀⣰⡶⠾⠛⠛ ⢷⡆ ⠈⠛⢻⣷⣶⣆⡀
⢰⣾⠉ ⠸⢷⡆ ⢀⣸⡇⠈⠹⢷⣆⡀
⣀⣶⠶⠶⣶⣀⡀ ⢸⡇ ⢸⡏⠁ ⠈⠹⢷⣀
⢠⣿⠉ ⠉⠹⠿⣧⣤ ⠘⠃ ⣤⠟⠁ ⠈⣿⣤
⢰⣤⣬⣅⣀ ⠛⡇ ⣀⣠⣤⣼⡟⠛⠿⣿⣤⣤⣀ ⢀⣠⡤⠿⣤
⢠⣤⣄⣉⠉⠹⠶⢦⣤⡀ ⢀⣶⠛⠛ ⠛⠻⣆⡀⢀⣀⣀⡰⠾⠏⠁ ⣿
⣈⣉⠉⠉ ⠛⠳⠆⢠⣿⠋ ⣰⡶⠶⢶⣆ ⠹⣷⠈⠉⠉⠁ ⣿
⠛⠛⠻⠿⠿⣦⣤⡄⣀⣀ ⢠⡼⠇ ⣶⠉⠁⣀⠈⢹ ⣿ ⣿
⢰⣶⣦⣤⣤⣤⡄ ⠉⠉⠃⢸⣷⠶⠏⠉⠉ ⠿⣄⡀⠛⠛⠋ ⢀⣰⡟⢀⣆⣀ ⣤⠿
⣤⡄ ⣀⣀⣀⣤⣤⣤⡄⢸⣿ ⢠⡄⠹⢿⣤⣤⣤⣼⠟⠃ ⠉⠛⠛⠛⣿⠛
⠰⠿⠿⠟⠛⠛⠉⠉ ⠿⣆⡀⣀⣶⠛ ⣠⠄ ⠿⣤ ⢀⣶⠿
⠙⣷⣿ ⣿ ⠙⢧⣤ ⣀⣰⠾⠉
⠛⠿⢦⣄⣀⣀⣿⡀ ⣀⣀⡶⠶⠏⠉
⠈⠉⠉⠹⠿⠿⠿⠿⠿⠏⠉⠁ email for any agent, with complete control
drop one verb into any CLI agent. it sends mail, waits for the threaded reply, and hands the response back.
$ npx skills add primitivedotdev/skills$ primitive chat dev@agent.primitive.dev '<literally anything>' ⣠⣤⣤⣿⡛⠛⠛⠛⠛⠛⣿⣧⣤⡄
⢀⣰⡶⠾⠛⠛ ⢷⡆ ⠈⠛⢻⣷⣶⣆⡀
⢰⣾⠉ ⠸⢷⡆ ⢀⣸⡇⠈⠹⢷⣆⡀
⣀⣶⠶⠶⣶⣀⡀ ⢸⡇ ⢸⡏⠁ ⠈⠹⢷⣀
⢠⣿⠉ ⠉⠹⠿⣧⣤ ⠘⠃ ⣤⠟⠁ ⠈⣿⣤
⢰⣤⣬⣅⣀ ⠛⡇ ⣀⣠⣤⣼⡟⠛⠿⣿⣤⣤⣀ ⢀⣠⡤⠿⣤
⢠⣤⣄⣉⠉⠹⠶⢦⣤⡀ ⢀⣶⠛⠛ ⠛⠻⣆⡀⢀⣀⣀⡰⠾⠏⠁ ⣿
⣈⣉⠉⠉ ⠛⠳⠆⢠⣿⠋ ⣰⡶⠶⢶⣆ ⠹⣷⠈⠉⠉⠁ ⣿
⠛⠛⠻⠿⠿⣦⣤⡄⣀⣀ ⢠⡼⠇ ⣶⠉⠁⣀⠈⢹ ⣿ ⣿
⢰⣶⣦⣤⣤⣤⡄ ⠉⠉⠃⢸⣷⠶⠏⠉⠉ ⠿⣄⡀⠛⠛⠋ ⢀⣰⡟⢀⣆⣀ ⣤⠿
⣤⡄ ⣀⣀⣀⣤⣤⣤⡄⢸⣿ ⢠⡄⠹⢿⣤⣤⣤⣼⠟⠃ ⠉⠛⠛⠛⣿⠛
⠰⠿⠿⠟⠛⠛⠉⠉ ⠿⣆⡀⣀⣶⠛ ⣠⠄ ⠿⣤ ⢀⣶⠿
⠙⣷⣿ ⣿ ⠙⢧⣤ ⣀⣰⠾⠉
⠛⠿⢦⣄⣀⣀⣿⡀ ⣀⣀⡶⠶⠏⠉
⠈⠉⠉⠹⠿⠿⠿⠿⠿⠏⠉⠁ simply the best transactional email infra
we parse attachments, verify DKIM and SPF, decode SMTP envelopes, split headers. you don't have to own any infra just to work with email anymore.
{ "event": "email.received", "from": "sender@example.com", "to": "agent@you.primitive.email", "subject": "Hello from Primitive", "body": "Quick question about..." }
full synchronous outbound. we open SMTP straight to the receiving server, so the response code and their queue ID come back in your same call. a true developer primitive.
{ "id": "e3a8f9b2-4d1c-4b71-9c5a-2f8b3e1d7a4c", "status": "delivered", "accepted": ["alice@customer.com"], "queue_id": "47B2D7A1F0", "smtp_response_code": 250, "smtp_response_text": "2.0.0 Ok: queued as 47B2D7A1F0" }
⣠⣤⣤⣿⡛⠛⠛⠛⠛⠛⣿⣧⣤⡄
⢀⣰⡶⠾⠛⠛ ⢷⡆ ⠈⠛⢻⣷⣶⣆⡀
⢰⣾⠉ ⠸⢷⡆ ⢀⣸⡇⠈⠹⢷⣆⡀
⣀⣶⠶⠶⣶⣀⡀ ⢸⡇ ⢸⡏⠁ ⠈⠹⢷⣀
⢠⣿⠉ ⠉⠹⠿⣧⣤ ⠘⠃ ⣤⠟⠁ ⠈⣿⣤
⢰⣤⣬⣅⣀ ⠛⡇ ⣀⣠⣤⣼⡟⠛⠿⣿⣤⣤⣀ ⢀⣠⡤⠿⣤
⢠⣤⣄⣉⠉⠹⠶⢦⣤⡀ ⢀⣶⠛⠛ ⠛⠻⣆⡀⢀⣀⣀⡰⠾⠏⠁ ⣿
⣈⣉⠉⠉ ⠛⠳⠆⢠⣿⠋ ⣰⡶⠶⢶⣆ ⠹⣷⠈⠉⠉⠁ ⣿
⠛⠛⠻⠿⠿⣦⣤⡄⣀⣀ ⢠⡼⠇ ⣶⠉⠁⣀⠈⢹ ⣿ ⣿
⢰⣶⣦⣤⣤⣤⡄ ⠉⠉⠃⢸⣷⠶⠏⠉⠉ ⠿⣄⡀⠛⠛⠋ ⢀⣰⡟⢀⣆⣀ ⣤⠿
⣤⡄ ⣀⣀⣀⣤⣤⣤⡄⢸⣿ ⢠⡄⠹⢿⣤⣤⣤⣼⠟⠃ ⠉⠛⠛⠛⣿⠛
⠰⠿⠿⠟⠛⠛⠉⠉ ⠿⣆⡀⣀⣶⠛ ⣠⠄ ⠿⣤ ⢀⣶⠿
⠙⣷⣿ ⣿ ⠙⢧⣤ ⣀⣰⠾⠉
⠛⠿⢦⣄⣀⣀⣿⡀ ⣀⣀⡶⠶⠏⠉
⠈⠉⠉⠹⠿⠿⠿⠿⠿⠏⠉⠁ fully hosted agents
write a handler. deploy with one command. primitive runs it on every inbound email, no servers to manage.
$ primitive functions:init my-fn$ primitive functions:deploy --name my-fn --source .built on our own infra
every hop in the email pipeline runs on primitive-owned servers, end-to-end.
email infrastructure built for agents
primitive gives agents a managed email surface: send mail through an authenticated API, receive mail at managed addresses, and run hosted functions on inbound messages. the public docs include markdown mirrors, OpenAPI specs, OAuth discovery metadata, and an auth walkthrough so agents can integrate without scraping the dashboard.
- API base
https://api.primitive.dev/v1- auth
- bearer API keys and OAuth access tokens. see the Primitive authentication docs or auth.md.
- specs
- Primitive API reference, OpenAPI YAML and OpenAPI JSON.
send and receive
use the REST API, SDKs, CLI, or MCP server for sending. route inbound mail to webhooks or hosted functions.
managed addresses
start with a managed *.primitive.email address, then add custom domains when DNS control matters.
agent-readable docs
fetch index.md, llms.txt, or llms-full.txt for markdown context.
- What is Primitive?
- Primitive is email infrastructure for AI agents. It sends and receives email via a REST API, hosts an agent at a managed *.primitive.email subdomain, and reaches any address with the one-line primitive chat verb.
- How do agents authenticate?
- Every API request carries Authorization: Bearer prim_<api_key> or Authorization: Bearer prim_oat_<oauth_access_token>. Discovery metadata is published at /.well-known/oauth-authorization-server and /.well-known/oauth-protected-resource; the full walkthrough is at https://www.primitive.dev/auth.md.
- Does Primitive have an MCP server?
- Yes. The hosted Model Context Protocol server is at https://www.primitive.dev/mcp (Streamable HTTP, stateless). Discovery at /.well-known/mcp and full server card at /.well-known/mcp/server-card.json. Seven tools: sendEmail, replyToEmail, listEmails, searchEmails, getEmail, getInboxStatus, getAccount.
- What does Primitive cost?
- Primitive has three usage-based tiers: a free Developer tier ($0/mo with $5/mo of usage credits), Power ($13/mo with $13/mo of credits), and Platinum ($299/mo with $299/mo of credits). Inbound and outbound email, storage, function invocations, and function runtime are metered against your monthly credits, and usage beyond them is billed. Full breakdown at https://www.primitive.dev/pricing.md.
- Is Primitive open source?
- The SDKs and CLI are public at https://github.com/primitivedotdev/sdks (Node, Python, Go, all generated from one OpenAPI spec). The hosted services run on Primitive infrastructure.
support and reply agents
Give an agent a managed address, run a JavaScript handler on every inbound message, and reply on the same thread with a single HTTP call — no SMTP credentials and no mailbox to poll.
agent-to-agent contact
Reach any address — a person, a vendor, or another agent — with the primitive chat verb, which sends a message and waits for the threaded reply in a single round trip.
transactional and inbound email
Send transactional mail from your own domain with managed SPF, DKIM, DMARC, and TLS reporting, and route inbound mail to webhooks or hosted functions through one REST API.