Standard keys

Field keys are the stable identifiers for cells. The same string is used in YAML configs, ENS text records, EIP-712 signatures, EAS attestations, and the gridz.bio editor. The canonical registry is standard-keys.md.

Key syntax

Every key MUST match:

^[a-z0-9]([a-z0-9._\-\[\]])*[a-z0-9\]]$

This is a superset of ENS global keys (lowercase + hyphen), ENS service keys (reverse-dot), and the bracket form for agent endpoints. Maximum length 256 characters. Dynamic keys are first-class — unknown keys round-trip through every component; unknown widget_type values fall back to the Generic renderer.

Tier 1 — Inherited from ENS

Any ENS profile is a valid minimal Grid. Values follow the ENS "void of prefix" rule: store bare handles (alice), not decorated forms (@alice), unless a service requires otherwise.

Global keys (ENSIP-5)

KeyValueNotes
avatarURL / NFT URIENSIP-12 avatar spec
descriptionstringBiography / summary
displaystringCanonical capitalization of the name
emailstringRFC 5322 address
urlstringWebsite URL
location, phone, keywords, mail, noticestringStandard ENS text records

Profile keys (ENSIP-18)

KeyValueNotes
aliasstringShort display name (gridz.bio "name" maps here). Max ~50 chars by convention.
headerURLBanner image
themestring / JSONSource for the Grid theme object
timezonestringIANA tz, e.g. America/New_York
languagestringISO 639-1
primary-contactstringPreferred contact channel

Service keys (reverse-dot)

Open namespace — any reverse-dot key with at least one dot is valid. Common examples on gridz.bio:

KeyService
com.githubGitHub username
com.twitterX / Twitter handle
com.discordDiscord handle
xyz.farcasterFarcaster handle
social.bskyBluesky handle

Tier 2 — Agent keys

KeyProvenanceNotes
agent-contextENSIP-26Free-form context (text, Markdown, YAML, JSON)
agent-endpoint[mcp]ENSIP-26MCP server URL (incl. ipfs://)
agent-endpoint[a2a]ENSIP-26Agent-to-Agent protocol endpoint
agent-registration[<registry>][<agentId>]ENSIP-25Presence attests registry association; value SHOULD be "1"
agent.capabilitiesGridzJSON string array of declared capabilities
agent.model, agent.version, agent.operatorGridzAgent metadata under the agent. prefix
agent.oneclaw_idGridzLinks Grid to a 1Claw HSM-managed agent identity

Tier 3 — Gridz widgets (gridz.*)

Gridz-defined namespace. Each key has a value schema and a 1:1 renderer component on gridz.bio. When widget_type is omitted, the key string is the render hint.

KeyWidget
gridz.message_meContact / DM button
gridz.social_linkSingle social link card
gridz.statsStat tiles
gridz.currently"Currently …" status
gridz.pollPoll
gridz.countdownCountdown to a date
gridz.clockLive clock (timezone-aware)
gridz.tech_stackTech / tool list
gridz.tokensOrganization token listings (gridz.bio extension)
gridz.guestbook, gridz.visitor_counter, …See full list in repo

Per-widget JSON schemas live under specs/widgets/*.schema.json in the gridz repo. TypeScript Zod and Python Pydantic models are generated from them.

Signing is key-agnostic

EIP-712 uses one GridzCell struct for every key — standard, agent, widget, or custom. The key string is part of the signed payload, so verifiers do not need a per-key struct registry. See Attestations.