Publish keys at the manifest root
Agents have nothing to verify your responses against.
Why it matters
Signing keys let agents check that checkout responses really came from you. Tokenized payment flows in v2026-04-08+ require them. Since 2026-07-12 the spec expects a root-level "keys" list (the older "signing_keys" field is still accepted while stores move). Stores that hand the buyer a checkout link instead of taking payment through the agent can go without them for now.
Show fix
Generate an Ed25519 keypair, publish the public key as a JWK in a root-level "keys" array (the canonical field since spec PR #566; "signing_keys" is legacy). Rotate annually; keep "kid" stable across rotations of the same key.
{
"keys": [
{
"kty": "OKP",
"crv": "Ed25519",
"x": "<base64url-encoded-public-key>",
"kid": "key-2026-04",
"alg": "EdDSA"
}
],
"ucp": { ... }
}
