← Проверить email

Для разработчиков

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.

Запуск вручную

Terminal
EMAILCHECKER_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 пайплайны и внутренние сервисы.

POST https://email.axdigital.ru/api/v1/analyze

Заголовки

ЗаголовокОбязателенОписание
X-API-KeyДаКлюч доступа
Content-TypeДаapplication/json

Тело запроса

ПолеТипОбязателенОписание
rawstringДаПолный исходник письма (RFC 2822): заголовки + тело
sender_ipstringНетIP SMTP-сервера отправителя — нужен для SPF и проверки чёрных списков
sender_helostringНет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. Создать сессию

POST/api/session
// Response
{
  "sessionId": "uuid",
  "address": "test-a1b2c3d4@email.axdigital.ru"
}

2. Опросить сессию

GET/api/session/:sessionId
// Пока письма нет
{ "status": "waiting" }

// После получения письма
{
  "status": "received",
  "emailId": "uuid",
  "subject": "Test campaign",
  "fromAddr": "sender@example.com",
  "receivedAt": 1714000000,
  "reportId": null   // null если анализ ещё не запускали
}

3. Запустить анализ

POST/api/analyze/:emailId
// Response
{
  "reportId": "uuid",
  "report": { /* полный объект отчёта */ }
}

4. Получить отчёт

GET/api/report/:reportId

Формат отчёта

{
  "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) — для большинства задач этого достаточно.