# description
The crawl-time bridge file of the AEO Record Standard (aeorecord.org). Hosted at https://<domain>/.well-known/aeo.json on the business's own domain. The only hard requirement a consumer checks is v == "AEO1"; all other fields are additive. The authoritative record is the _aeo.<domain> DNS TXT record.

# properties.v.description
Standard version identifier. Consumers reject the file if this is not exactly "AEO1".

# properties.tier.description
Verification depth. self_declared = free, self-issued, unsigned.

# properties.catalog.description
HTTPS URL of the domain's fact catalog page, or the literal string "none" for self-declared records with no catalog.

# properties.mcp.description
MCP (Model Context Protocol) endpoint serving the same verified facts as callable tools.

# properties.ts.description
YYYYMMDD (UTC) issuance date — present on self-declared files, which carry no signature block.

# properties.verified_at.description
ISO date (YYYY-MM-DD) of the most recent issuer verification, or null.

# properties.last_confirmed_at.description
ISO date (YYYY-MM-DD) on which the business owner last attested that the record is current — owner-attested freshness, distinct from ts (issuance/tenure) and verified_at (issuer re-check). Optional, unsigned, informational only: it is not part of the signed message, and its absence or age means nothing negative — the record remains fully valid without it.

# properties.method_preference.description
Preferred data-retrieval order for AI agents.

# properties.signature.description
Ed25519 signature block binding this record to the catalog's published facts. Null or absent on unsigned (self-declared) records. Verification: message = "AEO1|" + domain + "|" + tier + "|" + ts + "|" + facts_hash, where facts_hash = sha256 hex of JSON.stringify of the published facts as {fact_type,key,value} objects sorted by fact_type, then key, then value (codepoint order), and domain is the domain the consumer queried.

# properties.signature.properties.sig.description
Unpadded base64url Ed25519 signature (64 bytes) of the UTF-8 message.

# properties.signature.properties.ts.description
YYYYMMDD (UTC) signing date — part of the signed message.

# properties.signature.properties.facts_hash.description
sha256 hex of the canonical published-fact list. Recompute it yourself — do not trust this field.

# properties.signature.properties.key_id.description
Identifier of the signing key, matching a key_id in the issuer's /.well-known/aeo-public-key.json.

# properties.signature.properties.public_key_url.description
Where the issuer publishes its verification keys (keys[].public_key = base64url raw 32-byte Ed25519 key). Each key carries a status: 'active' and 'retired' keys are used for verification (retired = normal rotation); keys with status 'revoked' MUST be skipped entirely; a key with no status is treated as active.