Developer Docs

MCP, REST, and GraphQL 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.

MCP

MCP Tool Layer

Use MCP for agent runtimes such as ChatGPT, Claude, and other clients that can call tools. MCP is available at https://zoneproof.org/mcp. The endpoint supports namespace tools and runtime entity/domain verification tools.

{
  "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.

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

Fetch a namespace

Fetch the public namespace record for .bank.

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

Show credentialed TLDs

Search for TLDs that publish credential-related fields.

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

Show namespace credential fields

Fetch .pharmacy and inspect its namespace-specific credential field list.

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

Search and filter TLD list

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

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

Combine indexed filters

Search for active restricted namespaces with explicit verification requirements.

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

Page through results

Fetch the second page of community brand TLDs, 10 rows at a time.

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

Fetch PSL delegated SLDs

Fetch .in and inspect zp:pslDelegatedSLDs for entries like co.in, firm.in, and org.in.

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

Namespace MCP Tools

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
limitintegerMaximum number of rows to return for list or search. Example: 10
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
statusstring Example: active
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

search_zoneproof_entities

Find verified ZoneProof entities, which may be people or organizations. Requires a scope: namespace, domain, location/city/region/country/postal_code, coordinates, or a multi-word query. Returns entity-level results with verified and verifiedBy fields, credentialedDomain when a verified domain exists, otherDomains as supplemental domains, linked credentials, and location-aware matching across loaded namespaces. Prefer domains with verified=true for presentation and linking. Do not substitute otherDomains for verified domains. 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. Returns entity-level verification details, verified and verifiedBy fields, credentialedDomain evidence when a verified domain exists, otherDomains as supplemental domains, and linked credentials. Prefer domains with verified=true for presentation and links.

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 the ZoneProof record for one domain together with its linked entity evidence. Domain results are secondary to entity identity and include the connected person or organization, credentials, and verification context.

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. Returns entity-level matches with verified and verifiedBy fields, credentialedDomain when a verified domain exists, and otherDomains as supplemental domains. Prefer domains with verified=true for presentation and linking. 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

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. Entity results include verified and verifiedBy; clients should prefer domains where verified is true.

Domain schema embed

Add the script form to a website to expose the domain profile as ZoneProof JSON-LD for agentic browsing. Fetch the same URL with ?format=jsonld for direct structured retrieval.

<script async src="https://zoneproof.org/api/domains/1889.bank/embed"></script>
GET/api/healthz

Health check

Returns a lightweight backend health response.

GET/api/domains/{domain}

Get a ZoneProof domain profile

Returns one domain profile and linked entity evidence.

NameTypeNotes
domainstringRequired. Fully qualified domain name.
GET/api/domains/{domain}/embed

Get an embeddable ZoneProof domain schema

Returns JavaScript that injects ZoneProof JSON-LD into a website. Use ?format=jsonld to retrieve the schema directly as application/ld+json.

NameTypeNotes
domainstringRequired. Fully qualified domain name.
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.
coverageStatusstringOptional coverage status filter.
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
coverageStatus
String
includePlaceholders
Boolean
{
  "variables": {
    "classification": "restricted"
  }
}