email59
Send transactional email from AI agents: sign up by email code, no domain or DNS setup.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (2)
- LOWin get_pricing
- LOWin order_status
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"email59": {
"url": "https://email59.com/v1/mcp"
}
}
}Remote-Endpunkte
https://email59.com/v1/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (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>'.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {}
}🟢get_account
The signed-in account: email, daily_limit, sent_today, remaining_today, credits_remaining, resets_at.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"email",
"domain"
]
},
"value": {
"type": "string"
}
},
"required": [
"kind",
"value"
]
}🟢list_blocklist
The account's blocked addresses and domains.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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).
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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"
]
}Community
Nachweis