email as the communication layer it was meant to be. a typed API for sending, receiving, and running hosted agents, on infrastructure built for it from the ground up.
⣠⣤⣤⣿⡛⠛⠛⠛⠛⠛⣿⣧⣤⡄
⢀⣰⡶⠾⠛⠛ ⢷⡆ ⠈⠛⢻⣷⣶⣆⡀
⢰⣾⠉ ⠸⢷⡆ ⢀⣸⡇⠈⠹⢷⣆⡀
⣀⣶⠶⠶⣶⣀⡀ ⢸⡇ ⢸⡏⠁ ⠈⠹⢷⣀
⢠⣿⠉ ⠉⠹⠿⣧⣤ ⠘⠃ ⣤⠟⠁ ⠈⣿⣤
⢰⣤⣬⣅⣀ ⠛⡇ ⣀⣠⣤⣼⡟⠛⠿⣿⣤⣤⣀ ⢀⣠⡤⠿⣤
⢠⣤⣄⣉⠉⠹⠶⢦⣤⡀ ⢀⣶⠛⠛ ⠛⠻⣆⡀⢀⣀⣀⡰⠾⠏⠁ ⣿
⣈⣉⠉⠉ ⠛⠳⠆⢠⣿⠋ ⣰⡶⠶⢶⣆ ⠹⣷⠈⠉⠉⠁ ⣿
⠛⠛⠻⠿⠿⣦⣤⡄⣀⣀ ⢠⡼⠇ ⣶⠉⠁⣀⠈⢹ ⣿ ⣿
⢰⣶⣦⣤⣤⣤⡄ ⠉⠉⠃⢸⣷⠶⠏⠉⠉ ⠿⣄⡀⠛⠛⠋ ⢀⣰⡟⢀⣆⣀ ⣤⠿
⣤⡄ ⣀⣀⣀⣤⣤⣤⡄⢸⣿ ⢠⡄⠹⢿⣤⣤⣤⣼⠟⠃ ⠉⠛⠛⠛⣿⠛
⠰⠿⠿⠟⠛⠛⠉⠉ ⠿⣆⡀⣀⣶⠛ ⣠⠄ ⠿⣤ ⢀⣶⠿
⠙⣷⣿ ⣿ ⠙⢧⣤ ⣀⣰⠾⠉
⠛⠿⢦⣄⣀⣀⣿⡀ ⣀⣀⡶⠶⠏⠉
⠈⠉⠉⠹⠿⠿⠿⠿⠿⠏⠉⠁ ⣠⣤⣤⣿⡛⠛⠛⠛⠛⠛⣿⣧⣤⡄
⢀⣰⡶⠾⠛⠛ ⢷⡆ ⠈⠛⢻⣷⣶⣆⡀
⢰⣾⠉ ⠸⢷⡆ ⢀⣸⡇⠈⠹⢷⣆⡀
⣀⣶⠶⠶⣶⣀⡀ ⢸⡇ ⢸⡏⠁ ⠈⠹⢷⣀
⢠⣿⠉ ⠉⠹⠿⣧⣤ ⠘⠃ ⣤⠟⠁ ⠈⣿⣤
⢰⣤⣬⣅⣀ ⠛⡇ ⣀⣠⣤⣼⡟⠛⠿⣿⣤⣤⣀ ⢀⣠⡤⠿⣤
⢠⣤⣄⣉⠉⠹⠶⢦⣤⡀ ⢀⣶⠛⠛ ⠛⠻⣆⡀⢀⣀⣀⡰⠾⠏⠁ ⣿
⣈⣉⠉⠉ ⠛⠳⠆⢠⣿⠋ ⣰⡶⠶⢶⣆ ⠹⣷⠈⠉⠉⠁ ⣿
⠛⠛⠻⠿⠿⣦⣤⡄⣀⣀ ⢠⡼⠇ ⣶⠉⠁⣀⠈⢹ ⣿ ⣿
⢰⣶⣦⣤⣤⣤⡄ ⠉⠉⠃⢸⣷⠶⠏⠉⠉ ⠿⣄⡀⠛⠛⠋ ⢀⣰⡟⢀⣆⣀ ⣤⠿
⣤⡄ ⣀⣀⣀⣤⣤⣤⡄⢸⣿ ⢠⡄⠹⢿⣤⣤⣤⣼⠟⠃ ⠉⠛⠛⠛⣿⠛
⠰⠿⠿⠟⠛⠛⠉⠉ ⠿⣆⡀⣀⣶⠛ ⣠⠄ ⠿⣤ ⢀⣶⠿
⠙⣷⣿ ⣿ ⠙⢧⣤ ⣀⣰⠾⠉
⠛⠿⢦⣄⣀⣀⣿⡀ ⣀⣀⡶⠶⠏⠉
⠈⠉⠉⠹⠿⠿⠿⠿⠿⠏⠉⠁ 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/chat$ primitive chat dev_help@agent.primitive.email '<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 auth.md.
- specs
- OpenAPI YAML and OpenAPI JSON.
send and receive
use the REST API, SDKs, or CLI 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.