How it works in AgenID
The schema rejects unknown members. The manifest digest is SHA-256 over its RFC 8785 canonical bytes, and the ManifestProof signs that digest. The four groups are fixed:
identity: the agent'snameanddescription.ownership:operator,operator_domainandcontact.purpose: asummaryand itschannels(voice, sms, chat, email or api).disclosure:is_ai,discloses_to_userandhuman_escalation.
Why it matters
The disclosure attestations describe real behavior that no API can discover, so AgenID requires the operator to set them explicitly; the flow at /issue starts them at false rather than pre-checking them. A defaulted attestation would be a fabricated claim under a real signature. Binding by digest also means any edit, even one flipped boolean, fails verification with manifest_digest_mismatch.
The purpose and channels fields tell a relying party what the agent says it is for, which is useful context when a call or message arrives on an unexpected channel. A scheduling agent that turns up on email is not proof of misuse, but it is a fair question to put to the operator.
What it does not mean
Operator attestations are self-declared and unverifiable by anyone, including AgenID. The keys permissions and authorizations are reserved and rejected in v1.1.1, so a manifest cannot state what the agent is allowed to do. It describes the agent; it grants nothing.