viem's `hashTypedData` / `signTypedData` auto-injects `EIP712Domain` from the `domain` object when missing from `types`, so viem-based portals work without it. Non-viem libraries (CDP SDK, eth_account, ethers low-level, go-ethereum) require `EIP712Domain` declared explicitly in `types` to hash the struct — without it they error or refuse to sign. Critically, the field list in `EIP712Domain` MUST match exactly what's present in `domain`: if `domain` has only `{name, version, chainId}` but `types.EIP712Domain` also lists `verifyingContract`, the struct hash computed by signer and verifier differ and signature verification fails. Fix is purely additive in API responses (no breaking change for viem consumers) and unblocks all non-viem signing stacks simultaneously.
Applies to any HTTP/JSON API that returns EIP-712 typed-data payloads for clients to sign — registration, ownership-transfer, proof-request, and similar flows where the server constructs the typed-data and the client signs it. Especially relevant for systems targeting autonomous AI agents using server wallets (Coinbase CDP) or Python/Go agent stacks, where viem is not available.