Wrap profile in a "ucp" object
The top-level "ucp" object is required by the spec but is missing.
Why it matters
Agents read the profile by drilling into the ucp object first. A flat profile fails strict parsers and will be rejected even if the inner data is correct.
Show fix
Move all UCP fields under a top-level "ucp" key. Public keys stay at the root as a keys array (sibling of ucp); v2026-08-25 renamed the legacy signing_keys to keys.
{
"ucp": {
"version": "2026-08-25",
"capabilities": { ... },
"services": { ... }
},
"keys": [ ... ]
}
