Browse operation contracts · Static machine index · OpenAPI release reference · Build manifest

Public email-domain DNS readiness

Inspect one public ASCII domain's live MX, null MX, or implicit A/AAAA fallback with resolver/time/TTL evidence. Domain only; no email address, mailbox, deliverability, disposable/free-provider or role classification. x402 only.

standards · Operation ID: email-domain-readiness

Choose this operation when

Outside this profile

Exact release references

Static JSON contract · Markdown reference · Fixed example response

Complete input schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 3,
      "maxLength": 254
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}

Complete output-envelope schema

{
  "type": "object",
  "required": [
    "operation",
    "version",
    "result",
    "provenance"
  ],
  "properties": {
    "operation": {
      "const": "email-domain-readiness",
      "type": "string"
    },
    "version": {
      "const": "0.29.0",
      "type": "string"
    },
    "result": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "profile": {
          "type": "string",
          "const": "public-email-domain-dns-v1"
        },
        "domain": {
          "type": "string",
          "maxLength": 253
        },
        "canonicalDomain": {
          "type": "string",
          "maxLength": 253
        },
        "status": {
          "type": "string",
          "enum": [
            "mx_records",
            "null_mx",
            "implicit_mx",
            "no_mail_route",
            "nxdomain",
            "inconsistent_mx"
          ]
        },
        "mxRecords": {
          "maxItems": 64,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "preference": {
                "type": "integer",
                "minimum": 0,
                "maximum": 65535
              },
              "exchange": {
                "type": "string",
                "maxLength": 253
              },
              "ttlSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2147483647
              }
            },
            "required": [
              "preference",
              "exchange",
              "ttlSeconds"
            ],
            "additionalProperties": false
          }
        },
        "implicitAddresses": {
          "maxItems": 128,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "A",
                  "AAAA"
                ]
              },
              "address": {
                "type": "string",
                "maxLength": 45
              },
              "ttlSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2147483647
              }
            },
            "required": [
              "type",
              "address",
              "ttlSeconds"
            ],
            "additionalProperties": false
          }
        },
        "observations": {
          "minItems": 1,
          "maxItems": 3,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "maxLength": 253
              },
              "type": {
                "type": "string",
                "enum": [
                  "MX",
                  "A",
                  "AAAA"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "NOERROR",
                  "NXDOMAIN"
                ]
              },
              "canonicalName": {
                "type": "string",
                "maxLength": 253
              },
              "observedAt": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
              },
              "resolver": {
                "type": "string",
                "const": "https://dns.google/resolve"
              },
              "resolverDnssecAuthenticated": {
                "type": "boolean"
              },
              "records": {
                "maxItems": 64,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "maxLength": 253
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "CNAME",
                        "MX",
                        "A",
                        "AAAA"
                      ]
                    },
                    "data": {
                      "type": "string",
                      "maxLength": 512
                    },
                    "ttlSeconds": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 2147483647
                    }
                  },
                  "required": [
                    "name",
                    "type",
                    "data",
                    "ttlSeconds"
                  ],
                  "additionalProperties": false
                }
              },
              "minimumAnswerTtlSeconds": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2147483647
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "name",
              "type",
              "status",
              "canonicalName",
              "observedAt",
              "resolver",
              "resolverDnssecAuthenticated",
              "records",
              "minimumAnswerTtlSeconds"
            ],
            "additionalProperties": false
          }
        },
        "externalRequests": {
          "type": "integer",
          "minimum": 1,
          "maximum": 3
        },
        "observedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
        },
        "applicationDnsCache": {
          "type": "string",
          "const": "none"
        },
        "ttlPolicy": {
          "type": "string",
          "const": "remaining-resolver-answer-ttl-at-observation; replay-does-not-refresh"
        },
        "mailboxExistence": {
          "type": "string",
          "const": "not_checked"
        },
        "deliverability": {
          "type": "string",
          "const": "not_checked"
        },
        "mxHostAddresses": {
          "type": "string",
          "const": "not_checked"
        },
        "providerClassification": {
          "type": "string",
          "const": "not_checked"
        }
      },
      "required": [
        "profile",
        "domain",
        "canonicalDomain",
        "status",
        "mxRecords",
        "implicitAddresses",
        "observations",
        "externalRequests",
        "observedAt",
        "applicationDnsCache",
        "ttlPolicy",
        "mailboxExistence",
        "deliverability",
        "mxHostAddresses",
        "providerClassification"
      ],
      "additionalProperties": false
    },
    "provenance": {
      "type": "object",
      "required": [
        "inputSha256",
        "outputSha256",
        "deterministic",
        "externalRequests"
      ],
      "properties": {
        "inputSha256": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        "outputSha256": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        "deterministic": {
          "const": false
        },
        "externalRequests": {
          "type": "integer",
          "minimum": 1,
          "maximum": 3
        }
      }
    }
  },
  "additionalProperties": false
}

Fixed example

One accepted fixed example, not a custom-input trial. DNS evidence is an illustrative fixture, never a live lookup.

Example input

{
  "domain": "example.com"
}

Example response

{
  "operation": "email-domain-readiness",
  "version": "0.29.0",
  "result": {
    "profile": "public-email-domain-dns-v1",
    "domain": "example.com",
    "canonicalDomain": "example.com",
    "status": "null_mx",
    "mxRecords": [
      {
        "preference": 0,
        "exchange": ".",
        "ttlSeconds": 300
      }
    ],
    "implicitAddresses": [],
    "observations": [
      {
        "name": "example.com",
        "type": "MX",
        "status": "NOERROR",
        "canonicalName": "example.com",
        "observedAt": "2026-10-04T00:00:00.000Z",
        "resolver": "https://dns.google/resolve",
        "resolverDnssecAuthenticated": false,
        "records": [
          {
            "name": "example.com",
            "type": "MX",
            "data": "0 .",
            "ttlSeconds": 300
          }
        ],
        "minimumAnswerTtlSeconds": 300
      }
    ],
    "externalRequests": 1,
    "observedAt": "2026-10-04T00:00:00.000Z",
    "applicationDnsCache": "none",
    "ttlPolicy": "remaining-resolver-answer-ttl-at-observation; replay-does-not-refresh",
    "mailboxExistence": "not_checked",
    "deliverability": "not_checked",
    "mxHostAddresses": "not_checked",
    "providerClassification": "not_checked"
  },
  "provenance": {
    "inputSha256": "b9e2a80fa92f8d5059ab90188e0691ad6730871a209cc337c7565593597fbd58",
    "outputSha256": "a7f5f263fc806b983907b619b6775fdeb681822afd1cea09f45cd835e53ac3a9",
    "deterministic": false,
    "externalRequests": 1
  }
}

Bounds and precision

JavaScript IEEE-754 numbers; use strings for large integer IDs/exact decimals where the schema accepts strings. No lossless numeric parsing.

{
  "global": {
    "requestBytes": 131072,
    "responseBytes": 524288,
    "jsonDepth": 32,
    "jsonNodes": 20000,
    "requestsPerMinute": 60,
    "paidAttemptsPerMinute": 20,
    "idempotencyHours": 24
  },
  "operation": {
    "queries": 3,
    "queryTimeoutMs": 1500,
    "totalTimeoutMs": 5000,
    "resolverResponseBytes": 32768,
    "recordsPerQuery": 64,
    "outputBytes": 32768
  }
}

Complete schemas, descriptions and cross-field validation may impose additional limits.

Proposed price and protocol definitions

{
  "unit": "one successful operation call",
  "proposedNominalUsd": "0.002",
  "sixDecimalTokenBaseUnits": "2000",
  "subscription": false,
  "includesPayerWalletOrNetworkFees": false,
  "liveQuoteVerified": false,
  "condition": "Actual SDK challenge is authoritative only within the caller's explicit authorization; configured six-decimal token peg is an operator assertion, not a conversion guarantee."
}

Protocol definitions: x402. MPP is unsupported for this operation. Paid MCP execution is unsupported. All runtime readiness is not evaluated in this build.

API path templates, not endpoints on this documentation host

{
  "x402": "/v1/x402/email-domain-readiness"
}

Required headers

{
  "Content-Type": "application/json",
  "Idempotency-Key": "random 16–128 character operation identifier"
}

Actual SDK challenge amount, asset, network, recipient and wallet costs must pass independent authorization. Preserve identical key, body, protocol and credential on retries; on PAYMENT_UNCERTAIN stop and reconcile.

Execution profile and provider conditions

{
  "deterministic": false,
  "externalRequests": "snapshot provenance counts original 1-3 queries; replay preserves that count and adds zero new queries",
  "maxExternalRequests": 3,
  "resultSnapshotPersisted": true,
  "activation": {
    "requiredOperatorAssertion": "DNS_PROVIDER_TERMS_REVIEWED=true",
    "reason": "Commercial DNS wrapper/resale, upstream caching/redistribution and stored-replay retention require provider-terms review; this flag grants no permission",
    "runtimeAssessment": "not-evaluated"
  },
  "fixedExampleIsIllustrativeSnapshot": true,
  "requiresPayment": true,
  "supportsMcpExecution": false
}

The live DNS profile transmits the supplied domain only to the fixed Google DNS resolver, at most three requests, and stores a bounded snapshot for exact replay. Provider review and payment configuration must be checked at runtime. Replay does not refresh observed DNS data.

Failure handling

Declared requirements

Before any paid call, refresh the live operation contract and POST the complete bounded budgeted plan to the separate API's /preflight. Unknown requirements block selection; compatible preflight is not permission to spend.

Related contracts