Bewary · Schema

Envelope

The answer of every lookup and check.

CompanySecurityFraud PreventionMCP

Properties

Name Type Description
schema_version string
request_id string
checked_at string RFC 3339 UTC.
engine string
models object
input object
verdict string
p_scam number Probability that the input is part of a scam.
risk_score integer
confidence number
classification object
reason_codes array The codes that decided the verdict, strongest first, at most 5.
entities array
signals array
degraded boolean
degraded_reasons array
cached boolean
explanation object
View JSON Schema on GitHub

JSON Schema

bewary-envelope-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/bewary/json-schema/bewary-envelope-schema.json",
  "title": "Envelope",
  "description": "The answer of every lookup and check.",
  "x-generated": "2026-11-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/bewary-openapi.json#/components/schemas/Envelope",
  "properties": {
    "schema_version": {
      "type": "string",
      "title": "Schema Version"
    },
    "request_id": {
      "type": "string",
      "title": "Request Id"
    },
    "checked_at": {
      "type": "string",
      "title": "Checked At",
      "description": "RFC 3339 UTC."
    },
    "engine": {
      "type": "string",
      "title": "Engine"
    },
    "models": {
      "$ref": "#/$defs/ModelsUsed"
    },
    "input": {
      "$ref": "#/$defs/InputInfo"
    },
    "verdict": {
      "type": "string",
      "enum": [
        "scam",
        "suspicious",
        "safe",
        "unknown"
      ],
      "title": "Verdict"
    },
    "p_scam": {
      "type": "number",
      "maximum": 1.0,
      "minimum": 0.0,
      "title": "P Scam",
      "description": "Probability that the input is part of a scam."
    },
    "risk_score": {
      "type": "integer",
      "maximum": 100.0,
      "minimum": 0.0,
      "title": "Risk Score"
    },
    "confidence": {
      "type": "number",
      "maximum": 1.0,
      "minimum": 0.0,
      "title": "Confidence"
    },
    "classification": {
      "anyOf": [
        {
          "$ref": "#/$defs/Classification"
        },
        {
          "type": "null"
        }
      ]
    },
    "reason_codes": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Reason Codes",
      "description": "The codes that decided the verdict, strongest first, at most 5."
    },
    "entities": {
      "items": {
        "$ref": "#/$defs/Entity"
      },
      "type": "array",
      "title": "Entities"
    },
    "signals": {
      "items": {
        "$ref": "#/$defs/Signal"
      },
      "type": "array",
      "title": "Signals"
    },
    "degraded": {
      "type": "boolean",
      "title": "Degraded"
    },
    "degraded_reasons": {
      "items": {
        "type": "string",
        "enum": [
          "source_timeout",
          "source_unavailable",
          "budget_limit",
          "redirect_unresolved",
          "input_truncated",
          "model_unavailable",
          "page_unavailable"
        ]
      },
      "type": "array",
      "title": "Degraded Reasons"
    },
    "cached": {
      "type": "boolean",
      "title": "Cached"
    },
    "explanation": {
      "anyOf": [
        {
          "$ref": "#/$defs/Explanation"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "schema_version",
    "request_id",
    "checked_at",
    "engine",
    "models",
    "input",
    "verdict",
    "p_scam",
    "risk_score",
    "confidence",
    "reason_codes",
    "entities",
    "signals",
    "degraded",
    "degraded_reasons",
    "cached"
  ],
  "$defs": {
    "AppFacts": {
      "properties": {
        "store": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "apple",
                "google_play"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Store"
        },
        "app_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "App Id",
          "description": "Apple: the numeric App Store id. Google Play: the package name (application id)."
        },
        "status": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "live",
                "removed",
                "not_found",
                "unknown"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Status",
          "description": "live: the store lists it now. removed: we saw it live before and the store no longer lists it. not_found: the store has no such app and we never saw it live. unknown: the store could not be read (degraded)."
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Name",
          "description": "The store's title for the app (from the last live sighting)."
        },
        "developer": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Developer",
          "description": "The developer or seller name the store publishes (from the last live sighting)."
        },
        "rating_count": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rating Count",
          "description": "How many ratings the store shows (Apple: in that storefront)."
        },
        "storefront": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Storefront",
          "description": "Apple: the App Store country read, ISO 3166-1 alpha-2."
        },
        "first_seen": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "First Seen",
          "description": "The first time we saw it live, RFC 3339 UTC."
        },
        "last_seen": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Last Seen",
          "description": "The last time we saw it live, RFC 3339 UTC."
        },
        "missing_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Missing Since",
          "description": "The first check that found it gone after a live sighting, RFC 3339 UTC; null while live."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "AppFacts",
      "description": "A mobile app on the Apple App Store or Google Play (task E12, added 2026-10-29)."
    },
    "ArchiveHistory": {
      "properties": {
        "checked_at": {
          "type": "string",
          "title": "Checked At",
          "description": "When we read the archive's index, RFC 3339 UTC. Kept for up to 30 days."
        },
        "captured": {
          "type": "boolean",
          "title": "Captured",
          "description": "The archive holds at least one capture of the host's homepage."
        },
        "first_capture_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "First Capture At",
          "description": "The first capture, RFC 3339 UTC; null when none."
        },
        "last_capture_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Last Capture At",
          "description": "The latest capture, RFC 3339 UTC; null when none."
        },
        "captured_before_registration": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Captured Before Registration",
          "description": "The homepage was captured more than 30 days before registered_at: the name had an earlier life before this registration (it lapsed and someone registered it again). Null when either date is unknown, or for a tenant of a hosting platform."
        },
        "months_before_registration": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Months Before Registration",
          "description": "How many calendar months hold a capture before registered_at; null unless captured_before_registration."
        },
        "last_capture_before_registration_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Last Capture Before Registration At",
          "description": "The last capture before registered_at, RFC 3339 UTC: the end of the earlier life."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "checked_at",
        "captured"
      ],
      "title": "ArchiveHistory",
      "description": "The site's history in a public web archive (E9): when its homepage was first and last captured, and whether\nit was captured before the current registration began (a name that lapsed and was registered again)."
    },
    "Brand": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Id"
        },
        "name": {
          "type": "string",
          "title": "Name"
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "title": "Brand"
    },
    "Classification": {
      "properties": {
        "artifact_type": {
          "type": "string",
          "title": "Artifact Type",
          "description": "What the message is: delivery_notice, account_alert, otp_or_2fa_code and so on."
        },
        "stance": {
          "type": "string",
          "enum": [
            "inbound_solicitation",
            "user_own_record",
            "ambiguous"
          ],
          "title": "Stance"
        },
        "ask": {
          "type": "string",
          "enum": [
            "none",
            "pay",
            "click_link",
            "call_back",
            "give_credentials",
            "give_code",
            "install_app",
            "reply",
            "other"
          ],
          "title": "Ask"
        },
        "scam_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Scam Type",
          "description": "Null until the calibrated classifier ships."
        },
        "impersonated_brand": {
          "anyOf": [
            {
              "$ref": "#/$defs/Brand"
            },
            {
              "type": "null"
            }
          ]
        },
        "probabilities": {
          "additionalProperties": {
            "additionalProperties": {
              "type": "number"
            },
            "type": "object"
          },
          "type": "object",
          "title": "Probabilities"
        }
      },
      "type": "object",
      "required": [
        "artifact_type",
        "stance",
        "ask"
      ],
      "title": "Classification"
    },
    "ComplaintStats": {
      "properties": {
        "count": {
          "type": "integer",
          "title": "Count"
        },
        "days": {
          "type": "integer",
          "title": "Days",
          "description": "Distinct days with a complaint."
        },
        "first_at": {
          "type": "string",
          "title": "First At",
          "description": "First complaint day, 00:00Z."
        },
        "last_at": {
          "type": "string",
          "title": "Last At",
          "description": "Last complaint day, 00:00Z."
        },
        "subjects": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Subjects",
          "description": "FTC: subject code (imposters, debt_reduction, ...); FCC: call type (prerecorded_voice, live_voice, text_message, ...)."
        },
        "robocall_share": {
          "type": "number",
          "maximum": 1.0,
          "minimum": 0.0,
          "title": "Robocall Share",
          "description": "FTC: recorded-message flag; FCC: prerecorded-voice share."
        },
        "daily": {
          "items": {
            "$ref": "#/$defs/DailyCount"
          },
          "type": "array",
          "title": "Daily",
          "description": "The last 90 days, only days with complaints, oldest first."
        },
        "reporter_states": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Reporter States",
          "description": "Top 5 US states (USPS codes) of the people who complained."
        },
        "hours": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Hours",
          "description": "Complaints by the hour of the call, \"0\" to \"23\", every hour present: the reporter's local time as they gave it (FCC: the call time; FTC: the call time when it was not given as midnight). 13 months."
        },
        "weekdays": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Weekdays",
          "description": "Complaints by weekday of the complaint day, \"1\" (Monday) to \"7\", every day present. 13 months."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "count",
        "days",
        "first_at",
        "last_at",
        "subjects",
        "robocall_share",
        "daily",
        "reporter_states",
        "hours",
        "weekdays"
      ],
      "title": "ComplaintStats",
      "description": "One source's complaints about a number over the retained 13 months (DIRECTORY-CONTRACT.md).\nCounts only: never a complaint's text, a name or a place smaller than a state."
    },
    "DailyCount": {
      "properties": {
        "day": {
          "type": "string",
          "title": "Day",
          "description": "YYYY-MM-DD."
        },
        "count": {
          "type": "integer",
          "title": "Count"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "day",
        "count"
      ],
      "title": "DailyCount"
    },
    "DatasetRef": {
      "properties": {
        "dataset": {
          "type": "string",
          "enum": [
            "registration",
            "dns",
            "certificates",
            "web_archive",
            "threat_feeds",
            "threat_aggregates",
            "brand_registry",
            "web_pages",
            "ip_network",
            "phone_numbering",
            "us_numbering",
            "phone_complaints",
            "honeypot_lines",
            "phone_reports_de",
            "shortcodes",
            "email_providers",
            "breaches",
            "wallet_reports",
            "sanctions",
            "issuer_freezes",
            "community_reports",
            "campaigns",
            "text_model",
            "platform_pages",
            "iban_registry",
            "bank_codes",
            "app_stores",
            "short_links",
            "payment_profiles"
          ],
          "title": "Dataset"
        },
        "coverage": {
          "type": "string",
          "pattern": "^(WW|[A-Z]{2})$",
          "title": "Coverage",
          "description": "WW: worldwide. A country code (US, DE): the data describes only that country's numbers, codes or complaints."
        },
        "in_coverage": {
          "type": "boolean",
          "title": "In Coverage"
        }
      },
      "type": "object",
      "required": [
        "dataset",
        "coverage",
        "in_coverage"
      ],
      "title": "DatasetRef"
    },
    "DnsFacts": {
      "properties": {
        "resolves": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Resolves"
        },
        "a": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "A"
        },
        "mx": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Mx"
        },
        "ns": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ns"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "DnsFacts"
    },
    "DomainFacts": {
      "properties": {
        "registrable_domain": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Registrable Domain",
          "description": "The owner boundary per the Public Suffix List with its private section: x.pages.dev stays x.pages.dev. Block by this."
        },
        "registered_domain": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Registered Domain",
          "description": "The name a registry sold (Public Suffix List, ICANN section): x.pages.dev -> pages.dev. registered_at, expires_at and registrar describe this name."
        },
        "tld": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Tld"
        },
        "tld_abuse": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "low",
                "medium",
                "high"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Tld Abuse"
        },
        "registered_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Registered At",
          "description": "RFC 3339 UTC."
        },
        "expires_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Expires At",
          "description": "When the registration expires, RFC 3339 UTC, from RDAP."
        },
        "age_days": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Age Days"
        },
        "age_bucket": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "lt_7d",
                "d7_30",
                "d30_90",
                "d90_365",
                "gt_1y",
                "unknown"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Age Bucket"
        },
        "registrar": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Registrar",
          "description": "The registrar's name, from RDAP."
        },
        "dns": {
          "anyOf": [
            {
              "$ref": "#/$defs/DnsFacts"
            },
            {
              "type": "null"
            }
          ]
        },
        "hosting": {
          "anyOf": [
            {
              "$ref": "#/$defs/HostingFacts"
            },
            {
              "type": "null"
            }
          ],
          "description": "The hosting platform serving the host (1.9.0), null when none we know of. Says where a site lives, never whether it is honest: the platforms host real brands and fake shops alike."
        },
        "status": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "live",
                "gone",
                "broken",
                "parked",
                "held",
                "unknown"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Status",
          "description": "What the domain is doing now: live (resolves), gone (NXDOMAIN), broken (SERVFAIL: a delegation that no longer answers), parked (a parking service's name servers), held (does not resolve because its registry or registrar holds it, see hold), unknown (no answer in time)."
        },
        "cert_first_seen": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cert First Seen"
        },
        "lookalike": {
          "anyOf": [
            {
              "$ref": "#/$defs/Lookalike"
            },
            {
              "type": "null"
            }
          ]
        },
        "platform": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "none",
                "multi_tenant"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Platform"
        },
        "allowlisted": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Allowlisted"
        },
        "listed": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Listed",
          "description": "On Bewary's scam list."
        },
        "seen_in_checks_7d": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Seen In Checks 7D"
        },
        "country": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Country",
          "description": "ISO 3166-1 alpha-2 country its country-code TLD names; null for generic TLDs and generic-use ccTLDs (.co, .io, .tv...)."
        },
        "target_countries": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Target Countries",
          "description": "ISO 3166-1 alpha-2 countries whose people it is aimed at, from the national lists that name it (CERT Polska: PL, Taiwan's 165 line: TW, Germany's regulator: DE, US complaint feeds: US). Empty when no list with a national scope names it."
        },
        "list_count": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "List Count",
          "description": "How many lists name it (our own and others'); 96% of listed domains are on one list (2026-10-27)."
        },
        "site": {
          "anyOf": [
            {
              "$ref": "#/$defs/SiteVerdict"
            },
            {
              "type": "null"
            }
          ],
          "description": "Our verdict on the site, when our worker read its page in the last 90 days; null otherwise."
        },
        "platform_status": {
          "anyOf": [
            {
              "$ref": "#/$defs/PlatformStatus"
            },
            {
              "type": "null"
            }
          ],
          "description": "The hosting platform's own answer about the site (Vercel's takedown page, Cloudflare's phishing warning, a host's not-found page), when our worker read it; null otherwise."
        },
        "registry_status": {
          "anyOf": [
            {
              "items": {
                "type": "string",
                "enum": [
                  "active",
                  "inactive",
                  "associated",
                  "locked",
                  "validated",
                  "proxy",
                  "private",
                  "removed",
                  "obscured",
                  "add_period",
                  "auto_renew_period",
                  "renew_period",
                  "transfer_period",
                  "redemption_period",
                  "pending_create",
                  "pending_delete",
                  "pending_renew",
                  "pending_restore",
                  "pending_transfer",
                  "pending_update",
                  "client_hold",
                  "server_hold",
                  "client_delete_prohibited",
                  "client_renew_prohibited",
                  "client_transfer_prohibited",
                  "client_update_prohibited",
                  "server_delete_prohibited",
                  "server_renew_prohibited",
                  "server_transfer_prohibited",
                  "server_update_prohibited",
                  "delete_prohibited",
                  "renew_prohibited",
                  "transfer_prohibited",
                  "update_prohibited",
                  "other"
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Registry Status",
          "description": "The status codes the registry publishes for registered_domain (the EPP statuses of RFC 5731 and 3915 as RDAP carries them, RFC 8056), in snake case: server_hold, client_hold, redemption_period, pending_delete, client_transfer_prohibited and the rest. Null when the registry publishes no status."
        },
        "hold": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "none",
                "registrar",
                "registry",
                "both"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Hold",
          "description": "Who holds the name out of the DNS: registry (serverHold), registrar (clientHold), both, or none. A hold is how registries and registrars take a domain down. Null when the registry's status is unknown."
        },
        "registered": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Registered",
          "description": "true: the registry has registered_domain; false: the registry answered that no such name is registered (it lapsed or was deleted, and anyone may register it). Null when no registration service covers the TLD."
        },
        "registration_checked_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Registration Checked At",
          "description": "When the registration record (registered_at, expires_at, registrar, registry_status, hold) was read, RFC 3339 UTC. An answer is kept up to 7 days; a daily pass reads names on our lists again, those that stopped resolving first."
        },
        "archive": {
          "anyOf": [
            {
              "$ref": "#/$defs/ArchiveHistory"
            },
            {
              "type": "null"
            }
          ],
          "description": "The site's history in a public web archive; null until we have read it (a first lookup queues the read)."
        },
        "first_seen_by_bewary": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "First Seen By Bewary",
          "description": "When Bewary's own watch first saw this host, in a new certificate or a new name in a registry's zone file, RFC 3339 UTC; null when it never did."
        },
        "first_listed_publicly": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "First Listed Publicly",
          "description": "When a public list we read first named this host, RFC 3339 UTC; null when none names it, or when a list naming it already did the first time we read that list (the date it was added there is not known)."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "DomainFacts"
    },
    "EmailFacts": {
      "properties": {
        "domain": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Domain",
          "description": "Entity id of the address's domain."
        },
        "mx": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Mx"
        },
        "disposable": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Disposable"
        },
        "free_provider": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Free Provider"
        },
        "role_account": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Role Account"
        },
        "disposable_status": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "receiving",
                "dead",
                "unknown"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Disposable Status",
          "description": "For a throwaway provider: receiving (it still takes mail: a mail host that resolves, or the domain's own address when it has no MX, RFC 5321), dead (the name is gone, declares it takes no mail with a null MX, RFC 7505, or has no mail host that resolves), unknown (not re-checked yet). Null when not disposable."
        },
        "disposable_checked_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Disposable Checked At",
          "description": "When the throwaway domain was last re-checked, RFC 3339 UTC; null when not disposable or not checked yet."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "EmailFacts"
    },
    "Entity": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id",
          "description": "e1, e2 and so on, unique in the response."
        },
        "type": {
          "type": "string",
          "enum": [
            "url",
            "domain",
            "ip",
            "phone",
            "shortcode",
            "email",
            "wallet",
            "payment_handle",
            "iban",
            "app"
          ],
          "title": "Type"
        },

# --- truncated at 32 KB (81 KB total) ---
# Full source: https://artifacts.apis.io/bewary/json-schema/bewary-envelope-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/bewary-envelope"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.