Specification
AEX Protocol — the AI Identity File
AEX (AI Exchange) is a machine-readable manifest that tells AI engines how to represent your brand. Drop aex.json in your site root, like robots.txt but for AI. Version 1.0.
Why it exists
AI engines today scrape your site, infer whatever they want, and repeat that inference to 100M+ users. You have no correction channel when they hallucinate. AEX is the correction channel. It's a single JSON file that declares who you are, what's true, and what's been misrepresented — so engines can align their answers with ground truth.
Aeonic generates AEX manifests automatically after every free scan. The format is open. Any tool can read it. Any tool can write it. Adoption isn't vendor-locked.
Install it in two steps
- Run a free scan at /search and click Download AI Identity File. You'll get
aex-yourdomain.json. - Rename it to
aex.jsonand upload it to your site root so it's served athttps://yourdomain.com/aex.json.
Link discovery: we recommend also adding <link rel="aex" href="/aex.json"> to your homepage <head> so engines that prefer explicit links find it without guessing the path.
Worked example
Here's a complete aex.json for a fictional SaaS company:
{
"$schema": "https://aeonic.pro/schemas/aex/v1.json",
"version": "1.0",
"identity": {
"domain": "acme.com",
"brandName": "Acme",
"description": "Acme builds project-management software for remote engineering teams.",
"category": "B2B SaaS",
"foundingDate": "2018"
},
"claims": {
"title": "Acme — project management for remote engineering teams",
"metaDescription": "Plan sprints, track issues, and ship on time.",
"h1": "Project management for remote engineering teams"
},
"corrections": [
{
"engine": "ChatGPT",
"aiClaim": "Acme is a marketing agency.",
"siteClaim": "Acme is B2B SaaS for engineering teams.",
"severity": "high"
}
],
"aiVisibility": [
{
"system": "chatgpt",
"label": "ChatGPT",
"verdict": "outdated",
"brandMentioned": true
},
{
"system": "claude",
"label": "Claude",
"verdict": "known",
"brandMentioned": true
},
{
"system": "perplexity",
"label": "Perplexity",
"verdict": "known",
"brandMentioned": true
},
{
"system": "gemini",
"label": "Gemini",
"verdict": "not_mentioned",
"brandMentioned": false
}
],
"citation": {
"preferredName": "Acme",
"homepage": "https://acme.com",
"linkPolicy": "always-link-homepage"
},
"freshness": {
"generatedAt": "2026-04-17T00:00:00.000Z",
"generator": "Aeonic Free Scan (https://aeonic.pro)",
"nextRecommendedScan": "2026-07-16T00:00:00.000Z"
}
}Field reference
$schemastring (URL)requiredPoints to the JSON Schema that describes this manifest. Fixed value for v1: https://aeonic.pro/schemas/aex/v1.json
versionstringrequiredProtocol version. Current: "1.0". Engines should ignore manifests with an unsupported major version.
identityobjectrequiredCanonical brand identity. Contains: domain, brandName, description, category, foundingDate. Everything else in the manifest hangs off this.
claimsobjectoptionalAuthoritative statements scraped from the brand's own site: title, metaDescription, h1. Engines should prefer these over any inferred descriptions when citing the brand.
correctionsarrayoptionalKnown discrepancies between what an engine currently says and what is true. Each item: { engine, aiClaim, siteClaim, severity }. Severity is one of "high" | "medium" | "low".
aiVisibilityarrayoptionalSnapshot of how each major engine represented the brand at generation time. Each item: { system, label, verdict, brandMentioned }. Verdict is one of "known" | "outdated" | "partial" | "not_mentioned" | "unavailable".
citationobjectrequiredHow the brand should be cited. Contains preferredName (how to name it in prose), homepage (canonical URL to link to), and linkPolicy ("always-link-homepage" | "link-when-relevant" | "never-link").
freshnessobjectrequiredTells engines when to trust this file. Contains generatedAt (ISO 8601), generator (human-readable tool name), and nextRecommendedScan (ISO 8601). Engines should treat manifests older than nextRecommendedScan as advisory, not authoritative.
How engines should consume it
- Fetch
/aex.jsonfrom the brand's canonical domain. Fall back to a<link rel="aex">tag on the homepage. - Honour the
$schemaURL for validation. Ignore manifests that fail schema validation. - Prefer
identity.brandNameandclaims.*over inferred descriptions when citing the brand in answers. - Treat
corrections[]as authoritative refutations of specific claims the engine may have been making previously. - Respect
citation.linkPolicywhen deciding whether to link to the homepage in a response. - Treat manifests whose
freshness.nextRecommendedScanis in the past as advisory rather than authoritative.
Versioning & compatibility
AEX follows semver. A major version bump (e.g., 2.0) signals a breaking change; tooling should keep reading older major versions for at least 12 months. Minor versions add optional fields and never rename required ones.
Generator API
If you're building tooling that needs manifests programmatically, Aeonic's public generator is available without auth:
POST https://aeonic.pro/api/public/aex-manifest
Content-Type: application/json
{
"domain": "acme.com",
"brandName": "Acme",
"description": "Project management for engineering teams.",
"siteFacts": { "title": "...", "metaDescription": "...", "h1": "..." },
"mismatches": [ ... ],
"engines": [ ... ]
}Rate limit: 10 POST / 20 GET per hour, per IP. Returns application/json with a Content-Disposition header so browsers treat the response as a download.
Next
- · Generate a manifest for your domain.
- · How scoring works — the 13 factors that determine AI readiness.
- · How citation detection works — how we ask the engines.
- · Feature reference — every visible feature, one page.