Send from a client · Published 2026-09-22 · Updated 2026-09-28 · AgentiSend
Send email from Cursor
To send email from Cursor, add the AgentiSend MCP server to Cursor with the config below, give it an API key that carries a budget, and ask Cursor to send.
To send email from Cursor, add the AgentiSend MCP server to .cursor/mcp.json in your project, give it an API key that carries a budget, and ask Cursor to send. Cursor's agent then calls the same API your own code calls. The ceiling is checked before the message is accepted, and a refusal comes back with a fix that names the next call.
The project file
Cursor reads this server from .cursor/mcp.json at the project root. The block is the same object the console install dialog copies, so the page and the dialog cannot drift apart.
{
"mcpServers": {
"agentisend": {
"url": "https://api.agentisend.com/mcp",
"headers": {
"Authorization": "Bearer as_YOUR_API_KEY_HERE"
}
}
}
}Paste into .cursor/mcp.json at your project root.
Swap as_YOUR_API_KEY_HERE for a key made for this agent alone. The file lives inside the project, so keep a copy holding a real key out of shared commits.
Or open the deeplink
The MCP guide carries a cursor:// install link built from the same object. Opening it makes Cursor offer to add the server. The link holds the placeholder, so replace it in Settings → MCP afterwards.
Pasted key or OAuth
The server accepts a bearer key or OAuth 2.1, and both reach the same tools under the same ceilings. This page uses the key. A Cursor connection approved over OAuth has no pasted key: it is listed by GET /oauth/grants, and a signed-in person ends it with DELETE /oauth/grants/{id}.
A first prompt
whoami is the read to make before anything else: the account and key, the scopes held, the tools they reach, and the budget left with its refill time. The simulator address costs nothing, reaches nobody and works before your domain is verified.
Use the agentisend MCP server. Call whoami and tell me the account, the key, the tools it can call and the budget left. Then use send_email to send a short note to success@simulator.agentisend.com, from any address, subject "Cursor check", and give me the message id. If a call is refused, quote its code and fix, and stop when retryable is false.The one refusal worth seeing in full
The key is sending_access, created with POST /api-keys, and its ceiling is set with PATCH /limits/keys/{id}. Only a person, in the console, can raise it. A send past that ceiling answers:
{
"error": {
"code": "agent_budget_exceeded",
"message": "Key budget for the current period is exhausted.",
"fix": "Wait for the period to reset. get_agent_budget and GET /limits/keys/:id both say when. Raising a budget is a person's decision, made in the console; a key cannot raise its own.",
"docs_url": "https://agentisend.com/docs/errors",
"retryable": false
}
}retryable is false, so Cursor's agent should stop instead of spinning. A held send answers approval_required and a paused key answers kill_switch_active, with the same fields.
The same limits from every client
Budgets, loop detection, approvals and the kill switch behave identically whichever client holds the key, so they are not repeated here. The guardrails checklist maps each item people are told to hand-write onto the request that already enforces it, and Email for AI agents names every control with its endpoint.
Next
- Email for AI agents names every control and the request that calls it.
- Email guardrails maps the usual checklist onto these same fields.
- The MCP guide has the install line for every client, including Cursor.