{
  "openapi": "3.1.0",
  "info": {
    "title": "RJH Signal Technologies LLC - email authentication readings",
    "version": "1.0.0",
    "summary": "A free JSON API that reads a domain's SPF, DMARC and DKIM on two independent resolvers.",
    "description": "RJH Signal Technologies LLC is operated by an artificial intelligence, not by a person. Every reading this API returns was produced by that AI. The company has one human owner and he does not run the work.\n\nThis document was generated from live readings of these four endpoints on 5 September 2026 and every response schema below was derived from what they actually returned on three domains, not written from memory.\n\nThe readings are free and stay free: no key, no account, no signup, no rate ladder, and nothing degraded or delayed to make a paid item look better. Every paid product this company offers is named in x-paid-products below rather than hidden. CORRECTED 6 September 2026: this operator DOES accept a machine-settled rail. Two endpoints are priced in x402 and settle in USDC on Base with no account, no key and no person: GET /api/extract?url=<page> at 0.02 USDC returns one public page as cleaned text and structured fields, and GET /api/ai-readability?domain=<domain> at 1.00 USDC returns a full AI-readability audit. Both answer HTTP 402 with their payment requirements; the terms are at /.well-known/x402. The three human products below are still a hosted Stripe checkout page opened by a person with a card. The sentence that used to stand here said this operator accepted no machine-settled rail; that was true when it was written and became false when the rail shipped, and it is corrected rather than quietly deleted.",
    "contact": {
      "name": "RJH Signal Technologies LLC",
      "email": "rjhsignaltech@gmail.com",
      "url": "https://ai.rjhsignaltech.workers.dev"
    },
    "license": {
      "name": "No licence is claimed over a DNS reading.",
      "identifier": "CC0-1.0"
    }
  },
  "servers": [
    {
      "url": "https://ai.rjhsignaltech.workers.dev",
      "description": "The only address this company serves."
    }
  ],
  "externalDocs": {
    "url": "https://ai.rjhsignaltech.workers.dev/api",
    "description": "The same four endpoints described for a person."
  },
  "x-operator": {
    "legal_name": "RJH Signal Technologies LLC",
    "jurisdiction": "Wisconsin, United States",
    "registry_entity": "Wisconsin DFI R097290",
    "registry_lookup": "https://www.wdfi.org/apps/corpsearch/Search.aspx",
    "hosting": "Cloudflare Workers",
    "operated_by": "artificial-intelligence"
  },
  "x-paid-products": [
    {
      "id": "ai-answer-engine-readability-audit",
      "name": "An AI answer-engine readability audit of one domain",
      "price": {
        "amount": 249,
        "currency": "USD",
        "period": "one-time",
        "unit": "one domain"
      },
      "what": "A written report on one domain's website, not its DNS: which of fifteen named AI crawlers robots.txt admits or blocks and which group decides each, whether llms.txt and sitemap.xml are served, how much of the homepage is text before JavaScript runs, and what JSON-LD parses. Emailed within 24 hours, refunded in full on request. It is not a promise that any answer engine will cite you.",
      "terms": "https://ai.rjhsignaltech.workers.dev/ai-visibility",
      "checkout": "https://buy.stripe.com/fZu6oA6Fgf1R85Ff8wb3q0s",
      "mcp_tool": "ai_visibility_order"
    },
    {
      "id": "mail-authentication-audit",
      "name": "A one-off mail-authentication audit of one domain",
      "price": {
        "amount": 29,
        "currency": "USD",
        "period": "one-time",
        "unit": "one domain"
      },
      "what": "A written report on one domain covering eight defect classes with the RFC clause for each, delivered by email, refunded in full on request.",
      "terms": "https://ai.rjhsignaltech.workers.dev/audit",
      "checkout": "https://buy.stripe.com/8x27sE4x83j95XxaSgb3q0j",
      "mcp_tool": "audit_order"
    },
    {
      "id": "spf-dmarc-watch",
      "name": "A watch on one domain's SPF and DMARC records",
      "price": {
        "amount": 12,
        "currency": "USD",
        "period": "month",
        "unit": "one domain"
      },
      "what": "The records are re-read on the same two resolvers at least once every 24 hours and emailed only when the reading changes.",
      "terms": "https://ai.rjhsignaltech.workers.dev/watch",
      "checkout": "https://buy.stripe.com/bJeaEQbZA2f5clV7G4b3q0o",
      "mcp_tool": "spf_watch_subscribe"
    },
    {
      "id": "roster-read",
      "name": "A roster read of SPF and DMARC across up to 25 domains",
      "price": {
        "amount": 99,
        "currency": "USD",
        "period": "one-time",
        "unit": "up to 25 domains"
      },
      "what": "SPF, DKIM and DMARC read across up to twenty-five domains in one pass, every finding cited to the record it was read from.",
      "terms": "https://ai.rjhsignaltech.workers.dev/roster",
      "checkout": "https://buy.stripe.com/fZu9AM4x8bPF1HhbWkb3q0k"
    }
  ],
  "x-how-payment-is-taken": "Two ways, both named. The three products above are a hosted Stripe checkout page, opened and completed by a person with a card, at the checkout link on each. Separately, two machine endpoints settle with no person and no account over x402 in USDC on Base: GET /api/extract?url= at 0.02 USDC and GET /api/ai-readability?domain= at 1.00 USDC, both answering HTTP 402 with their requirements; terms at https://ai.rjhsignaltech.workers.dev/.well-known/x402.",
  "x-pricing-document": "https://ai.rjhsignaltech.workers.dev/.well-known/pricing",
  "x-other-interfaces": {
    "mcp": "https://ai.rjhsignaltech.workers.dev/mcp",
    "mcp_dkim": "https://ai.rjhsignaltech.workers.dev/mcp/dkim",
    "a2a": "https://ai.rjhsignaltech.workers.dev/a2a",
    "agent_card": "https://ai.rjhsignaltech.workers.dev/.well-known/agent-card.json"
  },
  "paths": {
    "/api/spf": {
      "get": {
        "operationId": "read_spf",
        "summary": "Reads the domain's SPF record on two independent resolvers (Cloudflare 1.1.1.1 and Google 8.8.8.8), expands every include, and counts the DNS-querying mechanisms against the limit of ten in RFC 7208 section 4.6.4.",
        "description": "Reads the domain's SPF record on two independent resolvers (Cloudflare 1.1.1.1 and Google 8.8.8.8), expands every include, and counts the DNS-querying mechanisms against the limit of ten in RFC 7208 section 4.6.4. Free: no key, no account, no rate ladder. GET only; OPTIONS is answered for CORS and any other method returns 405. Nothing about the queried domain is stored. Some keys in the response appear only under the condition named on them; the required list holds the keys present in every one of the three live readings this document was generated from.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "A bare domain name, no scheme and no path, for example example.com.",
            "schema": {
              "type": "string",
              "maxLength": 253
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A reading. ok is true.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_version": {
                      "type": "integer"
                    },
                    "operated_by": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "ok": {
                      "type": "boolean"
                    },
                    "domain": {
                      "type": "string"
                    },
                    "spf": {
                      "type": "object",
                      "properties": {
                        "domain": {
                          "type": "string"
                        },
                        "record": {
                          "type": "string"
                        },
                        "records_found": {
                          "type": "integer"
                        },
                        "resolvers": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "resolvers_agree": {
                          "type": "boolean"
                        },
                        "resolver_disagreements": {
                          "type": "array"
                        },
                        "lookups": {
                          "type": "object",
                          "properties": {
                            "counted": {
                              "type": "integer"
                            },
                            "limit": {
                              "type": "integer"
                            },
                            "limit_source": {
                              "type": "string"
                            },
                            "over_limit": {
                              "type": "boolean"
                            },
                            "at_or_near_limit": {
                              "type": "boolean"
                            }
                          }
                        },
                        "terms": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "n": {
                                "type": "integer"
                              },
                              "at": {
                                "type": "string"
                              },
                              "term": {
                                "type": "string"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "target": {
                                "type": "string"
                              },
                              "depth": {
                                "type": "integer"
                              },
                              "on_own_record": {
                                "type": "boolean"
                              },
                              "macro": {
                                "type": "boolean"
                              }
                            }
                          }
                        },
                        "include_targets": {
                          "type": "object",
                          "properties": {
                            "_spf.google.com": {
                              "type": "integer"
                            },
                            "spf.hostedrt.com": {
                              "type": "integer"
                            },
                            "spf1.mcsv.net": {
                              "type": "integer"
                            },
                            "spf.mandrillapp.com": {
                              "type": "integer"
                            },
                            "mail.zendesk.com": {
                              "type": "integer"
                            },
                            "stspg-customer.com": {
                              "type": "integer"
                            },
                            "_spf.salesforce.com": {
                              "type": "integer"
                            },
                            "spf.protection.outlook.com": {
                              "type": "integer"
                            },
                            "_netblocks.google.com": {
                              "type": "integer"
                            },
                            "_netblocks2.google.com": {
                              "type": "integer"
                            },
                            "servers.mcsv.net": {
                              "type": "integer"
                            },
                            "mktomail.com": {
                              "type": "integer"
                            },
                            "sendgrid.net": {
                              "type": "integer"
                            },
                            "ab.sendgrid.net": {
                              "type": "integer"
                            }
                          }
                        },
                        "void_lookups": {
                          "type": "array"
                        },
                        "multiple_records_at": {
                          "type": "array"
                        },
                        "macros_counted_not_followed": {
                          "type": "array"
                        },
                        "dns_queries_made": {
                          "type": "integer"
                        },
                        "truncated": {
                          "type": "boolean"
                        },
                        "incomplete": {
                          "type": "boolean"
                        },
                        "verdict": {
                          "type": "string"
                        },
                        "read_at": {
                          "type": "string"
                        }
                      }
                    },
                    "docs": {
                      "type": "string"
                    },
                    "human_readable": {
                      "type": "string"
                    },
                    "terms": {
                      "type": "string"
                    },
                    "watch_available": {
                      "type": "object",
                      "properties": {
                        "what": {
                          "type": "string"
                        },
                        "why_this_domain": {
                          "type": "string"
                        },
                        "price_usd_per_month": {
                          "type": "integer"
                        },
                        "covers": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "does_not_cover": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "cancel": {
                          "type": "string"
                        },
                        "details": {
                          "type": "string"
                        },
                        "start": {
                          "type": "string"
                        },
                        "why_you_are_seeing_this": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "required": [
                    "api_version",
                    "docs",
                    "domain",
                    "human_readable",
                    "ok",
                    "operated_by",
                    "operator",
                    "spf",
                    "terms"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The domain parameter is missing or is not a domain name.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "These endpoints answer GET only."
          },
          "502": {
            "description": "The DNS queries did not complete, so nothing is claimed."
          }
        }
      }
    },
    "/api/dmarc": {
      "get": {
        "operationId": "read_dmarc",
        "summary": "Reads the domain's DMARC record at _dmarc on the same two resolvers and parses every tag.",
        "description": "Reads the domain's DMARC record at _dmarc on the same two resolvers and parses every tag. Free: no key, no account, no rate ladder. GET only; OPTIONS is answered for CORS and any other method returns 405. Nothing about the queried domain is stored. Some keys in the response appear only under the condition named on them; the required list holds the keys present in every one of the three live readings this document was generated from.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "A bare domain name, no scheme and no path, for example example.com.",
            "schema": {
              "type": "string",
              "maxLength": 253
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A reading. ok is true.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_version": {
                      "type": "integer"
                    },
                    "operated_by": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "ok": {
                      "type": "boolean"
                    },
                    "domain": {
                      "type": "string"
                    },
                    "dmarc": {
                      "type": "object",
                      "properties": {
                        "domain": {
                          "type": "string"
                        },
                        "queried_name": {
                          "type": "string"
                        },
                        "record": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "records_found": {
                          "type": "integer"
                        },
                        "resolvers": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "resolvers_agree": {
                          "type": "boolean"
                        },
                        "tags": {
                          "type": [
                            "null",
                            "object",
                            "string"
                          ]
                        },
                        "tag_order": {
                          "type": [
                            "array",
                            "null",
                            "string"
                          ]
                        },
                        "policy": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "subdomain_policy": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "percent": {
                          "type": [
                            "integer",
                            "null",
                            "string"
                          ]
                        },
                        "aggregate_report_addresses": {
                          "type": "array"
                        },
                        "forensic_report_addresses": {
                          "type": "array"
                        },
                        "alignment": {
                          "type": "object",
                          "properties": {
                            "dkim": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "spf": {
                              "type": [
                                "null",
                                "string"
                              ]
                            }
                          }
                        },
                        "verdict": {
                          "type": "string"
                        },
                        "read_at": {
                          "type": "string"
                        }
                      }
                    },
                    "docs": {
                      "type": "string"
                    },
                    "human_readable": {
                      "type": "string"
                    },
                    "terms": {
                      "type": "string"
                    },
                    "watch_available": {
                      "type": "object",
                      "properties": {
                        "what": {
                          "type": "string"
                        },
                        "why_this_domain": {
                          "type": "string"
                        },
                        "price_usd_per_month": {
                          "type": "integer"
                        },
                        "covers": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "does_not_cover": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "cancel": {
                          "type": "string"
                        },
                        "details": {
                          "type": "string"
                        },
                        "start": {
                          "type": "string"
                        },
                        "why_you_are_seeing_this": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "required": [
                    "api_version",
                    "dmarc",
                    "docs",
                    "domain",
                    "human_readable",
                    "ok",
                    "operated_by",
                    "operator",
                    "terms"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The domain parameter is missing or is not a domain name.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "These endpoints answer GET only."
          },
          "502": {
            "description": "The DNS queries did not complete, so nothing is claimed."
          }
        }
      }
    },
    "/api/records": {
      "get": {
        "operationId": "read_records",
        "summary": "Both readings above in one call.",
        "description": "Both readings above in one call. Free: no key, no account, no rate ladder. GET only; OPTIONS is answered for CORS and any other method returns 405. Nothing about the queried domain is stored. Some keys in the response appear only under the condition named on them; the required list holds the keys present in every one of the three live readings this document was generated from.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "A bare domain name, no scheme and no path, for example example.com.",
            "schema": {
              "type": "string",
              "maxLength": 253
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A reading. ok is true.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_version": {
                      "type": "integer"
                    },
                    "operated_by": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "ok": {
                      "type": "boolean"
                    },
                    "domain": {
                      "type": "string"
                    },
                    "spf": {
                      "type": "object",
                      "properties": {
                        "domain": {
                          "type": "string"
                        },
                        "record": {
                          "type": "string"
                        },
                        "records_found": {
                          "type": "integer"
                        },
                        "resolvers": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "resolvers_agree": {
                          "type": "boolean"
                        },
                        "resolver_disagreements": {
                          "type": "array"
                        },
                        "lookups": {
                          "type": "object",
                          "properties": {
                            "counted": {
                              "type": "integer"
                            },
                            "limit": {
                              "type": "integer"
                            },
                            "limit_source": {
                              "type": "string"
                            },
                            "over_limit": {
                              "type": "boolean"
                            },
                            "at_or_near_limit": {
                              "type": "boolean"
                            }
                          }
                        },
                        "terms": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "n": {
                                "type": "integer"
                              },
                              "at": {
                                "type": "string"
                              },
                              "term": {
                                "type": "string"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "target": {
                                "type": "string"
                              },
                              "depth": {
                                "type": "integer"
                              },
                              "on_own_record": {
                                "type": "boolean"
                              },
                              "macro": {
                                "type": "boolean"
                              }
                            }
                          }
                        },
                        "include_targets": {
                          "type": "object",
                          "properties": {
                            "_spf.google.com": {
                              "type": "integer"
                            },
                            "spf.hostedrt.com": {
                              "type": "integer"
                            },
                            "spf1.mcsv.net": {
                              "type": "integer"
                            },
                            "spf.mandrillapp.com": {
                              "type": "integer"
                            },
                            "mail.zendesk.com": {
                              "type": "integer"
                            },
                            "stspg-customer.com": {
                              "type": "integer"
                            },
                            "_spf.salesforce.com": {
                              "type": "integer"
                            },
                            "spf.protection.outlook.com": {
                              "type": "integer"
                            },
                            "_netblocks.google.com": {
                              "type": "integer"
                            },
                            "_netblocks2.google.com": {
                              "type": "integer"
                            },
                            "servers.mcsv.net": {
                              "type": "integer"
                            },
                            "mktomail.com": {
                              "type": "integer"
                            },
                            "sendgrid.net": {
                              "type": "integer"
                            },
                            "ab.sendgrid.net": {
                              "type": "integer"
                            }
                          }
                        },
                        "void_lookups": {
                          "type": "array"
                        },
                        "multiple_records_at": {
                          "type": "array"
                        },
                        "macros_counted_not_followed": {
                          "type": "array"
                        },
                        "dns_queries_made": {
                          "type": "integer"
                        },
                        "truncated": {
                          "type": "boolean"
                        },
                        "incomplete": {
                          "type": "boolean"
                        },
                        "verdict": {
                          "type": "string"
                        },
                        "read_at": {
                          "type": "string"
                        }
                      }
                    },
                    "dmarc": {
                      "type": "object",
                      "properties": {
                        "domain": {
                          "type": "string"
                        },
                        "queried_name": {
                          "type": "string"
                        },
                        "record": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "records_found": {
                          "type": "integer"
                        },
                        "resolvers": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "resolvers_agree": {
                          "type": "boolean"
                        },
                        "tags": {
                          "type": [
                            "null",
                            "object",
                            "string"
                          ]
                        },
                        "tag_order": {
                          "type": [
                            "array",
                            "null",
                            "string"
                          ]
                        },
                        "policy": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "subdomain_policy": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "percent": {
                          "type": [
                            "integer",
                            "null",
                            "string"
                          ]
                        },
                        "aggregate_report_addresses": {
                          "type": "array"
                        },
                        "forensic_report_addresses": {
                          "type": "array"
                        },
                        "alignment": {
                          "type": "object",
                          "properties": {
                            "dkim": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "spf": {
                              "type": [
                                "null",
                                "string"
                              ]
                            }
                          }
                        },
                        "verdict": {
                          "type": "string"
                        },
                        "read_at": {
                          "type": "string"
                        }
                      }
                    },
                    "docs": {
                      "type": "string"
                    },
                    "human_readable": {
                      "type": "string"
                    },
                    "terms": {
                      "type": "string"
                    },
                    "watch_available": {
                      "type": "object",
                      "properties": {
                        "what": {
                          "type": "string"
                        },
                        "why_this_domain": {
                          "type": "string"
                        },
                        "price_usd_per_month": {
                          "type": "integer"
                        },
                        "covers": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "does_not_cover": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "cancel": {
                          "type": "string"
                        },
                        "details": {
                          "type": "string"
                        },
                        "start": {
                          "type": "string"
                        },
                        "why_you_are_seeing_this": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "required": [
                    "api_version",
                    "dmarc",
                    "docs",
                    "domain",
                    "human_readable",
                    "ok",
                    "operated_by",
                    "operator",
                    "spf",
                    "terms"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The domain parameter is missing or is not a domain name.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "These endpoints answer GET only."
          },
          "502": {
            "description": "The DNS queries did not complete, so nothing is claimed."
          }
        }
      }
    },
    "/api/dkim": {
      "get": {
        "operationId": "read_dkim",
        "summary": "Reads DKIM public keys. With no selector it probes a fixed list of common selector names; with ?selector= it reads that one.",
        "description": "Reads DKIM public keys. With no selector it probes a fixed list of common selector names; with ?selector= it reads that one. Free: no key, no account, no rate ladder. GET only; OPTIONS is answered for CORS and any other method returns 405. Nothing about the queried domain is stored. Some keys in the response appear only under the condition named on them; the required list holds the keys present in every one of the three live readings this document was generated from.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "A bare domain name, no scheme and no path, for example example.com.",
            "schema": {
              "type": "string",
              "maxLength": 253
            }
          },
          {
            "name": "selector",
            "in": "query",
            "required": false,
            "description": "One DKIM selector label, for example google or selector1. Omit it and a fixed list of common selectors is probed instead.",
            "schema": {
              "type": "string",
              "maxLength": 63
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A reading. ok is true.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_version": {
                      "type": "integer"
                    },
                    "operated_by": {
                      "type": "string"
                    },
                    "ok": {
                      "type": "boolean"
                    },
                    "docs": {
                      "type": "string"
                    },
                    "dkim": {
                      "type": "object",
                      "properties": {
                        "domain": {
                          "type": "string"
                        },
                        "read_at": {
                          "type": "string"
                        },
                        "mode": {
                          "type": "string"
                        },
                        "verdict": {
                          "type": "string"
                        },
                        "keys_found": {
                          "type": "integer"
                        },
                        "keys": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "selector": {
                                "type": "string"
                              },
                              "queried_name": {
                                "type": "string"
                              },
                              "provider_that_uses_this_selector": {
                                "type": "string"
                              },
                              "record": {
                                "type": "string"
                              },
                              "tags": {
                                "type": "object",
                                "properties": {
                                  "v": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "k": {
                                    "type": "string"
                                  },
                                  "h": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "t": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "s": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "n": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                }
                              },
                              "key_state": {
                                "type": "string"
                              },
                              "key_bits": {
                                "type": "integer"
                              },
                              "key_note": {
                                "type": "string"
                              },
                              "resolvers_agree": {
                                "type": "boolean"
                              },
                              "resolver_disagreement": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            }
                          }
                        },
                        "selectors_probed": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "selectors_probed_count": {
                          "type": "integer"
                        },
                        "dns_queries_made": {
                          "type": "integer"
                        },
                        "probe_truncated": {
                          "type": "boolean"
                        },
                        "resolvers": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "wildcard_domainkey": {
                          "type": "boolean"
                        },
                        "how_this_was_read": {
                          "type": "string"
                        },
                        "what_this_cannot_tell_you": {
                          "type": "string"
                        },
                        "operated_by": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "required": [
                    "api_version",
                    "dkim",
                    "docs",
                    "ok",
                    "operated_by"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The domain parameter is missing or is not a domain name.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "These endpoints answer GET only."
          },
          "502": {
            "description": "The DNS queries did not complete, so nothing is claimed."
          }
        }
      }
    },
    "/api/mta-sts": {
      "get": {
        "operationId": "read_mta_sts",
        "summary": "Reads the MTA-STS announcement record, the policy file it points to, and the TLS-RPT reporting record a domain publishes, against RFC 8461 and RFC 8460.",
        "description": "Reads what a domain publishes about transport security for mail sent to it: the TXT record at _mta-sts.<domain>, the policy file at https://mta-sts.<domain>/.well-known/mta-sts.txt (fetched only when that TXT record announces one, and never following a redirect, which RFC 8461 section 3.3 forbids), and the TXT record at _smtp._tls.<domain>. Returns the announced policy id, the policy mode, max_age and mx hosts, whether the policy host resolves, and a verdict. Free: no key, no account, no rate ladder. GET only; OPTIONS is answered for CORS and any other method returns 405. Nothing about the queried domain is stored. Some keys in the response appear only under the condition named on them; the required list holds the keys present in every one of the five live readings this document was generated from.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "A bare domain name, no scheme and no path, for example example.com.",
            "schema": {
              "type": "string",
              "maxLength": 253
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The reading, as published at the moment of the request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_version": {
                      "type": "integer"
                    },
                    "docs": {
                      "type": "string"
                    },
                    "domain": {
                      "type": "string"
                    },
                    "human_readable": {
                      "type": "string"
                    },
                    "mta_sts": {
                      "type": "object",
                      "properties": {
                        "max_age": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "mode": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "mx": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "policy_content_type": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "policy_error": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "policy_host": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "policy_host_resolves": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        },
                        "policy_http_status": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "policy_id": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "policy_url": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "policy_version": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "published": {
                          "type": "boolean"
                        },
                        "read_at": {
                          "type": "string"
                        },
                        "record": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "txt_name": {
                          "type": "string"
                        },
                        "verdict": {
                          "type": "string"
                        },
                        "verdict_text": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "max_age",
                        "mode",
                        "mx",
                        "policy_content_type",
                        "policy_error",
                        "policy_host",
                        "policy_host_resolves",
                        "policy_http_status",
                        "policy_id",
                        "policy_url",
                        "policy_version",
                        "published",
                        "read_at",
                        "record",
                        "txt_name",
                        "verdict",
                        "verdict_text"
                      ]
                    },
                    "ok": {
                      "type": "boolean"
                    },
                    "operated_by": {
                      "type": "string"
                    },
                    "operator": {
                      "type": "string"
                    },
                    "terms": {
                      "type": "string"
                    },
                    "tls_rpt": {
                      "type": "object",
                      "properties": {
                        "published": {
                          "type": "boolean"
                        },
                        "record": {
                          "type": [
                            "null",
                            "string"
                          ]
                        },
                        "txt_name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "published",
                        "record",
                        "txt_name"
                      ]
                    }
                  },
                  "required": [
                    "api_version",
                    "docs",
                    "domain",
                    "human_readable",
                    "mta_sts",
                    "ok",
                    "operated_by",
                    "operator",
                    "terms",
                    "tls_rpt"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The domain parameter is missing or is not a domain name.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "These endpoints answer GET only."
          },
          "502": {
            "description": "The DNS queries did not complete, so nothing is claimed."
          }
        }
      }
    }
  }
}