The email API built for AI agents
An MCP server your assistant connects to without a key in the prompt, a setup recipe it can install, and documentation it can read as Markdown. An agent can take an empty account to a verified domain and a sent email while you watch.
The whole configuration
{ "mcpServers": { "rasket": { "type": "http", "url": "https://api.rasket.com/mcp" } }}What Rasket gives an AI agent
Most APIs can be driven by an assistant if you hand it a key and hope. This one was designed for it: a permission boundary an agent cannot talk its way around, and documentation written to be read by a machine.
An MCP server, and no key in the prompt
A connected assistant never gets an API key. It signs in with OAuth and holds an access token for one team, carrying only the scopes you approved on the consent screen, which you can revoke from Connected apps at any moment.
The dangerous tools are simply absent
Nothing on the server can mint or revoke a key, change your plan or your team, delete a domain, a template, a broadcast or an automation, erase a contact, or lift a suppression. These are not tools that refuse. They are tools that do not exist, and no scope reaches them.
A setup skill and a rules file to install
The setup recipe is twelve steps, written once and read by four things: this site, a skill you drop into a project, a rules file for coding assistants, and the server's own first tool. An agent asks what it is allowed to do before it starts.
Every docs page is readable as Markdown
Add .md to any docs URL, or ask for the page with an Accept header of text/markdown. There is an index of every page for a model to read, the same pages concatenated into one file, and the whole API as an OpenAPI document.
Typed clients, generated from the API
The Node and Python clients are both published as rasket. Their request and response types come from the same document the API validates itself against, so what an agent writes against them is what the API accepts.
How an agent sets up an account
The recipe is twelve steps: a key, a domain, its DNS records, the first send, a webhook, and then templates, contacts, a broadcast and an automation.
- 1
Connect it, or install it
One command adds the MCP server to a client that speaks it, and a browser window asks you which team and which scopes. For an assistant working in a repository, the skill is a folder you copy in and the rules file is one file you save.
- 2
Ask what it is allowed to do
The first tool needs no scope and is always registered, whatever the client asked for. It returns the setup recipe with each step's call, and marks which steps this connection may run and which scopes are missing, so an agent asks to reconnect rather than stopping halfway.
- 3
Watch it in your logs
Every tool call is an ordinary API request in your logs, showing the tool it ran and the connected app that ran it. A send an assistant made is as traceable as one your own code made, and broadcasts and imports are written to the audit log by name.
The tools an assistant reaches for on the way through are named in the MCP guide, grouped so a client can load only what it needs: create_domain, verify_domain, create_webhook, create_template, send_email, get_email, and the rest.
Read the docs as Markdown, or as one file
Every documentation page has a Markdown twin at the same address, so an agent reads the page rather than the layout around it.
Machine-readable addresses
# any docs page, as Markdowncurl -H "Accept: text/markdown" https://rasket.com/docs/quickstartcurl https://rasket.com/docs/quickstart.md
# an index of every page, and every page in one filecurl https://rasket.com/llms.txtcurl https://rasket.com/llms-full.txt
# the whole API as one documentcurl https://rasket.com/openapi.jsonThe setup skill and the rules file are served as plain files too, under the same origin, so an agent can fetch the recipe rather than be told it. The crawlers that read documentation on behalf of an assistant are allowed by name in our robots file, because a site that wants agents to read its docs should say so to the agents that ask.
Why an agent can retry safely
An agent has to decide what to do about a failure without asking anyone, which means the failure has to be legible. Every error answers with the same three fields and a name from a closed list, so the thing to match on is the name and never the wording of the message. A validation failure carries one entry per offending field, which is what lets an assistant fix all of them at once instead of one per round trip. The error reference is the whole vocabulary on one page.
The other half is knowing whether something happened. A send carries an idempotency key, so repeating a request that timed out returns the original answer instead of sending a second email. That is what makes a retry a safe move rather than a gamble, for an agent and for your own code alike. The same rules apply to every send an assistant makes over the email API, and the results arrive on the same signed webhooks your application already listens to.
AI assist in the dashboard, off until you allow it
Three helpers sit in the product itself: subject line suggestions for a draft, a first draft of a body from a brief you write, and an explanation of what happened to one message. All three need AI assist to be configured for your account and stay off until a team admin switches them on, all three are reachable over the API as well as in the dashboard, and none of them is on the send path. A message is accepted, rendered and delivered exactly as it was before.
What leaves the platform is bounded and written down. A recipient's address is never sent: only the part after the at sign travels. A message body is never sent for a diagnosis. The content is not used to train models, and a model writes plausible text rather than verified fact, so nothing it produces is applied until you apply it. The AI assist guide lists exactly what each helper sends.
Questions about agents and MCP
Does the agent need my API key?
No. An MCP client signs in with OAuth and holds an access token issued for one team, carrying only the scopes you approved. The scopes decide which tools exist at all: a grant without permission to write domains is not a server that refuses to add one, it is a server with no such tool. You can revoke the grant from Connected apps whenever you like.
Can I read the docs as Markdown?
Yes. Add .md to any docs URL, or request the page itself with an Accept header of text/markdown. There is also an index of every page written for a model to read, the same pages concatenated into a single file, and the whole API served as an OpenAPI document.
Which assistants work?
Any client that speaks MCP over HTTP. The docs give the one-line command for Claude Code and the JSON form other clients take. For an assistant working inside a repository, the same recipe ships as a skill you copy into the project and as a rules file for Cursor and Windsurf.
What can an assistant never do?
Mint, change or revoke an API key. Change your plan, your billing or who is on your team. Delete a domain, a webhook, a template, a segment, a broadcast or an automation, or erase a contact. Remove a suppression. Regenerate a domain's signing keys or rotate a webhook's secret. There is no consent screen anywhere that could hand any of it over.
What stops an assistant from running away with it?
Four budgets counted per connected app, on top of your team's own rate limit: sixty tool calls a minute, one hundred sends an hour, three broadcasts an hour and five imports an hour. Over any of them the call answers with a retry-after in seconds, and every accepted broadcast or import is written to your audit log naming the app that made it.
Are the AI features in the dashboard on by default?
No. Subject line suggestions, drafts and the diagnosis of a message need AI assist to be configured for your account, and they stay off until a team admin turns them on. Where it is not configured the controls are switched off and say so, and nothing is charged. None of them is on the send path, nothing they produce is applied until you apply it, and a recipient's address is never sent to the AI provider: only the part after the at sign travels.
Hand it to your agent
Connect an assistant, approve the scopes you meant to approve, and let it take an empty account to a first send.