Validated.DirectoryYour record

Type your website. We read it.

Five steps. You never type a record.

Step one of five

Your website

We mail a link to that address. No password.

Step two of five

We read it

Reading [yourdomain.com]

  • ai.jsonfound / not found
  • JSON-LD on the pagefound / not found
  • llms.txtfound / not found
  • the page itselfread
  • read on

We could not read [yourdomain.com]. Check the address, or write to support.

Step three of five

Your record, drafted

This is what we read from your site. Confirm each line, or fix it.

[Business name]

[Category], [Town], [State]READ FROM SITERead from the owner's own website; owner confirmation pending.confirmfix
address
[Street], [Town], [ST] [postal code]confirmfix
phone
[phone]confirmfix
website
[yourdomain.com]confirmfix
hours
Not found on [yourdomain.com].fix
Everything is right
Step four of five

Card

This card pays the monthly charge, [PRICE] a month, from the day your record is live. Cancel in one tap.

Step five of five

Done

Your record is live at validated.directory/b/[slug].

OWNER VALIDATEDRead from the owner's own website and confirmed by the owner.
This is what an AI agent reads
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "[Business name]",
  "url": "https://[yourdomain.com]",
  "address": {
    "addressLocality": "[Town]",
    "addressRegion": "[ST]"
  },
  "identifier": {
    "propertyID": "validated.directory",
    "value": "[slug]"
  },
  "source_url": "https://[yourdomain.com]",
  "verified_by": "domain",
  "verified_at": "[today]",
  "confirmed_at": "[today]"
}

The badge follows confirmed_at: set, OWNER VALIDATED; empty, the tier in verified_by. The two dates are verified_at and confirmed_at. The host in the first date is source_url. The same four fields sit in ai.json and llms.txt. No key: POST /mcp, and get_checks for the last ten.

See your record