Skip to content

Send from a client · Published 2026-09-22 · Updated 2026-09-28 · AgentiSend

Send email from Windsurf

To send email from Windsurf, add the AgentiSend MCP server to Windsurf with the config below, give it an API key that carries a budget, and ask Windsurf to send.

To send email from Windsurf, add the AgentiSend MCP server to Windsurf's mcp_config.json, give it an API key that carries a budget, refresh the MCP servers panel, and ask Windsurf to send. Windsurf then calls the same API your own code calls. Each send is checked against the key's ceiling before it is accepted, and a refusal names the next call in its fix.

A file in your home directory

Windsurf keeps its MCP servers in ~/.codeium/windsurf/mcp_config.json. That path sits under your home directory, outside any repository, so a real key saved there is not something a git push can carry off. The block is the object the console install dialog copies.

{
  "mcpServers": {
    "agentisend": {
      "serverUrl": "https://api.agentisend.com/mcp",
      "headers": {
        "Authorization": "Bearer as_YOUR_API_KEY_HERE"
      }
    }
  }
}
Windsurf — mcp_config.json

Paste into ~/.codeium/windsurf/mcp_config.json, then refresh the MCP servers panel.

Put a key made for Windsurf alone where the placeholder is, save the file, and refresh the MCP servers panel so Windsurf reads it again.

The field that differs

Windsurf names the address serverUrl. Cursor, Claude Code and Claude Desktop call the same field url, and VS Code nests everything under servers. The header is identical everywhere: Authorization, then Bearer and the key. So copy this block rather than adapting one from another client's page; the field name is the one line that would be wrong.

Watch a bounce before a real one happens

The simulator's bounce address fails on purpose. The message moves to bounced, events and webhooks fire as they would for a real bounce, and nothing is added to your suppression list or counted against your standing. explain_email then returns the verdict and the steps to take, which is the call you want on hand the first time a real address bounces.

Use the agentisend MCP server. Call whoami and list the tools this key can reach. Send a test from any address to bounce@simulator.agentisend.com, then read get_email_events for that id until the bounce appears. Call explain_email on it and show me the verdict, the evidence and each suggested step.

GET /emails/{id}/events is the same timeline over REST, and GET /emails/{id}/explain is the same verdict.

Its key and its ceiling

The key Windsurf holds is sending_access, from POST /api-keys, capped with PATCH /limits/keys/{id} by a person. Three refusals end a run rather than delay it: agent_budget_exceeded, approval_required and kill_switch_active. Each carries retryable: false and a fix, and none of them changes because the agent asked again.

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