email59

Send transactional email from AI agents: sign up by email code, no domain or DNS setup.

我该使用它吗

质量与安全性

A
描述质量
94%
模式完整度
79%
命名质量
96%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(2)

  • LOWTool 'get_pricing' description lacks action verb在 get_pricing 中
  • LOWTool 'order_status' description lacks action verb在 order_status 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~3,132token 数(工具定义)
~793 B典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.45%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "email59": {
      "url": "https://email59.com/v1/mcp"
    }
  }
}

远程端点

https://email59.com/v1/mcpstreamable-http

它能做什么

工具清单

工具(20)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟡auth(email, otp, api_key)

Sign up or sign in to email59. Pass email to have a 6-digit code emailed, then call again with email and otp to get a session key (a new email is signed up with 200 free emails a day). Or pass api_key to swap an API key for a session key. Send the key as the HTTP header 'Authorization: Bearer <session_key>'.

输入模式

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Email address."
    },
    "otp": {
      "type": "string",
      "description": "The 6-digit code from the email."
    },
    "api_key": {
      "type": "string",
      "description": "An e59_live_ API key, instead of email."
    }
  }
}
🟢get_pricing

Free daily emails (renewed every day), email credits per dollar, and the packs on sale. No sign-in needed.

输入模式

{
  "type": "object",
  "properties": {}
}
🟢get_account

The signed-in account: email, daily_limit, sent_today, remaining_today, credits_remaining, resets_at.

输入模式

{
  "type": "object",
  "properties": {}
}
🔴update_account(name, company, brand)

Set the name, company or brand (the look of every email the account sends) on the account.

输入模式

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "company": {
      "type": "string"
    },
    "brand": {
      "type": "object",
      "description": "name (header band), color (#rrggbb), logo_url and url (https), address (footer line). An empty name clears it.",
      "properties": {
        "name": {
          "type": "string"
        },
        "color": {
          "type": "string"
        },
        "logo_url": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "address": {
          "type": "string"
        }
      }
    }
  }
}
🟡send_email(from, to, subject, text, html, ...)

Send one email to one recipient: transactional (receipt, code, alert) or marketing (category). It goes out as HTML in a branded template with a text part; give text, html or both. Uses 1 email of today's allowance. Many recipients at once: send_campaign.

输入模式

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "description": "Name before the @ (e.g. hello). The domain is always email59.com. Optional."
    },
    "to": {
      "type": "string",
      "description": "Recipient address."
    },
    "subject": {
      "type": "string"
    },
    "text": {
      "type": "string",
      "description": "Plain-text body. Give text, html or both."
    },
    "html": {
      "type": "string",
      "description": "HTML body."
    },
    "reply_to": {
      "type": "string",
      "description": "Optional. One address of your own (not at email59.com) where answers should go. Without it the email says replies are not received."
    },
    "category": {
      "type": "string",
      "enum": [
        "transactional",
        "marketing"
      ],
      "description": "Default transactional. marketing: always has the unsubscribe link and skips role addresses and people who unsubscribed."
    },
    "list_id": {
      "type": "string",
      "description": "Marketing only: your name for the audience."
    },
    "template": {
      "type": "string",
      "enum": [
        "basic",
        "code",
        "notice",
        "report",
        "letter"
      ],
      "description": "Layout. basic (default), code (one-time code, give code), notice (heading and one button), report (wide tables), letter (personal)."
    },
    "heading": {
      "type": "string"
    },
    "preheader": {
      "type": "string",
      "description": "Preview text shown after the subject."
    },
    "button_text": {
      "type": "string"
    },
    "button_url": {
      "type": "string"
    },
    "code": {
      "type": "string",
      "description": "The code for template code."
    },
    "brand": {
      "type": "object",
      "description": "This email's look; the account's brand otherwise.",
      "properties": {
        "name": {
          "type": "string"
        },
        "color": {
          "type": "string"
        },
        "logo_url": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "address": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "to",
    "subject"
  ]
}
🟡send_campaign(from, subject, html, text, list_id, ...)

Send a marketing email to up to 1,000 recipients; the unsubscribe link is added for you. Invalid, role, blocked or unsubscribed recipients are skipped and cost nothing; each accepted recipient uses 1 email of today's allowance. A campaign that doesn't fit what's left today is refused whole.

输入模式

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "description": "Name before the @ (e.g. hello). The domain is always email59.com. Optional."
    },
    "subject": {
      "type": "string"
    },
    "html": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "list_id": {
      "type": "string",
      "description": "Your name for this audience, used for unsubscribes."
    },
    "recipients": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Recipient addresses (max 1,000)."
    }
  },
  "required": [
    "subject",
    "recipients"
  ]
}
🟢check_email(email)

Free deep check of an email address, no sign-in needed: format, provider username rules, disposable and role addresses, and the domain's MX, SPF, DMARC, DKIM, MTA-STS, TLS-RPT and BIMI records. Returns a report with a score (0-99, likelihood the address is real) and a verdict (likely_valid, risky, likely_invalid, unknown). Gmail, Outlook and other big providers skip DNS. No email is sent.

输入模式

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Email address."
    }
  },
  "required": [
    "email"
  ]
}
🟢check_list(emails, csv)

List check for a mailing list: up to 1,000 different addresses a call, as emails or the text of a CSV (the column headed email). One status each: valid, risky, role, disposable, no_mx or invalid, with a reason, plus counts per status. Format, provider rules and one MX lookup per domain; no email is sent. Daily limit per account; the answer's quota shows what is left today.

输入模式

{
  "type": "object",
  "properties": {
    "emails": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Addresses to check."
    },
    "csv": {
      "type": "string",
      "description": "Or a CSV file's text with an email column."
    }
  }
}
🟢validate_email(email)

Check an address before sending. Verdicts: ok, invalid, no_mx, disposable, role.

输入模式

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Email address."
    }
  },
  "required": [
    "email"
  ]
}
⚪block(kind, value, reason)

Block an email address or a whole domain for this account. Sends to it are refused.

输入模式

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "email",
        "domain"
      ]
    },
    "value": {
      "type": "string",
      "description": "The address or domain."
    },
    "reason": {
      "type": "string"
    }
  },
  "required": [
    "kind",
    "value"
  ]
}
🔴unblock(kind, value)

Remove an email address or domain from the blocklist.

输入模式

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "email",
        "domain"
      ]
    },
    "value": {
      "type": "string"
    }
  },
  "required": [
    "kind",
    "value"
  ]
}
🟢list_blocklist

The account's blocked addresses and domains.

输入模式

{
  "type": "object",
  "properties": {}
}
🟡add_unsubscribe(email, list_id)

Record an opt-out. Campaigns to that list (or every list, if list_id is empty) skip the address.

输入模式

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Email address."
    },
    "list_id": {
      "type": "string",
      "description": "Empty = every list."
    }
  },
  "required": [
    "email"
  ]
}
🟢buy_pack(pack_id, agree, policy_version)

Start buying a pack (pack_5 = $5, pack_10 = $10, pack_50 = $50; each $1 adds 3,636 email credits, which don't renew and last until used, plus a purchase fee of 5% or at least $0.50 at checkout; GET /v1/pricing has the totals). Returns a checkout_url for a person to pay; the credits arrive once the payment clears. First show the person the refund policy and terms from GET /v1/policy; pass agree=true and its version only after they agree.

输入模式

{
  "type": "object",
  "properties": {
    "pack_id": {
      "type": "string"
    },
    "agree": {
      "type": "boolean",
      "description": "The person agreed to the refund policy and terms (GET /v1/policy)"
    },
    "policy_version": {
      "type": "string",
      "description": "version from GET /v1/policy"
    }
  },
  "required": [
    "pack_id",
    "agree",
    "policy_version"
  ]
}
🟢order_status(order_id)

Status of an order from buy_pack: pending or paid.

输入模式

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer"
    }
  },
  "required": [
    "order_id"
  ]
}
🟡create_api_key(label, mode)

Create a long-lived API key (max 10 per account). It is shown only once. mode 'test' makes an e59_test_ key for staging and CI: its sends are accepted and stored, never delivered, and use no allowance.

输入模式

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string"
    },
    "mode": {
      "type": "string",
      "enum": [
        "live",
        "test"
      ],
      "description": "Default live."
    }
  }
}
🟢list_test_messages(id, to, limit)

Emails sent with a test key (e59_test_...), newest first: accepted, stored, never delivered. Pass id for one email with its html and text (a verify_start code is in there), or to to filter by recipient.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "A test email id (test_...). Optional."
    },
    "to": {
      "type": "string",
      "description": "Only emails to this address. Optional."
    },
    "limit": {
      "type": "integer",
      "description": "Default 50, at most 100."
    }
  }
}
🟢list_api_keys

The account's API keys (ids and labels, never the keys themselves).

输入模式

{
  "type": "object",
  "properties": {}
}
🟢verify_start(to, app_name, from, code_length, expires_in)

Email a one-time verification code to an address (sign-up, sign-in, confirming an email). email59 makes the code, sends it, limits resends and expires it; the code is never returned to you. Returns an id. Uses 1 email of today's allowance. A new code to the same address replaces the one waiting there. Then call verify_check with what the person typed.

输入模式

{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "description": "The address to verify."
    },
    "app_name": {
      "type": "string",
      "description": "Your app's name, shown in the subject and body. Optional."
    },
    "from": {
      "type": "string",
      "description": "Name before the @; the domain is always email59.com. Default verify."
    },
    "code_length": {
      "type": "integer",
      "description": "Digits in the code, 4 to 10. Default 6."
    },
    "expires_in": {
      "type": "integer",
      "description": "Seconds the code works, 60 to 3600. Default 600."
    }
  },
  "required": [
    "to"
  ]
}
🟢verify_check(to, id, code)

Check a code from verify_start. Give to (checks the newest code sent there) or id, and code. Returns valid true or false and a status: approved, wrong_code, expired, too_many_attempts (5 wrong codes lock it), already_used, replaced or not_found. A right code works once. Uses no allowance.

输入模式

{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "description": "The address the code was sent to."
    },
    "id": {
      "type": "string",
      "description": "Or the id from verify_start."
    },
    "code": {
      "type": "string",
      "description": "The code the person typed."
    }
  },
  "required": [
    "code"
  ]
}

社区

评价此服务器

证据

最近观测

已验证未记录版本20 个工具