Для разработчиков
REST API и MCP-сервер для интеграции проверки доставляемости email в ваши сервисы и AI-агенты. Бесплатный лимит — 100 запросов в сутки на ключ.
MCP-сервер
MCP (Model Context Protocol) позволяет подключить проверку email прямо к Claude, Cursor, Windsurf и другим AI-инструментам. Агент сам создаёт временный адрес, дожидается письма и получает полный отчёт — без браузера.
Установка в Claude Desktop / Claude Code
Добавьте в конфигурацию MCP-серверов:
claude_desktop_config.json / .claude.json{
"mcpServers": {
"emailchecker": {
"command": "npx",
"args": ["-y", "emailchecker-mcp"],
"env": {
"EMAILCHECKER_API_KEY": "ваш-ключ"
}
}
}
}
Установка в Cursor / Windsurf
В настройках MCP добавьте сервер с командой npx -y emailchecker-mcp и переменной окружения EMAILCHECKER_API_KEY.
Запуск вручную
TerminalEMAILCHECKER_API_KEY=ваш-ключ npx -y emailchecker-mcp
Доступные инструменты
create_test_address
Создаёт временный email-адрес для тестирования. Возвращает sessionId и address.
check_email_received(sessionId)
Проверяет, пришло ли письмо. Возвращает status: "waiting" или "received" с emailId.
analyze_received_email(emailId)
Запускает анализ полученного письма. Возвращает reportId и полный отчёт с оценкой 0–10.
get_report(reportId)
Получает сохранённый отчёт по ID.
analyze_raw_email(raw, sender_ip?, sender_helo?)
Прямой анализ сырого RFC 2822 исходника без создания сессии. Требует API-ключ.
Пример сценария в Claude
После подключения MCP достаточно написать агенту:
Создай временный адрес, я отправлю тестовое письмо.
Когда придёт — проанализируй и объясни как исправить проблемы с доставляемостью.
Агент сам вызовет create_test_address, будет опрашивать check_email_received, запустит analyze_received_email и разберёт отчёт.
REST API v1
Прямой анализ сырого исходника письма. Подходит для интеграции в ESP, CI/CD пайплайны и внутренние сервисы.
Заголовки
| Заголовок | Обязателен | Описание |
|---|---|---|
| X-API-Key | Да | Ключ доступа |
| Content-Type | Да | application/json |
Тело запроса
| Поле | Тип | Обязателен | Описание |
|---|---|---|---|
| raw | string | Да | Полный исходник письма (RFC 2822): заголовки + тело |
| sender_ip | string | Нет | IP SMTP-сервера отправителя — нужен для SPF и проверки чёрных списков |
| sender_helo | string | Нет | EHLO/HELO значение от отправителя — нужен для точного SPF |
Пример запроса
curl -X POST https://email.axdigital.ru/api/v1/analyze \
-H "X-API-Key: ваш-ключ" \
-H "Content-Type: application/json" \
-d '{
"raw": "From: sender@example.com\r\nTo: test@email.axdigital.ru\r\nSubject: Test\r\n\r\nHello",
"sender_ip": "1.2.3.4",
"sender_helo": "mail.example.com"
}'
const res = await fetch('https://email.axdigital.ru/api/v1/analyze', {
method: 'POST',
headers: {
'X-API-Key': 'ваш-ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
raw: emailRawSource, // RFC 2822 string
sender_ip: '1.2.3.4',
sender_helo: 'mail.example.com',
}),
});
const { report } = await res.json();
console.log('Score:', report.score);
console.log('Providers:', report.providers);
import requests
resp = requests.post(
"https://email.axdigital.ru/api/v1/analyze",
headers={"X-API-Key": "ваш-ключ"},
json={
"raw": email_raw_source,
"sender_ip": "1.2.3.4",
"sender_helo": "mail.example.com",
},
)
data = resp.json()
print(f"Score: {data['report']['score']}")
for p in data['report']['providers']:
print(f"{p['name']}: {p['verdict']}")
Лимиты
- 100 запросов в сутки на ключ (сброс в 00:00 UTC)
- Максимальный размер письма: 10 МБ
- HTTP 429 при превышении лимита
Session Flow API
Если нужно получить реальные SMTP-данные (IP, EHLO), используйте сессионный флоу: создайте адрес → отправьте письмо → анализируйте. Без API-ключа.
1. Создать сессию
// Response
{
"sessionId": "uuid",
"address": "test-a1b2c3d4@email.axdigital.ru"
}
2. Опросить сессию
// Пока письма нет
{ "status": "waiting" }
// После получения письма
{
"status": "received",
"emailId": "uuid",
"subject": "Test campaign",
"fromAddr": "sender@example.com",
"receivedAt": 1714000000,
"reportId": null // null если анализ ещё не запускали
}
3. Запустить анализ
// Response
{
"reportId": "uuid",
"report": { /* полный объект отчёта */ }
}
4. Получить отчёт
Формат отчёта
{
"score": 7.5, // итоговая оценка 0–10
"auth": {
"spf": { "pass": true, "status": "pass", "detail": "..." },
"dkim": { "pass": true, "status": "pass", "detail": "..." },
"dmarc": { "pass": false, "status": "fail", "detail": "...", "policy": "none" },
"ptr": { "pass": true, "hostname": "mail.example.com", "detail": "..." }
},
"blacklist": {
"ip": "1.2.3.4",
"listed": [], // массив { name, host, detail }
"clean": ["Spamhaus ZEN", "SpamCop", ...]
},
"headers": {
"hasMessageId": true, "hasDate": true, "hasFrom": true,
"hasTo": true, "hasListUnsubscribe": false,
"listUnsubscribeValue": "",
"issues": ["Отсутствует List-Unsubscribe"],
"recommendations": ["..."]
},
"content": {
"spamKeywords": [], // найденные спам-слова
"capsRatio": 3, // % заглавных букв
"excessiveCaps": false,
"hasForbiddenTags": false, "forbiddenTags": [],
"imageTextWarning": false, "missingAltImages": 0,
"hasShorteners": false,
"htmlIssues": [], "recommendations": []
},
"links": {
"total": 5, "working": 5,
"broken": [], // массив { url, reason }
"recommendations": []
},
"providers": [ // предсказания по провайдерам
{
"name": "Gmail",
"verdict": "inbox", // inbox | likely-spam | spam | unknown
"note": "Хорошая техническая настройка...",
"warmup": "Новые домены проходят прогрев..."
},
{ "name": "Mail.ru", "verdict": "inbox", "note": "...", "warmup": "..." },
{ "name": "Яндекс.Почта","verdict": "likely-spam", "note": "...", "warmup": "..." },
{ "name": "Outlook", "verdict": "inbox", "note": "...", "warmup": "..." }
],
"deductions": [ // что снизило оценку
{ "reason": "DMARC: fail", "points": 1.5 },
{ "reason": "Отсутствует List-Unsubscribe", "points": 0.5 }
]
}
Получить API-ключ
API сейчас в закрытом бета-доступе. Напишите на hello@axdigital.ru с темой «API emailchecker» — ключ пришлём в течение суток.
Укажите: название проекта, примерный объём запросов в сутки, как планируете использовать.
MCP-сервер без API-ключа работает в режиме session flow (create → poll → analyze) — для большинства задач этого достаточно.