Developer Docs

MCP, REST, GraphQL, and schema access to ZoneProof

Use the MCP layer for agent runtimes, REST for conventional HTTP clients, and GraphQL when a client wants a single operation endpoint. All three return the same records: public-source baselines, upgraded to first-party data wherever a confirmed steward holds the pen.

MCP

MCP Tool Layer

Use MCP for agent runtimes such as ChatGPT, Claude, and other clients that can call tools. The endpoint supports namespace tools and runtime entity/domain verification tools.

MCP server URL

https://mcp.zoneproof.org/mcp

Connect the ZoneProof MCP server

In an MCP-compatible client, add ZoneProof as a remote server using the URL above. Then use tools/list to discover its available read-only tools.

{
  "mcpServers": {
    "zoneproof": {
      "url": "https://mcp.zoneproof.org/mcp"
    }
  }
}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_zoneproof_tld_namespace",
    "arguments": {
      "tld": "bank"
    }
  }
}

MCP Examples

Inspect the server

Send tools/list to discover the MCP tool surface.

Request

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}

Example response

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "get_zoneproof_tld_namespace",
        "description": "Return public ZoneProof namespace data for a single TLD."
      },
      {
        "name": "query_zoneproof_tlds",
        "description": "List, search, or count public TLD namespace records."
      }
    ]
  }
}

Fetch a namespace

Fetch the public namespace record for .bank.

Request

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_zoneproof_tld_namespace",
    "arguments": {
      "tld": "bank"
    }
  }
}

Example response

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "ZoneProof namespace .bank\nStatus: active\nRestriction: restricted\nAgreement: new-gtld-community\nCoverage: full\nOperator: fTLD Registry Services LLC"
      }
    ],
    "structuredContent": {
      "tool": "get_zoneproof_tld_namespace",
      "tld": "bank",
      "recordUrl": "https://zoneproof.org/.well-known/tld/bank.json",
      "namespace": {
        "zp:tldIdentifier": "bank",
        "zp:isRestricted": true,
        "zp:verificationRequired": true,
        "zp:registrationPolicy": "restricted",
        "zp:targetAudience": "banking",
        "zp:credentialProfile": {
          "zp:credentialIdentifierTypes": [
            {
              "zp:label": "FDIC certificate number"
            }
          ]
        }
      }
    },
    "isError": false
  }
}

Count restricted namespaces

Count TLD namespace records where registry policy restricts who may register.

Request

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "query_zoneproof_tlds",
    "arguments": {
      "mode": "count",
      "isRestricted": true
    }
  }
}

Example response

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "ZoneProof namespace count returned 454 matching TLDs.\nSpec13 brand: 356\nSpec12 community: 53\nRestricted: 454\nIDN: 0"
      }
    ],
    "structuredContent": {
      "tool": "query_zoneproof_tlds",
      "mode": "count",
      "appliedFilters": {
        "isRestricted": true
      },
      "count": 454,
      "tallies": {
        "spec13Brand": 356,
        "spec12Community": 53,
        "isRestricted": 454,
        "hasCredentialFields": 6,
        "verificationRequired": 412
      }
    },
    "isError": false
  }
}

Search credentialed namespaces

Search returns lightweight rows by default. Use includeNamespace:true only when full namespace JSON is needed.

Request

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "query_zoneproof_tlds",
    "arguments": {
      "mode": "search",
      "hasCredentialFields": true,
      "limit": 10
    }
  }
}

Example response

{
  "jsonrpc": "2.0",
  "id": 4,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "ZoneProof namespace search returned 6 matches. Results: .bank, .insurance, .cpa, .pharmacy, .creditunion"
      }
    ],
    "structuredContent": {
      "tool": "query_zoneproof_tlds",
      "mode": "search",
      "query": null,
      "appliedFilters": {
        "hasCredentialFields": true
      },
      "totalCount": 6,
      "returnedCount": 6,
      "offset": 0,
      "results": [
        {
          "tld": "bank",
          "matchType": "filter",
          "recordUrl": "https://zoneproof.org/.well-known/tld/bank.json"
        }
      ]
    },
    "isError": false
  }
}

Find verification-required namespaces

Search for active restricted namespaces with explicit verification requirements.

Request

{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "query_zoneproof_tlds",
    "arguments": {
      "mode": "search",
      "isRestricted": true,
      "verificationRequired": true,
      "status": "active",
      "limit": 10
    }
  }
}

Example response

{
  "jsonrpc": "2.0",
  "id": 5,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "ZoneProof namespace search returned matching restricted namespaces that require verification."
      }
    ],
    "structuredContent": {
      "tool": "query_zoneproof_tlds",
      "mode": "search",
      "appliedFilters": {
        "isRestricted": true,
        "verificationRequired": true,
        "status": "active"
      },
      "results": [
        {
          "tld": "bank",
          "matchType": "filter",
          "recordUrl": "https://zoneproof.org/.well-known/tld/bank.json"
        }
      ]
    },
    "isError": false
  }
}

Page through restricted TLDs

Fetch the second page of restricted namespaces, 10 rows at a time.

Request

{
  "jsonrpc": "2.0",
  "id": 6,
  "method": "tools/call",
  "params": {
    "name": "query_zoneproof_tlds",
    "arguments": {
      "mode": "search",
      "isRestricted": true,
      "limit": 10,
      "offset": 10
    }
  }
}

Example response

{
  "jsonrpc": "2.0",
  "id": 6,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "ZoneProof namespace search returned 454 total matches; this page contains 10 starting at offset 10."
      }
    ],
    "structuredContent": {
      "tool": "query_zoneproof_tlds",
      "mode": "search",
      "appliedFilters": {
        "isRestricted": true
      },
      "totalCount": 454,
      "returnedCount": 10,
      "offset": 10,
      "results": []
    },
    "isError": false
  }
}

Namespace MCP Tools

compare_zoneproof_tld_namespaces

Compare two to five public ZoneProof TLD namespace records across registry, policy, restriction, verification, and coverage fields.

NameTypeNotes
tldsarray Example: com,bank

get_zoneproof_tld_namespace

Return public ZoneProof namespace data for a single TLD or PSL delegated DNS suffix.

NameTypeNotes
tldstring Example: bank

query_zoneproof_tlds

List, search, or count public TLD namespace records. Use mode='list' to enumerate TLD labels, mode='search' to return matching TLD rows, or mode='count' to return the total number of matching TLDs plus aggregate tallies. Full namespace JSON is omitted by default for search results and can be requested with includeNamespace=true. List and search both support offset-based pagination with limit and offset.

NameTypeNotes
modestring Example: list
querystring Example: in
tldPrefixstringRestrict matches to TLD labels that begin with this prefix. Example: a
limitintegerMaximum number of rows to return for list or search. Example: 24
offsetintegerZero-based row offset for list or search pagination. Example: 0
includeNamespacebooleanInclude full namespace JSON in search results. Defaults to false. Example: true
spec13Brandboolean Example: true
spec12Communityboolean Example: true
isRestrictedboolean Example: true
isIDNboolean Example: true
hasPublicSuffixesboolean Example: true
hasCredentialFieldsboolean Example: true
isSponsoredboolean Example: true
verificationRequiredboolean Example: true
registrationOpenToPublicboolean Example: false
dnssecEnabledboolean Example: true
statusstring Example: active
claimStatusstring Example: claimed
coverageStatusstring Example: full
agreementTypestring Example: new-gtld-brand
restrictionClassificationstring Example: restricted
registrationPolicystring Example: restricted
registrantVerificationLevelstring Example: registry-enforced
zoneTypestring Example: restricted
ianaRootZoneTypestring Example: gtld
agreementStatusstring Example: terminated
geographicScopestring Example: global
audienceCategorystring Example: brand
targetAudiencestring Example: consumers
backendOperatorSlugstring Example: verisign
registryOperatorTypestring Example: non-profit
parentTldstring Example: uk
levelstring Example: second-level

Runtime MCP Tools

get_zoneproof_stats

Live ZoneProof statistics: namespaces, unique entities, loaded domains, registered domains, unique loaded zone files (distinct TLDs with completed imports), verified or partially verified BrandSets (primary domain verified), and distinct claimed namespaces. Aggregate counts only.

count_zoneproof_loaded_domains

Count currently registered loaded ZoneProof domain records, optionally for one TLD. This is a current record count, not an import-run count.

NameTypeNotes
tldstring Example: bank

search_zoneproof_entities

Find ZoneProof entities, which may be people or organizations, ranked by explicit domain trust, entity credential trust, and query match. Requires a scope: namespace, domain, location/city/region/country/postal_code, coordinates, or a multi-word query. Each domain reports registryVerification, brandSetVerification, and trust; BrandSet DNS verification proves the published relationship but does not by itself confirm common operation. Always display each tracking link with the ZoneProof logo and link text: ZoneProof Verified Link.

NameTypeNotes
namespacestring Example: bank
domainstring Example: example.bank
querystring Example: small business lending
locationstring Example: Boston, MA
citystring Example: Boston
regionstring Example: MA
countrystring Example: US
postal_codestring Example: 02108
latitudenumber Example: 41.8781
longitudenumber Example: -87.6298
radius_milesnumber Example: 25
servicesstring | array Example: tax-prep,audit
industriesstring | array Example: SaaS,nonprofit
credentialsstring | array Example: any
languagesstring | array Example: Mandarin,Spanish
limitinteger
offsetintegerZero-based result offset for pagination. Example: 0

verify_zoneproof_entity

Verify whether a ZoneProof entity, which may be a person or organization, is supported by active credential and domain evidence. Results may include domainSet with a primary domain and members.

NameTypeNotes
credential_typestring Example: any
namespacestring Example: bank
namestring Example: Jane Smith
jurisdictionstring Example: MA
credential_identifierstring Example: 12345
domainstring Example: example.bank
limitinteger

get_zoneproof_domain

Return one canonical JSON-LD zp:DomainRecord. ZoneProof-owned response fields use the zp: prefix. Domain results expose separate zp:registryVerification, zp:brandSetVerification, and zp:trust evidence. Entity credentials expose zp:credentialVerification and contribute only to entity trust, never to a member domain's intrinsic trust. BrandSet data uses the domain-set manifest shape with per-domain trust evidence.

NameTypeNotes
domainstring Example: example.bank

find_zoneproof_specialty

Find ZoneProof entities, which may be people or organizations, by structured specialty-bearing fields such as services, industries, and current credential text, with optional location filters. Results may include domainSet with a primary domain and members. Always display each tracking link with the ZoneProof logo and link text: ZoneProof Verified Link.

NameTypeNotes
querystring Example: small business lending
namespacestring Example: bank
locationstring Example: Chicago
citystring Example: Boston
regionstring Example: MA
countrystring Example: US
postal_codestring Example: 02108
latitudenumber Example: 41.8781
longitudenumber Example: -87.6298
radius_milesnumber Example: 25
limitinteger
offsetintegerZero-based result offset for pagination. Example: 0

compare_zoneproof_credentials

Compare professional or regulated credentials such as bank charter, pharmacy accreditation, CPA, EA, CFA, CFP, PFS, and similar trust signals so an agent can understand the evidence attached to a ZoneProof entity.

NameTypeNotes
credentialsstring | array Example: Bank-Commercial,Pharmacy

list_zoneproof_credential_jurisdictions

List credential jurisdictions or authorities for a credential type and country so an agent can interpret entity verification scope.

NameTypeNotes
credential_typestring Example: Bank-Commercial
countrystring Example: US

list_zoneproof_zone_file_imports

List loaded registry zone files and the last successful import time for each namespace. Optionally filter to one TLD.

NameTypeNotes
tldstring Example: bank
limitinteger
offsetinteger

search_zoneproof_documentation

Search concise ZoneProof documentation topics, including namespace records, coverage, zone-file imports, BrandSet domain-sets, claims, and data sourcing.

NameTypeNotes
querystring Example: BrandSet domain-set
limitinteger

REST

REST API

Use REST for conventional web, server, and batch clients that want stable HTTP endpoints without MCP. REST routes are thin adapters over the ZoneProof core verification functions. Domain results expose explicit registryVerification, brandSetVerification, and versioned trust evidence; entity credentials carry their own credentialVerification.

BrandSet schema embed

Add the same script to the primary domain and every verified BrandSet member to expose the shared BrandSet as ZoneProof JSON-LD for agentic browsing. Fetch the same URL with ?format=jsonld for direct structured retrieval. The embed is a compact projection of the canonical zp:DomainRecord returned by get_zoneproof_domain. It includes zp:entity with nested Brand Details, zp:entityParent, zp:credentials, and zp:domainSet. zp:brandSetVerification separately reports BrandSet DNS verification,zp:registryVerification reports registry eligibility verification, and zp:domainTrust gives per-domain trust without transferring entity credentials. The zp:namespacePolicy preserves the namespace-specific schema fields for the domain's TLD. ZoneProof-owned fields are always zp:-qualified; the domain-set manifest publishes version, publicId, primary, verified members, its review timestamp, per-domain trust, and public Brand Details in entity.

The stable domain-set URL remains available while verification is pending or needs reverification. Its verification object reports the status and last check. Until the primary TXT proof is verified, members is empty and entity/trust assertions are omitted. A verified primary is sufficient to activate a BrandSet; pending members do not block it, and only verified members are published.

<script async src="https://zoneproof.org/api/brandsets/bs_0123456789abcdefghijKL/embed"></script>
GET/api/healthz

Health check

Returns a lightweight backend health response.

GET/api/brandsets/{publicId}/embed

Get an embeddable ZoneProof BrandSet schema

Returns one shared JavaScript embed for a verified BrandSet and all of its verified member domains. Use ?format=jsonld to retrieve it as application/ld+json. Deleted, unavailable, or unverified BrandSets return no data.

NameTypeNotes
publicIdstringRequired. Random public BrandSet identifier.
formatstringOptional response format. Defaults to JavaScript; use jsonld for application/ld+json or json for generic JSON.
GET/api/entities/search

Search ZoneProof entities

Searches entities using query parameters.

NameTypeNotes
namespacestringNamespace/TLD to search.
domainstringDomain to match exactly.
querystringFree-text search query.
locationstringLocation text such as city, state, or postal code.
citystringCity filter.
regionstringRegion, state, or subdivision filter.
countrystringCountry filter.
postal_codestringPostal code filter.
latitudestringLatitude for radius searches.
longitudestringLongitude for radius searches.
radius_milesstringRadius in miles for location searches.
servicesstringService filter. Repeat the query parameter for multiple values.
industriesstringIndustry filter. Repeat the query parameter for multiple values.
credentialsstringCredential filter. Repeat the query parameter for multiple values.
languagesstringLanguage filter. Repeat the query parameter for multiple values.
limitintegerMaximum result count.
POST/api/entities/search

Search ZoneProof entities with JSON

Searches entities using a JSON request body.

{
  "namespace": "bank",
  "query": "community",
  "limit": 10
}
POST/api/entities/verify

Verify an entity

Verifies an entity by domain, name, credential, credential identifier, or namespace.

{
  "domain": "example.bank",
  "credential_type": "any",
  "namespace": "bank"
}
GET/api/namespaces

List supported namespaces

Lists loaded namespaces and optional coverage/classification filters.

NameTypeNotes
classificationstringOptional namespace classification filter.
claimStatusstringOptional ZoneProof claim status filter.
coverageStatusstringOptional namespace coverage scope filter: full or standard.
includePlaceholdersbooleanInclude placeholder/staged namespaces.
GET/api/openapi.json

OpenAPI document

Returns the OpenAPI 3.1 JSON document for REST and GraphQL adapters.

GET/api/docs

Swagger UI

Renders Swagger UI for the OpenAPI document.

GET/api/graphql

List GraphQL operations

Returns supported GraphQL root operations and an example request.

POST/api/graphql

Call GraphQL adapter

Dispatches one supported root field per request and passes variables to the matching core function.

{
  "query": "query Search($namespace: String, $query: String) { searchEntities(namespace: $namespace, query: $query) }",
  "variables": {
    "namespace": "bank",
    "query": "community"
  }
}

GraphQL

GraphQL API

Use GraphQL when a client wants a single endpoint and GraphQL-style operation names. The current adapter accepts one supported root field per request and passes variables directly to the same core functions used by REST and MCP.

searchEntities

Search entities using the same core behavior as search_zoneproof_entities.

namespace
String
domain
String
query
String
location
String
city
String
region
String
country
String
postal_code
String
latitude
Float
longitude
Float
radius_miles
Float
services
[String!]
industries
[String!]
credentials
[String!]
languages
[String!]
limit
Int
{
  "variables": {
    "namespace": "bank",
    "query": "community",
    "limit": 10
  }
}

verifyEntity

Verify an entity by domain, name, credential, credential identifier, or namespace.

domain
String
name
String
credential_type
String
credential_identifier
String
jurisdiction
String
namespace
String
{
  "variables": {
    "domain": "example.bank",
    "namespace": "bank"
  }
}

domain

Return one domain profile and linked entity evidence.

domain
String!
{
  "variables": {
    "domain": "example.bank"
  }
}

namespaces

List supported namespaces.

classification
String
claimStatus
String
coverageStatus
String
includePlaceholders
Boolean
{
  "variables": {
    "classification": "restricted"
  }
}

Schemas

Published Schemas

ZoneProof publishes a JSON-LD context plus JSON Schema contracts for namespace, entity, domain, and credential records. Fetch the raw documents from /schema/<file> or use the field summaries below for implementation planning.

JSON-LD context

ZoneProof JSON-LD Context

/schema/context.jsonld

Shared JSON-LD vocabulary context for ZoneProof records.

NameTypeNotes
@vocabhttps://schema.org/
addressCountryschema:addressCountry
addressLocalityschema:addressLocality
addressRegionschema:addressRegion
brandDetailszp:brandDetails
brandSetVerificationzp:brandSetVerification
classificationzp:trustClassification
credentialVerificationzp:credentialVerification
domainSetzp:domainSet
domainTrustzp:domainTrust
entityTrustzp:entityTrust
industrieszp:industries
languagesschema:availableLanguage
locationPointzp:locationPoint
locationTypezp:locationType
methodzp:verificationMethod
modelzp:trustModel
namespaceCredentialFieldszp:namespaceCredentialFields
postalCodeschema:postalCode
primaryDomainzp:primaryDomain
publicIdzp:publicId
registryVerificationzp:registryVerification
rolezp:brandSetRole
schemahttps://schema.org/
scorezp:trustScore
serviceszp:services
signalszp:trustSignals
sourcezp:verificationSource
specialtieszp:specialties
streetAddressschema:streetAddress
trustzp:trust
verificationBasiszp:verificationBasis
verifiedAtschema:DateTime
verifiedByzp:verifiedBy
zphttps://zoneproof.org/schema/
zp:authorizedMirrorDomains@id
zp:credentialAuthorityURL@id
zp:credentialAuthorityUrl@id
zp:ctLogEntry@id
zp:entity@id
zp:expiresDateschema:Date
zp:licenseExpirationDateschema:Date
zp:namespaceRecord@id
zp:observedAtschema:DateTime
zp:practiceWebsite@id
zp:profileVersionschema:DateTime
zp:pslURL@id
zp:registryOperatorURL@id
zp:restrictionWikipediaURL@id
zp:supersededAtschema:DateTime
zp:suspendedAtschema:DateTime
zp:tldAgreementICANNURL@id
zp:updatedAtschema:DateTime
zp:validFromschema:DateTime
zp:validThroughschema:DateTime

JSON Schema

ZoneProof Namespace Record v1

/schema/namespace-record-v1.json

Public TLD namespace metadata records served from /.well-known/tld/{tld}.json.

Required@context, @type, @id, zp:tldIdentifier, zp:status, zp:ianaRootZoneEntry, zp:ianaRootZoneType, zp:tldAgreementType, zp:restrictionClassification, zp:restrictionSource, zp:zoneProofClaimStatus, zp:zoneProofCoverageStatus, zp:pslCanonicalEntry, zp:pslSection, zp:namespaceRecordVersion, zp:namespaceRecordExpires
NameTypeNotes
@contextvalueRequired
@type"zp:NamespaceRecord"Required
@idstringRequired
zp:tldIdentifierstringRequired
zp:statusstringRequired
zp:tldUnicodeLabelstring | null
zp:ianaRootZoneEntrybooleanRequired
zp:ianaRootZoneTypestringRequired
zp:tldAgreementTypestringRequired
zp:tldAgreementICANNURLstring | null
zp:spec13Brandboolean
zp:spec12Communityboolean
zp:spec14Variantboolean
zp:spec13Statusstring | null
zp:brandRegistryOperatorstring | null
zp:brandTrademarkVerifiedboolean
zp:isIDNbooleanTrue for any IDN TLD regardless of agreement type.
zp:tldScriptstring | nullISO 15924 script code.
zp:tldLanguagestring | nullISO 639-3 language code.
zp:idnVariantOfstring | null
zp:idnEnabledboolean
zp:dnssecEnabledboolean
zp:tldDelegationDatestring | null
zp:restrictionClassificationstringRequired
zp:restrictionSourcestring | nullRequired
zp:restrictionWikipediaURLstring | null
zp:restrictionLastVerifiedstring
zp:registrationPolicystring
zp:registrationOpenToPublicboolean
zp:eligibilityRequirementstring | null
zp:registrantVerificationLevelstring
zp:registryOperatorstring | null
zp:registryOperatorURLstring | null
zp:registryOperatorTypestring | null
zp:associatedTradeAssociationsarray
zp:pslCanonicalEntrystringRequired
zp:pslSectionstringRequired
zp:pslURLstring
zp:pslDelegatedSLDsarray
zp:allowedTaxonomyFieldsarray
zp:credentialProfileobject
zp:domainVerificationAuthoritystring | null
zp:dotlessstring
zp:zoneTypestring
zp:tldManagerstring | null
zp:ianaAdministrativeContactNamestring | null
zp:ianaAdministrativeContactOrganizationstring | null
zp:ianaAdministrativeContactEmailstring | null
zp:ianaTechnicalContactNamestring | null
zp:ianaTechnicalContactOrganizationstring | null
zp:ianaTechnicalContactEmailstring | null
zp:translationstring | null
zp:agreementTypeLabelstring | null
zp:operatorNamestring | null
zp:agreementStatusstring | null
zp:agreementDatestring | null
zp:agreementUrlstring | null
zp:registrationServicesUrlstring | null
zp:whoisServerstring | null
zp:ianaUrlstring | null
zp:backendOperatorstring | null
zp:backendOperatorSlugstring | null
zp:rdapServerstring | null
zp:isSponsoredboolean
zp:isRestrictedboolean
zp:contractSignedDatestring | null
zp:delegatedDatestring | null
zp:lastUpdatedDatestring | null
zp:geographicScopestring | null
zp:audienceCategorystring | null
zp:targetAudiencestring | null
zp:verificationRequiredboolean
zp:levelstring | null
zp:parentTldstring | null
zp:privateNamespaceOperatorstring | null
zp:zoneProofClaimStatusstringRequired
zp:zoneProofCoverageStatusstringRequired
zp:registrantProfileCountinteger
zp:namespaceNotestring | null
zp:namespaceRecordVersionstringRequired
zp:namespaceRecordExpiresstringRequired
Definitions

zoneProofNamespaceRecord

Required: @context, @type, @id, zp:tldIdentifier, zp:status, zp:ianaRootZoneEntry, zp:ianaRootZoneType, zp:tldAgreementType, zp:restrictionClassification, zp:restrictionSource, zp:zoneProofClaimStatus, zp:zoneProofCoverageStatus, zp:pslCanonicalEntry, zp:pslSection, zp:namespaceRecordVersion, zp:namespaceRecordExpires

NameTypeNotes
@contextvalueRequired
@type"zp:NamespaceRecord"Required
@idstringRequired
zp:tldIdentifierstringRequired
zp:statusstringRequired
zp:tldUnicodeLabelstring | null
zp:ianaRootZoneEntrybooleanRequired
zp:ianaRootZoneTypestringRequired
zp:tldAgreementTypestringRequired
zp:tldAgreementICANNURLstring | null
zp:spec13Brandboolean
zp:spec12Communityboolean
zp:spec14Variantboolean
zp:spec13Statusstring | null
zp:brandRegistryOperatorstring | null
zp:brandTrademarkVerifiedboolean
zp:isIDNbooleanTrue for any IDN TLD regardless of agreement type.
zp:tldScriptstring | nullISO 15924 script code.
zp:tldLanguagestring | nullISO 639-3 language code.
zp:idnVariantOfstring | null
zp:idnEnabledboolean
zp:dnssecEnabledboolean
zp:tldDelegationDatestring | null
zp:restrictionClassificationstringRequired
zp:restrictionSourcestring | nullRequired
zp:restrictionWikipediaURLstring | null
zp:restrictionLastVerifiedstring
zp:registrationPolicystring
zp:registrationOpenToPublicboolean
zp:eligibilityRequirementstring | null
zp:registrantVerificationLevelstring
zp:registryOperatorstring | null
zp:registryOperatorURLstring | null
zp:registryOperatorTypestring | null
zp:associatedTradeAssociationsarray
zp:pslCanonicalEntrystringRequired
zp:pslSectionstringRequired
zp:pslURLstring
zp:pslDelegatedSLDsarray
zp:allowedTaxonomyFieldsarray
zp:credentialProfileobject
zp:domainVerificationAuthoritystring | null
zp:dotlessstring
zp:zoneTypestring
zp:tldManagerstring | null
zp:ianaAdministrativeContactNamestring | null
zp:ianaAdministrativeContactOrganizationstring | null
zp:ianaAdministrativeContactEmailstring | null
zp:ianaTechnicalContactNamestring | null
zp:ianaTechnicalContactOrganizationstring | null
zp:ianaTechnicalContactEmailstring | null
zp:translationstring | null
zp:agreementTypeLabelstring | null
zp:operatorNamestring | null
zp:agreementStatusstring | null
zp:agreementDatestring | null
zp:agreementUrlstring | null
zp:registrationServicesUrlstring | null
zp:whoisServerstring | null
zp:ianaUrlstring | null
zp:backendOperatorstring | null
zp:backendOperatorSlugstring | null
zp:rdapServerstring | null
zp:isSponsoredboolean
zp:isRestrictedboolean
zp:contractSignedDatestring | null
zp:delegatedDatestring | null
zp:lastUpdatedDatestring | null
zp:geographicScopestring | null
zp:audienceCategorystring | null
zp:targetAudiencestring | null
zp:verificationRequiredboolean
zp:levelstring | null
zp:parentTldstring | null
zp:privateNamespaceOperatorstring | null
zp:zoneProofClaimStatusstringRequired
zp:zoneProofCoverageStatusstringRequired
zp:registrantProfileCountinteger
zp:namespaceNotestring | null
zp:namespaceRecordVersionstringRequired
zp:namespaceRecordExpiresstringRequired

sldRecord

Required: zp:sld, zp:sldFQDN, zp:sldPolicy, zp:zoneProofClaimStatus, zp:zoneProofCoverageStatus

NameTypeNotes
zp:sldstringRequired
zp:sldFQDNstringRequired
zp:sldPolicystringRequired
zp:sldRestrictionAuthoritystring | null
zp:sldRestrictionTypestring | null
zp:sldRestrictedToEntitystring | null
zp:sldWikipediaSourcestring | null
zp:zoneProofClaimStatusstringRequired
zp:zoneProofCoverageStatusstringRequired
zp:sldRegistrantProfileCountinteger

JSON Schema

ZoneProof Entity Record v1

/schema/entity-record-v1.json

Verified organization or person records used by entity search and domain profiles.

Required@context, @type, @id, name, zp:status, zp:updatedAt
NameTypeNotes
@context"https://zoneproof.org/schema/context.jsonld"Required
@typePerson | OrganizationRequired
@idstringRequired
namestringRequired
alternateNamestring | array
industriesarray
servicesarray
specialtiesarray
languagesarray
zp:statusstringRequired
locationsarray
zp:sourcesource
zp:updatedAtstringRequired
Definitions

location

Required: @type, locationType, isPrimary, zp:updatedAt

NameTypeNotes
@type"PostalAddress"Required
locationTypestringRequired
isPrimarybooleanRequired
streetAddressstring
addressCountrystring
addressRegionstring
addressLocalitystring
postalCodestring
latitudenumber
longitudenumber
zp:sourcesource
zp:updatedAtstringRequired

source

Required: name, url, retrievedAt

NameTypeNotes
namestringRequired
urlstringRequired
versionstring
retrievedAtstringRequired

JSON Schema

ZoneProof Domain Record v1

/schema/domain-record-v1.json

Domain trust and web-identity records linked to namespaces and entities.

Required@context, @type, @id, zp:domain, zp:namespace, zp:profileAvailable, zp:registryVerification, zp:brandSetVerification, zp:trust
NameTypeNotes
@context"https://zoneproof.org/schema/context.jsonld"Required
@type"zp:DomainRecord"Required
@idstringRequired
zp:domainstringRequired
zp:namespacestringRequired
zp:profileUrlstring
zp:profileAvailablebooleanRequired
zp:activeboolean
zp:statusstring
schema:urlstring
zp:domainRegistrationStatusstring
zp:credentialedNamespaceboolean
zp:expiresDatestring
zp:sourceobject
zp:updatedAtstring
zp:namespaceTrustobject
zp:namespacePolicyobject
zp:recordUrlsobject
zp:registryVerificationobjectRequired
zp:zoneProfileobject
zp:entityobject
zp:entityParentobject
zp:credentialsarray
zp:brandSetVerificationobjectRequired
zp:trustobjectRequired
zp:entityTrustobject
zp:domainTrustarray
zp:domainSetobject

JSON Schema

ZoneProof Credential Record v1

/schema/credential-record-v1.json

Current-state credential records for regulated entities and namespace-domain credentials.

Required@context, @type, @id, zp:credentialKey, zp:entity, zp:credentialStatus, zp:credentialVerification, zp:credentialAuthority, zp:credentialIdentifier, zp:credentialIdentifierType, zp:jurisdictionCountry, zp:jurisdictionRegion, zp:updatedAt
NameTypeNotes
@context"https://zoneproof.org/schema/context.jsonld"Required
@type"zp:CredentialRecord"Required
@idstringRequired
zp:credentialKeystringRequired
zp:entitystringRequired
zp:namespacestring
zp:credentialStatusstringRequired
zp:credentialVerificationcredentialVerificationRequired
zp:credentialIdentifierstringRequired
zp:credentialIdentifierTypestringRequired
zp:jurisdictionCountryarrayRequired
zp:jurisdictionRegionarrayRequired
zp:credentialAuthoritystringRequired
zp:credentialAuthorityUrlstring
zp:validFromstring
zp:validThroughstring
zp:updatedAtstringRequired
Definitions

embeddedCredentialSummary

Required: zp:credentialStatus, zp:credentialVerification, zp:credentialAuthority, zp:credentialIdentifier, zp:credentialIdentifierType

NameTypeNotes
zp:credentialStatusstringRequired
zp:credentialVerificationcredentialVerificationRequired
zp:credentialAuthoritystringRequired
zp:credentialAuthorityUrlstring
zp:credentialIdentifierstringRequired
zp:credentialIdentifierTypestringRequired
zp:jurisdictionCountryarray
zp:jurisdictionRegionarray
zp:validFromstring
zp:validThroughstring

credentialVerification

Required: status, verifiedBy, verifiedAt, source

NameTypeNotes
statusverified | unverified | expired | revoked | not_evaluatedRequired
verifiedBystring | nullRequired
verifiedAtstring | nullRequired
sourceauthoritative | secondary | nullRequired

Domain Trust Score

A fixed evidence tier on a 0–1 scale. Select the first matching row; scores are not added or averaged.

Domain Trust Score tiers
Verification evidenceScore
Registry verified + verified BrandSet primary0.99
Registry verified + verified BrandSet member0.97
Registry verified, without a verified BrandSet role0.95
Verified BrandSet primary, without qualifying registry verification0.80
Verified BrandSet member, without qualifying registry verification0.70
Neither qualifying registry verification nor a verified BrandSet role0.20

Registry verification qualifies only when the namespace requires verified registrant eligibility and the domain’s registry verification status is verified.

BrandSet verification qualifies only when its status is verified and its role is primary or member. Pending, lapsed, and non-member statuses do not qualify.

This score describes recorded verification evidence. It is not a probability, a website safety rating, or the separate entity/credential trust score. Missing evidence does not establish that a domain is unsafe.

MCP and public domain records expose the model, classification, score, and supporting signals. Embeds that display a score should retain that context and link to this explanation.

Machine-readable scoring model