{
  "openapi": "3.1.0",
  "info": {
    "title": "Mailvett API",
    "version": "1.0.0",
    "summary": "Free email validation API and MCP server: syntax, MX, disposable, role, free-provider and typo checks with a verdict, reasons and a 0-100 score. No SMTP probing.",
    "description": "Paid API keys from $19/month (Cleaner: 5,000 calls a month); free tier 50 calls a day per IP with no key. Buy: https://mailvett.cybermaxtools.com/buy/cleaner?s=lead · all plans: https://mailvett.cybermaxtools.com/docs#pricing\n\nPricing: free tier 50 calls/day per IP, no key. Paid API keys: Cleaner $19/month = 5,000 calls/month; Growth $49/month = 20,000 calls/month; Agency $99/month = 60,000 calls/month; Pay as you go $5 = 1,000 calls (one-time pack); Cleaner yearly $190/year = 5,000 calls/month; Growth yearly $490/year = 20,000 calls/month; Agency yearly $990/year = 60,000 calls/month. Get a key: https://mailvett.cybermaxtools.com/docs#pricing\n\nPaste addresses and get a clear verdict for each: syntax, domain and mail server (MX), mail provider, disposable, role (info@, sales@), free provider and likely typos (gmial.com → gmail.com), plus domain age, SPF and DMARC.\n\nFree tier: 20 calls per minute per IP address. Up to 10 emails per call. Domain age and parked-site checks run in full for up to 5 different domains per call. Mailboxes are never probed (no SMTP), so the top score is 90. Free, no key. No key needed. Remote MCP server: https://mailvett.cybermaxtools.com/mcp",
    "contact": {
      "name": "CyberMax",
      "url": "https://cybermax-tools-cybermax.static.hf.space/"
    },
    "license": {
      "name": "Proprietary (free tier + paid API keys)",
      "identifier": "LicenseRef-CyberMax"
    },
    "x-x402": {
      "protocol": "x402",
      "versions": [
        1,
        2
      ],
      "scheme": "exact",
      "network": [
        "base",
        "eip155:8453"
      ],
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "currency": "USDC",
      "price": {
        "perCallUsd": 0.006
      },
      "payPerCallEndpoints": [
        "/x402/api/validate"
      ],
      "alsoOn": "the plain endpoints answer 402 with the same terms once the free daily quota is used up (no key sent)",
      "headers": {
        "request": [
          "X-PAYMENT (v1)",
          "PAYMENT-SIGNATURE (v2)"
        ],
        "response": [
          "X-PAYMENT-RESPONSE",
          "PAYMENT-RESPONSE"
        ]
      }
    },
    "x-pricing": {
      "api": "Mailvett API",
      "currency": "USD",
      "free": {
        "price": 0,
        "callsPerDayPerIp": 50,
        "perMinutePerIp": 20,
        "key": "none needed"
      },
      "plans": [
        {
          "id": "cleaner",
          "name": "Cleaner",
          "price": 19,
          "billing": "per month",
          "calls": 5000,
          "per": "calendar month (UTC)",
          "perMinute": 60,
          "buy": "https://mailvett.cybermaxtools.com/buy/cleaner?s=openapi"
        },
        {
          "id": "growth",
          "name": "Growth",
          "price": 49,
          "billing": "per month",
          "calls": 20000,
          "per": "calendar month (UTC)",
          "perMinute": 120,
          "buy": "https://mailvett.cybermaxtools.com/buy/growth?s=openapi"
        },
        {
          "id": "agency",
          "name": "Agency",
          "price": 99,
          "billing": "per month",
          "calls": 60000,
          "per": "calendar month (UTC)",
          "perMinute": 240,
          "buy": "https://mailvett.cybermaxtools.com/buy/agency?s=openapi"
        },
        {
          "id": "payg",
          "name": "Pay as you go",
          "price": 5,
          "billing": "one-time",
          "calls": 1000,
          "per": "until used",
          "perMinute": 60,
          "buy": "https://mailvett.cybermaxtools.com/buy/payg?s=openapi"
        },
        {
          "id": "cleaner-yearly",
          "name": "Cleaner yearly",
          "price": 190,
          "billing": "per year",
          "calls": 5000,
          "per": "calendar month (UTC)",
          "perMinute": 60,
          "buy": "https://mailvett.cybermaxtools.com/buy/cleaner-yearly?s=openapi"
        },
        {
          "id": "growth-yearly",
          "name": "Growth yearly",
          "price": 490,
          "billing": "per year",
          "calls": 20000,
          "per": "calendar month (UTC)",
          "perMinute": 120,
          "buy": "https://mailvett.cybermaxtools.com/buy/growth-yearly?s=openapi"
        },
        {
          "id": "agency-yearly",
          "name": "Agency yearly",
          "price": 990,
          "billing": "per year",
          "calls": 60000,
          "per": "calendar month (UTC)",
          "perMinute": 240,
          "buy": "https://mailvett.cybermaxtools.com/buy/agency-yearly?s=openapi"
        }
      ],
      "unit": "calls",
      "howToUse": {
        "header": "x-api-key: YOUR_KEY",
        "alt": [
          "Authorization: Bearer YOUR_KEY",
          "?key=YOUR_KEY"
        ],
        "mcp": "send the key as Authorization: Bearer YOUR_KEY",
        "usage": "https://mailvett.cybermaxtools.com/key"
      },
      "manageKey": "https://mailvett.cybermaxtools.com/manage",
      "allAccess": {
        "name": "CyberMax API All-Access",
        "apis": 10,
        "url": "https://api-all-access.cybermaxtools.com/?s=openapi-mailvett",
        "plans": [
          {
            "id": "all-access",
            "price": 119,
            "billing": "per month",
            "callsHere": 5000,
            "per": "calendar month (UTC)"
          },
          {
            "id": "all-access-pack",
            "price": 32,
            "billing": "one-time",
            "callsHere": 1000,
            "per": "until used"
          }
        ],
        "note": "One key for every CyberMax API; Mailvett counts it separately."
      },
      "payments": "Stripe Checkout: card, Apple Pay, Google Pay, Link; sales tax/VAT handled by Stripe. Cancel any time at https://mailvett.cybermaxtools.com/manage."
    }
  },
  "servers": [
    {
      "url": "https://mailvett.cybermaxtools.com"
    },
    {
      "url": "https://mailvett.cybermax-tools.workers.dev"
    }
  ],
  "paths": {
    "/api/validate": {
      "get": {
        "tags": [
          "Mailvett"
        ],
        "summary": "Validate up to 10 email addresses",
        "description": "Checks syntax, domain existence, MX / implicit MX / null MX, mail provider, disposable, role, free provider, typo suggestions, SPF, DMARC, RDAP domain age and parked-domain signals, then returns verdict (deliverable_likely, risky, undeliverable, invalid), score 0-100 and reason codes.",
        "operationId": "validateEmailsGet",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": true,
            "description": "Up to 10 addresses, comma separated",
            "schema": {
              "type": "string"
            },
            "example": "jane.doe@gmial.com,info@stripe.com"
          },
          {
            "name": "suggestTypos",
            "in": "query",
            "required": false,
            "description": "Suggest corrections for likely typos (default true)",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                },
                "example": {
                  "results": [
                    {
                      "input": "jane.doe@gmial.com",
                      "email": "jane.doe@gmial.com",
                      "verdict": "risky",
                      "score": 1,
                      "reasons": [
                        "mail_server_from_a_record",
                        "disposable_domain",
                        "possible_typo_of:gmail.com",
                        "no_spf",
                        "no_dmarc",
                        "domain_age_years:23"
                      ],
                      "summary": "jane.doe@gmial.com: risky (score 1) - Implicit (A record), disposable domain, did you mean jane.doe@gmail.com?, domain 23y old.",
                      "localPart": "jane.doe",
                      "domain": "gmial.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [],
                        "provider": "Implicit (A record)",
                        "implicit": true,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": true,
                        "role": false,
                        "roleType": null,
                        "freeProvider": false,
                        "typoSuggestion": "gmail.com",
                        "parkedDomain": false
                      },
                      "suggestion": "jane.doe@gmail.com",
                      "domainHealth": {
                        "spf": null,
                        "dmarc": null,
                        "createdAt": "2003-05-12T18:26:31Z",
                        "ageDays": 8537,
                        "registrar": "GoDaddy.com, LLC",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 748,
                      "checkedAt": "2026-09-25T23:03:27.011Z"
                    },
                    {
                      "input": "info@stripe.com",
                      "email": "info@stripe.com",
                      "verdict": "deliverable_likely",
                      "score": 78,
                      "reasons": [
                        "mx_present",
                        "role_account:general",
                        "spf_present",
                        "dmarc:reject",
                        "domain_age_years:31"
                      ],
                      "summary": "info@stripe.com: deliverable_likely (score 78) - Google Workspace, role account (general), domain 31y old.",
                      "localPart": "info",
                      "domain": "stripe.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [
                          "aspmx.l.google.com",
                          "alt1.aspmx.l.google.com",
                          "alt2.aspmx.l.google.com",
                          "aspmx2.googlemail.com",
                          "aspmx3.googlemail.com"
                        ],
                        "provider": "Google Workspace",
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": false,
                        "role": true,
                        "roleType": "general",
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": false
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": "softfail",
                        "dmarc": "reject",
                        "createdAt": "1995-09-12T04:00:00Z",
                        "ageDays": 11336,
                        "registrar": "SafeNames Ltd.",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 107,
                      "checkedAt": "2026-09-25T23:03:26.370Z"
                    },
                    {
                      "input": "test@mailinator.com",
                      "email": "test@mailinator.com",
                      "verdict": "risky",
                      "score": 30,
                      "reasons": [
                        "mx_present",
                        "disposable_domain",
                        "spf_present",
                        "dmarc:reject",
                        "domain_age_years:23"
                      ],
                      "summary": "test@mailinator.com: risky (score 30) - Other / self-hosted, disposable domain, domain 23y old.",
                      "localPart": "test",
                      "domain": "mailinator.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [
                          "mail.mailinator.com",
                          "mail2.mailinator.com"
                        ],
                        "provider": "Other / self-hosted",
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": true,
                        "role": false,
                        "roleType": null,
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": false
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": "fail",
                        "dmarc": "reject",
                        "createdAt": "2003-07-02T13:50:53Z",
                        "ageDays": 8486,
                        "registrar": "GoDaddy.com, LLC",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 292,
                      "checkedAt": "2026-09-25T23:03:26.555Z"
                    },
                    {
                      "input": "sales@this-domain-does-not-exist-9x7q.com",
                      "email": "sales@this-domain-does-not-exist-9x7q.com",
                      "verdict": "undeliverable",
                      "score": 2,
                      "reasons": [
                        "domain_not_found"
                      ],
                      "summary": "sales@this-domain-does-not-exist-9x7q.com: undeliverable (score 2) - role account (sales), domain does not exist.",
                      "localPart": "sales",
                      "domain": "this-domain-does-not-exist-9x7q.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": false,
                      "mx": {
                        "present": false,
                        "hosts": [],
                        "provider": null,
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": false,
                        "role": true,
                        "roleType": "sales",
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": null
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": null,
                        "dmarc": null,
                        "createdAt": null,
                        "ageDays": null,
                        "registrar": null,
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 7,
                      "checkedAt": "2026-09-25T23:03:26.270Z"
                    }
                  ],
                  "count": 4,
                  "verdicts": {
                    "deliverable_likely": 1,
                    "risky": 2,
                    "undeliverable": 1,
                    "invalid": 0
                  },
                  "checks": {
                    "domainAge": true,
                    "parkedWebsite": true,
                    "mailbox": "never probed (no SMTP)"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Free tier used up (50/day per IP) or rate/plan limit reached; the body has an upgrade link.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Mailvett"
        ],
        "summary": "Validate up to 10 email addresses",
        "description": "Checks syntax, domain existence, MX / implicit MX / null MX, mail provider, disposable, role, free provider, typo suggestions, SPF, DMARC, RDAP domain age and parked-domain signals, then returns verdict (deliverable_likely, risky, undeliverable, invalid), score 0-100 and reason codes.",
        "operationId": "validateEmailsPost",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "emails": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "minItems": 1,
                    "maxItems": 10,
                    "description": "Email addresses, also \"Name <email>\" or mailto: links. Up to 10."
                  },
                  "suggestTypos": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "emails"
                ]
              },
              "example": {
                "emails": [
                  "jane.doe@gmial.com",
                  "info@stripe.com",
                  "test@mailinator.com"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                },
                "example": {
                  "results": [
                    {
                      "input": "jane.doe@gmial.com",
                      "email": "jane.doe@gmial.com",
                      "verdict": "risky",
                      "score": 1,
                      "reasons": [
                        "mail_server_from_a_record",
                        "disposable_domain",
                        "possible_typo_of:gmail.com",
                        "no_spf",
                        "no_dmarc",
                        "domain_age_years:23"
                      ],
                      "summary": "jane.doe@gmial.com: risky (score 1) - Implicit (A record), disposable domain, did you mean jane.doe@gmail.com?, domain 23y old.",
                      "localPart": "jane.doe",
                      "domain": "gmial.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [],
                        "provider": "Implicit (A record)",
                        "implicit": true,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": true,
                        "role": false,
                        "roleType": null,
                        "freeProvider": false,
                        "typoSuggestion": "gmail.com",
                        "parkedDomain": false
                      },
                      "suggestion": "jane.doe@gmail.com",
                      "domainHealth": {
                        "spf": null,
                        "dmarc": null,
                        "createdAt": "2003-05-12T18:26:31Z",
                        "ageDays": 8537,
                        "registrar": "GoDaddy.com, LLC",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 748,
                      "checkedAt": "2026-09-25T23:03:27.011Z"
                    },
                    {
                      "input": "info@stripe.com",
                      "email": "info@stripe.com",
                      "verdict": "deliverable_likely",
                      "score": 78,
                      "reasons": [
                        "mx_present",
                        "role_account:general",
                        "spf_present",
                        "dmarc:reject",
                        "domain_age_years:31"
                      ],
                      "summary": "info@stripe.com: deliverable_likely (score 78) - Google Workspace, role account (general), domain 31y old.",
                      "localPart": "info",
                      "domain": "stripe.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [
                          "aspmx.l.google.com",
                          "alt1.aspmx.l.google.com",
                          "alt2.aspmx.l.google.com",
                          "aspmx2.googlemail.com",
                          "aspmx3.googlemail.com"
                        ],
                        "provider": "Google Workspace",
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": false,
                        "role": true,
                        "roleType": "general",
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": false
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": "softfail",
                        "dmarc": "reject",
                        "createdAt": "1995-09-12T04:00:00Z",
                        "ageDays": 11336,
                        "registrar": "SafeNames Ltd.",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 107,
                      "checkedAt": "2026-09-25T23:03:26.370Z"
                    },
                    {
                      "input": "test@mailinator.com",
                      "email": "test@mailinator.com",
                      "verdict": "risky",
                      "score": 30,
                      "reasons": [
                        "mx_present",
                        "disposable_domain",
                        "spf_present",
                        "dmarc:reject",
                        "domain_age_years:23"
                      ],
                      "summary": "test@mailinator.com: risky (score 30) - Other / self-hosted, disposable domain, domain 23y old.",
                      "localPart": "test",
                      "domain": "mailinator.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [
                          "mail.mailinator.com",
                          "mail2.mailinator.com"
                        ],
                        "provider": "Other / self-hosted",
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": true,
                        "role": false,
                        "roleType": null,
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": false
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": "fail",
                        "dmarc": "reject",
                        "createdAt": "2003-07-02T13:50:53Z",
                        "ageDays": 8486,
                        "registrar": "GoDaddy.com, LLC",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 292,
                      "checkedAt": "2026-09-25T23:03:26.555Z"
                    },
                    {
                      "input": "sales@this-domain-does-not-exist-9x7q.com",
                      "email": "sales@this-domain-does-not-exist-9x7q.com",
                      "verdict": "undeliverable",
                      "score": 2,
                      "reasons": [
                        "domain_not_found"
                      ],
                      "summary": "sales@this-domain-does-not-exist-9x7q.com: undeliverable (score 2) - role account (sales), domain does not exist.",
                      "localPart": "sales",
                      "domain": "this-domain-does-not-exist-9x7q.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": false,
                      "mx": {
                        "present": false,
                        "hosts": [],
                        "provider": null,
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": false,
                        "role": true,
                        "roleType": "sales",
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": null
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": null,
                        "dmarc": null,
                        "createdAt": null,
                        "ageDays": null,
                        "registrar": null,
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 7,
                      "checkedAt": "2026-09-25T23:03:26.270Z"
                    }
                  ],
                  "count": 4,
                  "verdicts": {
                    "deliverable_likely": 1,
                    "risky": 2,
                    "undeliverable": 1,
                    "invalid": 0
                  },
                  "checks": {
                    "domainAge": true,
                    "parkedWebsite": true,
                    "mailbox": "never probed (no SMTP)"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Free tier used up (50/day per IP) or rate/plan limit reached; the body has an upgrade link.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/x402/api/validate": {
      "get": {
        "tags": [
          "Mailvett"
        ],
        "summary": "Validate up to 10 email addresses (pay per call in USDC via x402, no key)",
        "description": "Checks syntax, domain existence, MX / implicit MX / null MX, mail provider, disposable, role, free provider, typo suggestions, SPF, DMARC, RDAP domain age and parked-domain signals, then returns verdict (deliverable_likely, risky, undeliverable, invalid), score 0-100 and reason codes.\n\nPay per call with x402: $0.006 per call in USDC on Base. No key, no account: an unpaid call returns 402 with the payment requirements; retry with the X-PAYMENT (x402 v1) or PAYMENT-SIGNATURE (v2) header.",
        "operationId": "validateEmailsGetPayPerCall",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": true,
            "description": "Up to 10 addresses, comma separated",
            "schema": {
              "type": "string"
            },
            "example": "jane.doe@gmial.com,info@stripe.com"
          },
          {
            "name": "suggestTypos",
            "in": "query",
            "required": false,
            "description": "Suggest corrections for likely typos (default true)",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                },
                "example": {
                  "results": [
                    {
                      "input": "jane.doe@gmial.com",
                      "email": "jane.doe@gmial.com",
                      "verdict": "risky",
                      "score": 1,
                      "reasons": [
                        "mail_server_from_a_record",
                        "disposable_domain",
                        "possible_typo_of:gmail.com",
                        "no_spf",
                        "no_dmarc",
                        "domain_age_years:23"
                      ],
                      "summary": "jane.doe@gmial.com: risky (score 1) - Implicit (A record), disposable domain, did you mean jane.doe@gmail.com?, domain 23y old.",
                      "localPart": "jane.doe",
                      "domain": "gmial.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [],
                        "provider": "Implicit (A record)",
                        "implicit": true,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": true,
                        "role": false,
                        "roleType": null,
                        "freeProvider": false,
                        "typoSuggestion": "gmail.com",
                        "parkedDomain": false
                      },
                      "suggestion": "jane.doe@gmail.com",
                      "domainHealth": {
                        "spf": null,
                        "dmarc": null,
                        "createdAt": "2003-05-12T18:26:31Z",
                        "ageDays": 8537,
                        "registrar": "GoDaddy.com, LLC",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 748,
                      "checkedAt": "2026-09-25T23:03:27.011Z"
                    },
                    {
                      "input": "info@stripe.com",
                      "email": "info@stripe.com",
                      "verdict": "deliverable_likely",
                      "score": 78,
                      "reasons": [
                        "mx_present",
                        "role_account:general",
                        "spf_present",
                        "dmarc:reject",
                        "domain_age_years:31"
                      ],
                      "summary": "info@stripe.com: deliverable_likely (score 78) - Google Workspace, role account (general), domain 31y old.",
                      "localPart": "info",
                      "domain": "stripe.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [
                          "aspmx.l.google.com",
                          "alt1.aspmx.l.google.com",
                          "alt2.aspmx.l.google.com",
                          "aspmx2.googlemail.com",
                          "aspmx3.googlemail.com"
                        ],
                        "provider": "Google Workspace",
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": false,
                        "role": true,
                        "roleType": "general",
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": false
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": "softfail",
                        "dmarc": "reject",
                        "createdAt": "1995-09-12T04:00:00Z",
                        "ageDays": 11336,
                        "registrar": "SafeNames Ltd.",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 107,
                      "checkedAt": "2026-09-25T23:03:26.370Z"
                    },
                    {
                      "input": "test@mailinator.com",
                      "email": "test@mailinator.com",
                      "verdict": "risky",
                      "score": 30,
                      "reasons": [
                        "mx_present",
                        "disposable_domain",
                        "spf_present",
                        "dmarc:reject",
                        "domain_age_years:23"
                      ],
                      "summary": "test@mailinator.com: risky (score 30) - Other / self-hosted, disposable domain, domain 23y old.",
                      "localPart": "test",
                      "domain": "mailinator.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [
                          "mail.mailinator.com",
                          "mail2.mailinator.com"
                        ],
                        "provider": "Other / self-hosted",
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": true,
                        "role": false,
                        "roleType": null,
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": false
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": "fail",
                        "dmarc": "reject",
                        "createdAt": "2003-07-02T13:50:53Z",
                        "ageDays": 8486,
                        "registrar": "GoDaddy.com, LLC",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 292,
                      "checkedAt": "2026-09-25T23:03:26.555Z"
                    },
                    {
                      "input": "sales@this-domain-does-not-exist-9x7q.com",
                      "email": "sales@this-domain-does-not-exist-9x7q.com",
                      "verdict": "undeliverable",
                      "score": 2,
                      "reasons": [
                        "domain_not_found"
                      ],
                      "summary": "sales@this-domain-does-not-exist-9x7q.com: undeliverable (score 2) - role account (sales), domain does not exist.",
                      "localPart": "sales",
                      "domain": "this-domain-does-not-exist-9x7q.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": false,
                      "mx": {
                        "present": false,
                        "hosts": [],
                        "provider": null,
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": false,
                        "role": true,
                        "roleType": "sales",
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": null
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": null,
                        "dmarc": null,
                        "createdAt": null,
                        "ageDays": null,
                        "registrar": null,
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 7,
                      "checkedAt": "2026-09-25T23:03:26.270Z"
                    }
                  ],
                  "count": 4,
                  "verdicts": {
                    "deliverable_likely": 1,
                    "risky": 2,
                    "undeliverable": 1,
                    "invalid": 0
                  },
                  "checks": {
                    "domainAge": true,
                    "parkedWebsite": true,
                    "mailbox": "never probed (no SMTP)"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required: x402 payment requirements (body: x402Version 1 accepts[]; header PAYMENT-REQUIRED: x402 v2)."
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.006"
          },
          "protocols": [
            {
              "x402": {
                "version": [
                  1,
                  2
                ],
                "network": [
                  "base",
                  "eip155:8453"
                ],
                "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                "scheme": "exact"
              }
            }
          ]
        }
      },
      "post": {
        "tags": [
          "Mailvett"
        ],
        "summary": "Validate up to 10 email addresses (pay per call in USDC via x402, no key)",
        "description": "Checks syntax, domain existence, MX / implicit MX / null MX, mail provider, disposable, role, free provider, typo suggestions, SPF, DMARC, RDAP domain age and parked-domain signals, then returns verdict (deliverable_likely, risky, undeliverable, invalid), score 0-100 and reason codes.\n\nPay per call with x402: $0.006 per call in USDC on Base. No key, no account: an unpaid call returns 402 with the payment requirements; retry with the X-PAYMENT (x402 v1) or PAYMENT-SIGNATURE (v2) header.",
        "operationId": "validateEmailsPostPayPerCall",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "emails": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "minItems": 1,
                    "maxItems": 10,
                    "description": "Email addresses, also \"Name <email>\" or mailto: links. Up to 10."
                  },
                  "suggestTypos": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "emails"
                ]
              },
              "example": {
                "emails": [
                  "jane.doe@gmial.com",
                  "info@stripe.com",
                  "test@mailinator.com"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                },
                "example": {
                  "results": [
                    {
                      "input": "jane.doe@gmial.com",
                      "email": "jane.doe@gmial.com",
                      "verdict": "risky",
                      "score": 1,
                      "reasons": [
                        "mail_server_from_a_record",
                        "disposable_domain",
                        "possible_typo_of:gmail.com",
                        "no_spf",
                        "no_dmarc",
                        "domain_age_years:23"
                      ],
                      "summary": "jane.doe@gmial.com: risky (score 1) - Implicit (A record), disposable domain, did you mean jane.doe@gmail.com?, domain 23y old.",
                      "localPart": "jane.doe",
                      "domain": "gmial.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [],
                        "provider": "Implicit (A record)",
                        "implicit": true,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": true,
                        "role": false,
                        "roleType": null,
                        "freeProvider": false,
                        "typoSuggestion": "gmail.com",
                        "parkedDomain": false
                      },
                      "suggestion": "jane.doe@gmail.com",
                      "domainHealth": {
                        "spf": null,
                        "dmarc": null,
                        "createdAt": "2003-05-12T18:26:31Z",
                        "ageDays": 8537,
                        "registrar": "GoDaddy.com, LLC",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 748,
                      "checkedAt": "2026-09-25T23:03:27.011Z"
                    },
                    {
                      "input": "info@stripe.com",
                      "email": "info@stripe.com",
                      "verdict": "deliverable_likely",
                      "score": 78,
                      "reasons": [
                        "mx_present",
                        "role_account:general",
                        "spf_present",
                        "dmarc:reject",
                        "domain_age_years:31"
                      ],
                      "summary": "info@stripe.com: deliverable_likely (score 78) - Google Workspace, role account (general), domain 31y old.",
                      "localPart": "info",
                      "domain": "stripe.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [
                          "aspmx.l.google.com",
                          "alt1.aspmx.l.google.com",
                          "alt2.aspmx.l.google.com",
                          "aspmx2.googlemail.com",
                          "aspmx3.googlemail.com"
                        ],
                        "provider": "Google Workspace",
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": false,
                        "role": true,
                        "roleType": "general",
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": false
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": "softfail",
                        "dmarc": "reject",
                        "createdAt": "1995-09-12T04:00:00Z",
                        "ageDays": 11336,
                        "registrar": "SafeNames Ltd.",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 107,
                      "checkedAt": "2026-09-25T23:03:26.370Z"
                    },
                    {
                      "input": "test@mailinator.com",
                      "email": "test@mailinator.com",
                      "verdict": "risky",
                      "score": 30,
                      "reasons": [
                        "mx_present",
                        "disposable_domain",
                        "spf_present",
                        "dmarc:reject",
                        "domain_age_years:23"
                      ],
                      "summary": "test@mailinator.com: risky (score 30) - Other / self-hosted, disposable domain, domain 23y old.",
                      "localPart": "test",
                      "domain": "mailinator.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": true,
                      "mx": {
                        "present": true,
                        "hosts": [
                          "mail.mailinator.com",
                          "mail2.mailinator.com"
                        ],
                        "provider": "Other / self-hosted",
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": true,
                        "role": false,
                        "roleType": null,
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": false
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": "fail",
                        "dmarc": "reject",
                        "createdAt": "2003-07-02T13:50:53Z",
                        "ageDays": 8486,
                        "registrar": "GoDaddy.com, LLC",
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 292,
                      "checkedAt": "2026-09-25T23:03:26.555Z"
                    },
                    {
                      "input": "sales@this-domain-does-not-exist-9x7q.com",
                      "email": "sales@this-domain-does-not-exist-9x7q.com",
                      "verdict": "undeliverable",
                      "score": 2,
                      "reasons": [
                        "domain_not_found"
                      ],
                      "summary": "sales@this-domain-does-not-exist-9x7q.com: undeliverable (score 2) - role account (sales), domain does not exist.",
                      "localPart": "sales",
                      "domain": "this-domain-does-not-exist-9x7q.com",
                      "syntax": {
                        "valid": true,
                        "error": null
                      },
                      "domainExists": false,
                      "mx": {
                        "present": false,
                        "hosts": [],
                        "provider": null,
                        "implicit": false,
                        "nullMx": false
                      },
                      "flags": {
                        "disposable": false,
                        "role": true,
                        "roleType": "sales",
                        "freeProvider": false,
                        "typoSuggestion": null,
                        "parkedDomain": null
                      },
                      "suggestion": null,
                      "domainHealth": {
                        "spf": null,
                        "dmarc": null,
                        "createdAt": null,
                        "ageDays": null,
                        "registrar": null,
                        "parkedEvidence": null
                      },
                      "catchAll": "not_checked",
                      "mailbox": "not_checked",
                      "errors": [],
                      "ms": 7,
                      "checkedAt": "2026-09-25T23:03:26.270Z"
                    }
                  ],
                  "count": 4,
                  "verdicts": {
                    "deliverable_likely": 1,
                    "risky": 2,
                    "undeliverable": 1,
                    "invalid": 0
                  },
                  "checks": {
                    "domainAge": true,
                    "parkedWebsite": true,
                    "mailbox": "never probed (no SMTP)"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required: x402 payment requirements (body: x402Version 1 accepts[]; header PAYMENT-REQUIRED: x402 v2)."
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.006"
          },
          "protocols": [
            {
              "x402": {
                "version": [
                  1,
                  2
                ],
                "network": [
                  "base",
                  "eip155:8453"
                ],
                "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                "scheme": "exact"
              }
            }
          ]
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "retryAfterSeconds": {
            "type": "integer"
          },
          "limits": {
            "type": "object"
          }
        },
        "required": [
          "error",
          "message"
        ]
      }
    },
    "securitySchemes": {
      "ApiKeyHeader": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "Optional. Paid plan key from https://mailvett.cybermaxtools.com/docs#pricing; leave out for the free tier."
      },
      "BearerKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Same key as a Bearer token."
      }
    }
  },
  "x-mcp-server": "https://mailvett.cybermaxtools.com/mcp",
  "externalDocs": {
    "description": "Get an API key (pricing)",
    "url": "https://mailvett.cybermaxtools.com/docs#pricing"
  },
  "security": [
    {},
    {
      "ApiKeyHeader": []
    },
    {
      "BearerKey": []
    }
  ]
}