agentisend

MCP serverCommunication

Transactional email API for AI agents: verified domains, a per-sender budget, and a kill switch.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use agentisend

From the project's README

As published by fortuneflick/agentisend-claude-plugin in README.md.

AgentiSend for AI agents

AgentiSend is a transactional email API for AI agents: send through verified domains, with a budget each sender cannot exceed and a kill switch a person can flip. The hosted MCP server at https://api.agentisend.com/mcp exposes 81 tools (43 on tools/list; the rest via list_more_tools). A send is one message or a batch of up to 500 items with per-item results. preflight_email runs every gate a real send runs, sends nothing, and costs nothing. Every 4xx returns code, message, and fix. There is no tool for unsolicited mail. Auth is a bearer API key or OAuth 2.1 with dynamic client registration. Starter prompts: "Send this receipt to the customer." "Preflight this send and tell me what would stop it." "What can I spend today?"

This repository ships the skill (SKILL.md) and the plugin manifests for Claude Code, Cursor and Grok Build. The MCP server itself is hosted at https://api.agentisend.com/mcp.

Install

Claude Code — the plugin brings the server and the skill together:

/plugin marketplace add fortuneflick/agentisend-claude-plugin
/plugin install agentisend@agentisend

Every line below carries the same endpoint (https://api.agentisend.com/mcp) and a placeholder key — replace as_YOUR_API_KEY_HERE with a key from the console.

Cursor

cursor://anysphere.cursor-deeplink/mcp/install?name=agentisend&config=eyJ1cmwiOiJodHRwczovL2FwaS5hZ2VudGlzZW5kLmNvbS9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgYXNfWU9VUl9BUElfS0VZX0hFUkUifX0=

Open this link and Cursor offers to add the server. Replace the placeholder key in Settings → MCP afterwards, or paste the same object into .cursor/mcp.json.

Claude Code

claude mcp add --transport http agentisend https://api.agentisend.com/mcp \
  --header "Authorization: Bearer as_YOUR_API_KEY_HERE"

Or install the plugin, which brings the server and the sending skill together: /plugin marketplace add fortuneflick/agentisend-claude-plugin then /plugin install agentisend@agentisend.

Codex CLI

codex mcp add agentisend --url https://api.agentisend.com/mcp \
  --bearer-token-env-var AGENTISEND_API_KEY

The token stays in your environment; Codex writes only the variable name to ~/.codex/config.toml.

Gemini CLI

gemini mcp add --transport http \
  --header "Authorization: Bearer as_YOUR_API_KEY_HERE" \
  agentisend https://api.agentisend.com/mcp

Check it with gemini mcp list.

VS Code

code --add-mcp '{"name":"agentisend","type":"http","url":"https://api.agentisend.com/mcp","headers":{"Authorization":"Bearer as_YOUR_API_KEY_HERE"}}'

Or write the same server into .vscode/mcp.json under servers.

Windsurf

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

Goes in ~/.codeium/windsurf/mcp_config.json, then refresh the MCP panel.

OpenCode

{
  "mcp": {
    "agentisend": {
      "type": "remote",
      "url": "https://api.agentisend.com/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:AGENTISEND_API_KEY}"
      }
    }
  }
}

Goes in opencode.json; the key is read from your environment rather than written to the file.

Anything else that speaks stdio

AGENTISEND_API_KEY=as_YOUR_API_KEY_HERE npx -y @agentisend/mcp-server

The local launcher proxies to the same server, so the tool list, the budget and the refusals are identical.

Cursor: open Customize in the sidebar, find AgentiSend, and select Install. For local development, clone this repository and symlink it into your Cursor plugins directory (ln -s "$PWD" ~/.cursor/plugins/agentisend), then reload Cursor — the manifest is .cursor-plugin/plugin.json.

Grok Build: run /marketplace and pick AgentiSend, or add this repository as a marketplace source. Grok reads the server out of the plugin manifest, so .grok-plugin/plugin.json carries it under mcpServers and one install brings the tools and the skill together.

Claude Code reads .mcp.json at the repository root instead, so /plugin install brings both as well — after it, claude mcp list shows the server as plugin:agentisend:agentisend. If you already have an AgentiSend connector, remove one of the two rather than running both. Cursor reads neither file: the Cursor plugin installs the skill alone, and the deeplink above adds the server.

Any agent (skill only):

npx skills add fortuneflick/agentisend-claude-plugin

What the agent can do

  • Send one message or a batch, schedule a send, cancel or reschedule one that has not gone out, and replay a retry safely with an idempotency key.
  • Preflight a send for free: the same validation, domain, suppression, budget, loop, trust and content checks the real send runs, with nothing sent.
  • Add a sending domain, read the DNS records it needs, and verify it.
  • Read what it may spend, set a ceiling, and check whether it can send now.
  • Ask a person to approve a risky send and read back what they decided.
  • Explain a message after the fact: the verdict, the evidence, and the remediation as callable steps.

Every tool, the scopes it needs and the ceilings it counts against are listed at https://agentisend.com/docs/guides/mcp.

What the agent cannot do

  • It cannot raise its own budget, lift its own kill switch, or approve its own held send. An approval you can grant yourself is not an approval.
  • It cannot read a message it was stopped from sending — it sees shapes: recipient counts, whether there is a body.
  • It cannot send unsolicited mail. There is no feature for it, at any tier.

Examples

examples/ carries one runnable directory per integration — Next.js App Router, Supabase's Send Email Hook, Better Auth, Auth.js, Hono, Express, a SvelteKit form action, and an agent with a daily ceiling that refuses the fourth identical send. Each one is executed against a real API server on every build of the platform, so an example that stops working fails that build rather than your first send.

Security

  • No executable code in the install path. The skill is Markdown and the manifests are JSON. Nothing here runs, downloads a binary, or installs anything beyond copying those files into your agent.
  • One runtime endpoint: https://api.agentisend.com/mcp over HTTPS. Every connect command above names that address; the tools run there.
  • Credentials: a bearer API key (as_…) minted at https://console.agentisend.com, or OAuth 2.1 sign-in — both reach the same tools with the same ceilings. This repository contains no keys and never asks for one in chat. The Claude Code manifest reads AGENTISEND_API_KEY from your environment rather than writing it to a config file.
  • Optional local launcher: clients that only speak stdio run the published npm package @agentisend/mcp-server, which proxies to that same endpoint.
  • No telemetry. Nothing here phones home.

Links

License

MIT — see LICENSE.

Advanced
Delivery
agentisend MCP server → your ahel gateway (mcp.ahel.ai) → every connected AI client.
Catalog kind
mcp-server
Gateway key
io-github-fortuneflick-agentisend
Source
github.com/fortuneflick/agentisend-claude-plugin
Hosted endpoint
https://api.agentisend.com/mcp