Agent Email List — Free SMTP Relay for AI Agents

Free transactional email + SMTP relay. Agents self-signup, no API key needed to start.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
83%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~879Tokens (tool definitions)
~670 BTypical response size
Moderate attention impact (0.69% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "free-transactional-email-smtp-relay": {
      "url": "https://ai.agentemaillist.com/mcp"
    }
  }
}

Remote endpoints

https://ai.agentemaillist.com/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡create_account(name, password, email)

Create an account on this email service and get an API key back. Needs no existing credentials, so an agent with nothing can call this first. The key is returned once and never again. Free, with no card and no trial clock.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Optional display name."
    },
    "password": {
      "type": "string",
      "description": "At least 12 characters. Needed only to sign in to the web console."
    },
    "email": {
      "type": "string",
      "description": "A contact address for the account."
    }
  },
  "required": [
    "email",
    "password"
  ]
}
🟢list_domains

List the sending domains on this account, with their verification state and how much of today's sending allowance each has left.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟡add_domain(name)

Register a domain to send from, and get the DNS records that must be published before it will work. Publishing DNS usually needs a human with registrar access, so start this early. The domain cannot send until verify_domain succeeds.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "A bare domain such as mail.yourcompany.com. A subdomain is better than the root."
    }
  },
  "required": [
    "name"
  ]
}
🟢verify_domain(name)

Re-read DNS now and mark the domain active if its SPF and DKIM records are visible. DNS takes minutes to hours to propagate; poll this every few minutes, not every few seconds.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ]
}
🟡send_email(domain, text, from, to, html, ...)

Send a message. The domain must be verified and the from address must belong to it. Counts one against the daily allowance per recipient. Set test_mode true to run the whole pipeline, including content screening, without sending anything and without spending allowance — do that first when building.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "The verified domain to send from."
    },
    "text": {
      "type": "string",
      "description": "Plain text body."
    },
    "from": {
      "type": "string",
      "description": "An address at that domain."
    },
    "to": {
      "type": "string",
      "description": "One address, or several separated by commas."
    },
    "html": {
      "type": "string",
      "description": "Optional HTML body."
    },
    "subject": {
      "type": "string"
    },
    "test_mode": {
      "type": "boolean",
      "description": "Accept and screen the message but send nothing. Defaults to false."
    }
  },
  "required": [
    "domain",
    "from",
    "to"
  ]
}
🟡get_sending_limits(domain)

How much this domain may send today and what graduates it to the next rung, plus this account's standing: how many domains it may hold and whether sending is paused. New domains start at a low daily cap and climb as they prove themselves, so check this before planning a bulk send rather than discovering it part-way. Call it with no domain for the account-level answer alone.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Optional. Omit for account limits without a domain's allowance."
    }
  }
}
🟢list_messages(domain, limit, direction, folder)

Recent messages for a domain, sent and received. Use direction to filter, and folder to separate inbox from spam on received mail.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "description": "Up to 100. Defaults to 25."
    },
    "direction": {
      "type": "string",
      "enum": [
        "outbound",
        "inbound"
      ]
    },
    "folder": {
      "type": "string",
      "enum": [
        "inbox",
        "spam"
      ]
    }
  },
  "required": [
    "domain"
  ]
}
🟡get_delivery_events(domain, limit, event, recipient)

What happened to messages on this domain: accepted, delivered, failed, and so on. A send returning success means queued, not delivered; this is where the delivery outcome actually appears.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "limit": {
      "type": "integer"
    },
    "event": {
      "type": "string",
      "description": "Filter to one type, such as delivered or failed."
    },
    "recipient": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools