Top-level structure
PUT /v1/alignment/agent/{agent_id} accepts card_version, agent_id (overwritten to match the URL), autonomy_mode, integrity_mode, principal, values, conscience, autonomy, capabilities, enforcement, audit, extensions, and expires_at. card_id, issued_at, content_hash, version, and _composition are server-assigned response fields — do not send them on a PUT.
Master switches
The four-mode enumoff | observe | nudge | enforce is shared with the Protection Card. Same words; same semantics; same UI picker component renders all three master fields (Protection’s mode, Alignment’s autonomy_mode, Alignment’s integrity_mode). Composition rule on each: strictest wins across Platform → Org → Agent (enforce > nudge > observe > off).
Customers can control the two halves independently — e.g., “enforce conscience commitments at runtime, only observe action policy” or “off action-policing for cost, but enforce drift detection”.
principal
Required. Declares who the agent serves and the nature of that relationship.
*
identifier is required when type != unspecified.
values
What the agent prioritizes. Core input to the v2 coherence scorer and to fault-line analysis.
Validation: every
definitions key must be present in declared.
conscience
Inviolable or near-inviolable commitments that constrain the agent’s behavior. Structured for Safe House + drift detection integration.
Validation:
BOUNDARY entries with severity: advisory are rejected.
autonomy
What the agent may do independently. Maps directly onto the legacy AAPautonomy_envelope for protocol-level verification — the unified shape (AAP SDK 2.0.0+) renames it to autonomy but keeps the semantics.
Validation:
bounded_actions and forbidden_actions must be disjoint (no action in both).
capabilities
Tool-use capabilities, keyed by capability name. Each entry maps to a glob pattern over MCP/A2A tool names or an explicit tool allowlist.
Capabilities are consumed by
@mnemom/policy-engine’s evaluatePolicy({ context, card, tools }) to produce per-request policy decisions.
enforcement
Policy-level knobs that affect howcapabilities are enforced at runtime. The master switch lives at the top level (autonomy_mode); this section carries the fine-grained tool-use policy.
audit
Commitments around trace format, retention, tamper evidence. These are platform-scoped — agents and orgs cannot weaken the audit floor.
*
query_endpoint is required when queryable is true.
Validation: audit.query_endpoint is required whenever audit.queryable is true; the composer guarantees the invariant holds on canonical output.
An audit.storage field appears in some historical card examples but is not read by the composer or any downstream consumer — do not rely on it.
extensions
Protocol-specific or user-defined additions. Free-formRecord<string, unknown>. Mnemom reads extensions.clpi.role (a free-form role label) for fault-line complementary/conflicting classification across a fleet’s agents; any other key is passed through unread.
agentCard.extensions verbatim onto the canonical card. Platform/org/team scopes do not contribute to or merge with agent extensions.
_composition (canonical-only)
Only returned fromGET/preview-compose when the caller passes ?include_composition=true; absent otherwise and absent on raw agent-scope cards. Records the provenance of every composed field.
_composition is read-only on the wire. Mutating it via API is a 400.
YAML safe schema
Allyaml.load() calls in the Mnemom stack use { schema: yaml.CORE_SCHEMA } — Node-specific tags (!!js, !!binary, etc.) are rejected. If your client produces YAML with those tags, validation fails. Stick to plain scalars, maps, and sequences.
Body-size limits
Full alignment card payload: 128 KB max, enforced at the API boundary from bothContent-Length and the actual body size. Oversize bodies get 413 Payload Too Large.
Versioning
card_version is a required, non-empty string. The composer stamps every canonical card with unified/<YYYY-MM-DD> using the composition date — treat the prefix (unified/) as the stable signal, not the date suffix, which changes on every recompose. Breaking changes are negotiated via the X-Mnemom-Version: YYYY-MM-DD request header used elsewhere in the API.
See also
- Agent Cards — the two-card product story
- Card Composition — scope composition rules + exemptions
- Protection Card Schema — companion normative spec
- Alignment Card (AAP protocol surface) — the protocol-level card
- Policy Engine — how
capabilities+enforcementbecome runtime policy