removedInput schema / $defs
Removed value: -{
- "CompositionMetadata": {
- "description": "System-managed block describing which scope sources merged into the canonical card. Only returned when `?include_composition=true`.",
- "properties": {
- "canonical_id": {
- "type": "string"
- },
- "composed_at": {
- "format": "date-time",
- "type": "string"
- },
- "exemptions_applied": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "scopes_applied": {
- "items": {
- "properties": {
- "card_id": {
- "type": "string"
- },
- "scope": {
- "description": "`platform`, `org:<id>`, or `agent:<id>`.",
- "type": "string"
- },
- "template_version": {
- "type": "integer"
- },
- "version": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "type": "array"
- },
- "source_card_id": {
- "type": "string"
- },
- "source_policy_id": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "UnifiedAlignmentCard": {
- "description": "Unified alignment card (ADR-008/ADR-039). Authored in YAML or JSON; composed server-side with platform defaults, org template, and active exemptions before storage. This schema matches the runtime validator at src/composition/validate.ts EXACTLY — a card authored strictly to it passes `PUT /v1/agents/{id}/alignment-card` and the preview-compose endpoint. Output-only fields (card_id, issued_at, expires_at, _composition, content_hash, version) are server-assigned and must NOT be sent on a PUT.",
- "properties": {
- "_composition": {
- "$ref": "#/$defs/CompositionMetadata"
- },
- "agent_id": {
- "description": "Target agent id. On PUT, server overwrites to match the URL path.",
- "type": "string"
- },
- "audit": {
- "allOf": [
- {
- "if": {
- "properties": {
- "queryable": {
- "const": true
- }
- },
- "required": [
- "queryable"
- ]
- },
- "then": {
- "required": [
- "query_endpoint"
- ]
- }
- }
- ],
- "properties": {
- "query_endpoint": {
- "description": "Required when audit.queryable is true.",
- "type": "string"
- },
- "queryable": {
- "type": "boolean"
- },
- "retention_days": {
- "minimum": 0,
- "type": "integer"
- },
- "storage": {
- "properties": {
- "location": {
- "type": "string"
- },
- "type": {
- "enum": [
- "local",
- "remote",
- "distributed"
- ],
- "type": "string"
- }
- },
- "type": "object"
- },
- "tamper_evidence": {
- "enum": [
- "append_only",
- "signed",
- "merkle",
- null
- ],
- "type": [
- "string",
- "null"
- ]
- },
- "trace_format": {
- "type": "string"
- }
- },
- "required": [
- "retention_days",
- "queryable"
- ],
- "type": "object"
- },
- "autonomy": {
- "properties": {
- "bounded_actions": {
- "items": {
- "type": "string"
- },
- "minItems": 1,
- "type": "array"
- },
- "escalation_triggers": {
- "items": {
- "properties": {
- "action": {
- "enum": [
- "escalate",
- "deny",
- "log"
- ],
- "type": "string"
- },
- "condition": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- }
- },
- "required": [
- "condition",
- "action",
- "reason"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "forbidden_actions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "max_autonomous_value": {
- "properties": {
- "amount": {
- "type": "number"
- },
- "currency": {
- "type": "string"
- }
- },
- "type": "object"
- }
- },
- "required": [
- "bounded_actions"
- ],
- "type": "object"
- },
- "autonomy_mode": {
- "description": "ADR-039 master switch for the action-policing pipeline (autonomy constraints). Required at the top level post-cutover; the legacy `enforcement.mode` location is rejected.",
- "enum": [
- "off",
- "observe",
- "nudge",
- "enforce"
- ],
- "type": "string"
- },
- "capabilities": {
- "additionalProperties": {
- "properties": {
- "description": {
- "type": "string"
- },
- "required_actions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "tools": {
- "items": {
- "type": "string"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "type": "object"
- },
- "card_id": {
- "description": "Card row id. Server-assigned on PUT (`ac-{uuid}`).",
- "type": "string"
- },
- "card_version": {
- "description": "Card schema version (required, non-empty). Current canonical value: `unified/2026-04-26`.",
- "minLength": 1,
- "type": "string"
- },
- "conscience": {
- "properties": {
- "mode": {
- "enum": [
- "augment",
- "replace"
- ],
- "type": "string"
- },
- "values": {
- "items": {
- "properties": {
- "content": {
- "type": "string"
- },
- "id": {
- "type": "string"
- },
- "severity": {
- "enum": [
- "advisory",
- "mandatory"
- ],
- "type": "string"
- },
- "type": {
- "enum": [
- "BOUNDARY",
- "FEAR",
- "COMMITMENT",
- "BELIEF",
- "HOPE"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "content"
- ],
- "type": "object"
- },
- "type": "array"
- }
- },
- "required": [
- "mode",
- "values"
- ],
- "type": "object"
- },
- "content_hash": {
- "description": "Response-only: content hash of the composed card (`sha256:<hex>`), injected by the GET/PUT response. Server-assigned — do not send on a PUT.",
- "type": "string"
- },
- "enforcement": {
- "description": "Optional ADR-039 Decision-3 user-facing knobs for unmapped-tool handling. The legacy `mode`, `unmapped_tool_action` and `fail_open` keys are REJECTED by the validator (mode → top-level autonomy_mode; fail_open → gateway env config).",
- "properties": {
- "allow_unmapped_tools": {
- "description": "When true, tools not mapped to a capability are allowed by default.",
- "type": "boolean"
- },
- "default_unmapped_severity": {
- "description": "Severity assigned to an unmapped tool when allow_unmapped_tools is false.",
- "enum": [
- "low",
- "medium",
- "high",
- "critical"
- ],
- "type": "string"
- },
- "forbidden_tools": {
- "items": {
- "properties": {
- "pattern": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- },
- "severity": {
- "enum": [
- "critical",
- "high",
- "medium",
- "low"
- ],
- "type": "string"
- }
- },
- "required": [
- "pattern",
- "reason",
- "severity"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "grace_period_hours": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "expires_at": {
- "format": "date-time",
- "type": [
- "string",
- "null"
- ]
- },
- "extensions": {
- "additionalProperties": true,
- "type": "object"
- },
- "integrity_mode": {
- "description": "ADR-039 master switch for the values/conscience pipeline (integrity constraints). Required at the top level post-cutover; the legacy `integrity.enforcement_mode` location is rejected.",
- "enum": [
- "off",
- "observe",
- "nudge",
- "enforce"
- ],
- "type": "string"
- },
- "issued_at": {
- "format": "date-time",
- "type": "string"
- },
- "principal": {
- "allOf": [
- {
- "if": {
- "properties": {
- "type": {
- "not": {
- "const": "unspecified"
- }
- }
- }
- },
- "then": {
- "required": [
- "identifier"
- ]
- }
- }
- ],
- "description": "Required object describing whose authority the agent acts under (ADR-039 Decision 10).",
- "properties": {
- "escalation_contact": {
- "type": "string"
- },
- "identifier": {
- "description": "Required (non-empty) when principal.type is not `unspecified`; identifies the human / organization / agent.",
- "minLength": 1,
- "type": "string"
- },
- "relationship": {
- "enum": [
- "delegated_authority",
- "advisory",
- "autonomous"
- ],
- "type": "string"
- },
- "type": {
- "enum": [
- "human",
- "organization",
- "agent",
- "unspecified"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "relationship"
- ],
- "type": "object"
- },
- "values": {
- "properties": {
- "conflicts_with": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "declared": {
- "description": "Ordered list of declared values. Phase 1 cards-as-primitive: each entry is either a catalog-v1 ID string (e.g. `'accuracy'`) or a parameterized map carrying optional `intensity` / `domain` / `severity_on_violation` / `scope` (e.g. `{id: 'accuracy', domain: 'financial', severity_on_violation: 'critical'}`).",
- "items": {
- "oneOf": [
- {
- "minLength": 1,
- "type": "string"
- },
- {
- "additionalProperties": {
- "type": "string"
- },
- "properties": {
- "id": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "id"
- ],
- "type": "object"
- }
- ]
- },
- "minItems": 1,
- "type": "array"
- },
- "definitions": {
- "additionalProperties": {
- "properties": {
- "description": {
- "type": "string"
- },
- "priority": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "type": "object"
- },
- "hierarchy": {
- "enum": [
- "lexicographic",
- "weighted",
- "contextual"
- ],
- "type": "string"
- }
- },
- "required": [
- "declared"
- ],
- "type": "object"
- },
- "version": {
- "description": "Response-only: monotonic card version, injected by the GET/PUT response. Server-assigned — do not send on a PUT.",
- "type": "integer"
- }
- },
- "required": [
- "card_version",
- "agent_id",
- "autonomy_mode",
- "integrity_mode",
- "principal",
- "values",
- "autonomy",
- "audit"
- ],
- "type": "object"
- }
-}
changedInput schema / properties / agent_id / description
Previous value: -"Agent identifier (e.g. smolt-abc123)"New value: +"The agent this card belongs to (e.g. `smolt-abc123`). Identifier only — never place an API key, a secret, an email address, or any other personal data in this field."
addedInput schema / properties / agent_id / maxLength
Added value: +64
addedInput schema / properties / agent_id / minLength
Added value: +3
addedInput schema / properties / agent_id / pattern
Added value: +"^[A-Za-z0-9][A-Za-z0-9_-]{1,62}[A-Za-z0-9]$"
addedInput schema / properties / audit
Added value: +{
+ "additionalProperties": false,
+ "description": "How long this agent's own decision log is kept, and whether it can be queried. Required. (This is the agent's audit policy — it is NOT Mnemom's retention policy for the card itself; see the tool's data-handling disclosure for that.)",
+ "properties": {
+ "query_endpoint": {
+ "description": "HTTPS endpoint the records can be queried from. REQUIRED when `queryable` is true, and ignored when it is false.",
+ "maxLength": 300,
+ "type": "string"
+ },
+ "queryable": {
+ "default": false,
+ "description": "Whether those retained records can be queried. Leave false unless you also supply `query_endpoint` — the server rejects a queryable audit policy with no endpoint.",
+ "type": "boolean"
+ },
+ "retention_days": {
+ "description": "How many days the agent's decision records are retained. 0 means do not retain. 3650 (10 years) maximum.",
+ "maximum": 3650,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "tamper_evidence": {
+ "description": "Tamper-evidence scheme applied to the retained records.",
+ "enum": [
+ "append_only",
+ "signed",
+ "merkle"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "retention_days",
+ "queryable"
+ ],
+ "type": "object"
+}
addedInput schema / properties / autonomy
Added value: +{
+ "additionalProperties": false,
+ "description": "What the agent may do on its own authority. Required.",
+ "properties": {
+ "bounded_actions": {
+ "description": "Action names the agent may take within its bounds — e.g. [\"send_email\", \"create_ticket\"]. At least one required. Action identifiers only, not descriptions.",
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 64,
+ "minItems": 1,
+ "type": "array"
+ },
+ "escalation_triggers": {
+ "description": "Conditions that route to a human instead of acting.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "action": {
+ "description": "What to do when the condition holds.",
+ "enum": [
+ "escalate",
+ "deny",
+ "log"
+ ],
+ "type": "string"
+ },
+ "condition": {
+ "description": "The condition, as a short expression or slug (e.g. \"amount > 1000\"). Short condition only — never paste a conversation, a log excerpt, or a record about a person. Do NOT enter personal data (names, email addresses, phone numbers, postal addresses), and do NOT enter health, biometric, government-identifier (e.g. SSN) or payment-card data. This text is stored on the agent's governance card and is readable by everyone in the owning organization.",
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "reason": {
+ "description": "Why this trigger exists, in one short sentence. Do NOT enter personal data (names, email addresses, phone numbers, postal addresses), and do NOT enter health, biometric, government-identifier (e.g. SSN) or payment-card data. This text is stored on the agent's governance card and is readable by everyone in the owning organization.",
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "condition",
+ "action",
+ "reason"
+ ],
+ "type": "object"
+ },
+ "maxItems": 32,
+ "type": "array"
+ },
+ "forbidden_actions": {
+ "description": "Action names the agent must never take. Must be disjoint from `bounded_actions`.",
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 64,
+ "type": "array"
+ }
+ },
+ "required": [
+ "bounded_actions"
+ ],
+ "type": "object"
+}
addedInput schema / properties / autonomy_mode
Added value: +{
+ "description": "Master switch for the action-policing pipeline. Required. `off` disables it; `observe` records only; `nudge` warns; `enforce` blocks.",
+ "enum": [
+ "off",
+ "observe",
+ "nudge",
+ "enforce"
+ ],
+ "type": "string"
+}
removedInput schema / properties / body
Removed value: -{
- "description": "Unified alignment card (ADR-008/ADR-039). Authored in YAML or JSON; composed server-side with platform defaults, org template, and active exemptions before storage. This schema matches the runtime validator at src/composition/validate.ts EXACTLY — a card authored strictly to it passes `PUT /v1/agents/{id}/alignment-card` and the preview-compose endpoint. Output-only fields (card_id, issued_at, expires_at, _composition, content_hash, version) are server-assigned and must NOT be sent on a PUT.",
- "properties": {
- "_composition": {
- "$ref": "#/$defs/CompositionMetadata"
- },
- "agent_id": {
- "description": "Target agent id. On PUT, server overwrites to match the URL path.",
- "type": "string"
- },
- "audit": {
- "allOf": [
- {
- "if": {
- "properties": {
- "queryable": {
- "const": true
- }
- },
- "required": [
- "queryable"
- ]
- },
- "then": {
- "required": [
- "query_endpoint"
- ]
- }
- }
- ],
- "properties": {
- "query_endpoint": {
- "description": "Required when audit.queryable is true.",
- "type": "string"
- },
- "queryable": {
- "type": "boolean"
- },
- "retention_days": {
- "minimum": 0,
- "type": "integer"
- },
- "storage": {
- "properties": {
- "location": {
- "type": "string"
- },
- "type": {
- "enum": [
- "local",
- "remote",
- "distributed"
- ],
- "type": "string"
- }
- },
- "type": "object"
- },
- "tamper_evidence": {
- "enum": [
- "append_only",
- "signed",
- "merkle",
- null
- ],
- "type": [
- "string",
- "null"
- ]
- },
- "trace_format": {
- "type": "string"
- }
- },
- "required": [
- "retention_days",
- "queryable"
- ],
- "type": "object"
- },
- "autonomy": {
- "properties": {
- "bounded_actions": {
- "items": {
- "type": "string"
- },
- "minItems": 1,
- "type": "array"
- },
- "escalation_triggers": {
- "items": {
- "properties": {
- "action": {
- "enum": [
- "escalate",
- "deny",
- "log"
- ],
- "type": "string"
- },
- "condition": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- }
- },
- "required": [
- "condition",
- "action",
- "reason"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "forbidden_actions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "max_autonomous_value": {
- "properties": {
- "amount": {
- "type": "number"
- },
- "currency": {
- "type": "string"
- }
- },
- "type": "object"
- }
- },
- "required": [
- "bounded_actions"
- ],
- "type": "object"
- },
- "autonomy_mode": {
- "description": "ADR-039 master switch for the action-policing pipeline (autonomy constraints). Required at the top level post-cutover; the legacy `enforcement.mode` location is rejected.",
- "enum": [
- "off",
- "observe",
- "nudge",
- "enforce"
- ],
- "type": "string"
- },
- "capabilities": {
- "additionalProperties": {
- "properties": {
- "description": {
- "type": "string"
- },
- "required_actions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "tools": {
- "items": {
- "type": "string"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "type": "object"
- },
- "card_id": {
- "description": "Card row id. Server-assigned on PUT (`ac-{uuid}`).",
- "type": "string"
- },
- "card_version": {
- "description": "Card schema version (required, non-empty). Current canonical value: `unified/2026-04-26`.",
- "minLength": 1,
- "type": "string"
- },
- "conscience": {
- "properties": {
- "mode": {
- "enum": [
- "augment",
- "replace"
- ],
- "type": "string"
- },
- "values": {
- "items": {
- "properties": {
- "content": {
- "type": "string"
- },
- "id": {
- "type": "string"
- },
- "severity": {
- "enum": [
- "advisory",
- "mandatory"
- ],
- "type": "string"
- },
- "type": {
- "enum": [
- "BOUNDARY",
- "FEAR",
- "COMMITMENT",
- "BELIEF",
- "HOPE"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "content"
- ],
- "type": "object"
- },
- "type": "array"
- }
- },
- "required": [
- "mode",
- "values"
- ],
- "type": "object"
- },
- "content_hash": {
- "description": "Response-only: content hash of the composed card (`sha256:<hex>`), injected by the GET/PUT response. Server-assigned — do not send on a PUT.",
- "type": "string"
- },
- "enforcement": {
- "description": "Optional ADR-039 Decision-3 user-facing knobs for unmapped-tool handling. The legacy `mode`, `unmapped_tool_action` and `fail_open` keys are REJECTED by the validator (mode → top-level autonomy_mode; fail_open → gateway env config).",
- "properties": {
- "allow_unmapped_tools": {
- "description": "When true, tools not mapped to a capability are allowed by default.",
- "type": "boolean"
- },
- "default_unmapped_severity": {
- "description": "Severity assigned to an unmapped tool when allow_unmapped_tools is false.",
- "enum": [
- "low",
- "medium",
- "high",
- "critical"
- ],
- "type": "string"
- },
- "forbidden_tools": {
- "items": {
- "properties": {
- "pattern": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- },
- "severity": {
- "enum": [
- "critical",
- "high",
- "medium",
- "low"
- ],
- "type": "string"
- }
- },
- "required": [
- "pattern",
- "reason",
- "severity"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "grace_period_hours": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "expires_at": {
- "format": "date-time",
- "type": [
- "string",
- "null"
- ]
- },
- "extensions": {
- "additionalProperties": true,
- "type": "object"
- },
- "integrity_mode": {
- "description": "ADR-039 master switch for the values/conscience pipeline (integrity constraints). Required at the top level post-cutover; the legacy `integrity.enforcement_mode` location is rejected.",
- "enum": [
- "off",
- "observe",
- "nudge",
- "enforce"
- ],
- "type": "string"
- },
- "issued_at": {
- "format": "date-time",
- "type": "string"
- },
- "principal": {
- "allOf": [
- {
- "if": {
- "properties": {
- "type": {
- "not": {
- "const": "unspecified"
- }
- }
- }
- },
- "then": {
- "required": [
- "identifier"
- ]
- }
- }
- ],
- "description": "Required object describing whose authority the agent acts under (ADR-039 Decision 10).",
- "properties": {
- "escalation_contact": {
- "type": "string"
- },
- "identifier": {
- "description": "Required (non-empty) when principal.type is not `unspecified`; identifies the human / organization / agent.",
- "minLength": 1,
- "type": "string"
- },
- "relationship": {
- "enum": [
- "delegated_authority",
- "advisory",
- "autonomous"
- ],
- "type": "string"
- },
- "type": {
- "enum": [
- "human",
- "organization",
- "agent",
- "unspecified"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "relationship"
- ],
- "type": "object"
- },
- "values": {
- "properties": {
- "conflicts_with": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "declared": {
- "description": "Ordered list of declared values. Phase 1 cards-as-primitive: each entry is either a catalog-v1 ID string (e.g. `'accuracy'`) or a parameterized map carrying optional `intensity` / `domain` / `severity_on_violation` / `scope` (e.g. `{id: 'accuracy', domain: 'financial', severity_on_violation: 'critical'}`).",
- "items": {
- "oneOf": [
- {
- "minLength": 1,
- "type": "string"
- },
- {
- "additionalProperties": {
- "type": "string"
- },
- "properties": {
- "id": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "id"
- ],
- "type": "object"
- }
- ]
- },
- "minItems": 1,
- "type": "array"
- },
- "definitions": {
- "additionalProperties": {
- "properties": {
- "description": {
- "type": "string"
- },
- "priority": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "type": "object"
- },
- "hierarchy": {
- "enum": [
- "lexicographic",
- "weighted",
- "contextual"
- ],
- "type": "string"
- }
- },
- "required": [
- "declared"
- ],
- "type": "object"
- },
- "version": {
- "description": "Response-only: monotonic card version, injected by the GET/PUT response. Server-assigned — do not send on a PUT.",
- "type": "integer"
- }
- },
- "required": [
- "card_version",
- "agent_id",
- "autonomy_mode",
- "integrity_mode",
- "principal",
- "values",
- "autonomy",
- "audit"
- ],
- "type": "object"
-}
addedInput schema / properties / card_version
Added value: +{
+ "description": "Card schema version. REQUIRED by the server-side validator. Current canonical value: `unified/2026-04-26`.",
+ "maxLength": 40,
+ "minLength": 3,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]{1,38}[A-Za-z0-9]$",
+ "type": "string"
+}
addedInput schema / properties / integrity_mode
Added value: +{
+ "description": "Master switch for the values pipeline. Required. Same four states as `autonomy_mode`.",
+ "enum": [
+ "off",
+ "observe",
+ "nudge",
+ "enforce"
+ ],
+ "type": "string"
+}
addedInput schema / properties / principal
Added value: +{
+ "additionalProperties": false,
+ "description": "Whose authority this agent acts under. Required.",
+ "properties": {
+ "escalation_contact": {
+ "description": "Where an escalation is routed. Use a ROLE ALIAS or SHARED INBOX (\"oncall-sre\", \"security@example.com\"), never an individual's personal contact details. Do NOT enter personal data (names, email addresses, phone numbers, postal addresses), and do NOT enter health, biometric, government-identifier (e.g. SSN) or payment-card data. This text is stored on the agent's governance card and is readable by everyone in the owning organization.",
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "identifier": {
+ "description": "Who the principal is. Use a ROLE or ORGANIZATION name (\"support-team\", \"Acme Corp Finance\"), NOT an individual's name, email address or phone number. Pass \"unspecified\" if there is no named principal. Do NOT enter personal data (names, email addresses, phone numbers, postal addresses), and do NOT enter health, biometric, government-identifier (e.g. SSN) or payment-card data. This text is stored on the agent's governance card and is readable by everyone in the owning organization.",
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "relationship": {
+ "description": "How the agent relates to that principal.",
+ "enum": [
+ "delegated_authority",
+ "advisory",
+ "autonomous"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "The kind of principal the agent answers to.",
+ "enum": [
+ "human",
+ "organization",
+ "agent",
+ "unspecified"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "relationship",
+ "identifier"
+ ],
+ "type": "object"
+}
addedInput schema / properties / values
Added value: +{
+ "additionalProperties": false,
+ "description": "The values this agent declares it is bound by. Required.",
+ "properties": {
+ "declared": {
+ "description": "Value catalog IDs — e.g. [\"honesty\", \"no_harm\", \"privacy\"]. At least one required, 32 maximum. Short catalog slugs ONLY, never prose and never personal data. (Parameterized value references and long-form value definitions are available on the /v1 REST + CLI path; they are deliberately not exposed here.)",
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 32,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "declared"
+ ],
+ "type": "object"
+}
changedInput schema / required
Previous value: -[
- "agent_id"
-]New value: +[
+ "agent_id",
+ "card_version",
+ "autonomy_mode",
+ "integrity_mode",
+ "principal",
+ "values",
+ "autonomy",
+ "audit"
+]
removedOutput schema / $defs
Removed value: -{
- "ComposedAlignmentCard": {
- "description": "OUTPUT-only variant of `UnifiedAlignmentCard` for the COMPOSED card the server emits on GET `/v1/alignment/{scope}/{id}`, `/effective`, and the `composed` field of preview-compose. Identical to `UnifiedAlignmentCard` except `principal` is optional (a default / org-scope composed card has no agent principal) and `values.declared` / `autonomy.bounded_actions` may be empty (a fresh card declares nothing yet). The strict `UnifiedAlignmentCard` remains the authoring/request contract.",
- "properties": {
- "_composition": {
- "$ref": "#/$defs/CompositionMetadata"
- },
- "agent_id": {
- "description": "Target agent id. On PUT, server overwrites to match the URL path.",
- "type": "string"
- },
- "audit": {
- "allOf": [
- {
- "if": {
- "properties": {
- "queryable": {
- "const": true
- }
- },
- "required": [
- "queryable"
- ]
- },
- "then": {
- "required": [
- "query_endpoint"
- ]
- }
- }
- ],
- "properties": {
- "query_endpoint": {
- "description": "Required when audit.queryable is true.",
- "type": "string"
- },
- "queryable": {
- "type": "boolean"
- },
- "retention_days": {
- "minimum": 0,
- "type": "integer"
- },
- "storage": {
- "properties": {
- "location": {
- "type": "string"
- },
- "type": {
- "enum": [
- "local",
- "remote",
- "distributed"
- ],
- "type": "string"
- }
- },
- "type": "object"
- },
- "tamper_evidence": {
- "enum": [
- "append_only",
- "signed",
- "merkle",
- null
- ],
- "type": [
- "string",
- "null"
- ]
- },
- "trace_format": {
- "type": "string"
- }
- },
- "required": [
- "retention_days",
- "queryable"
- ],
- "type": "object"
- },
- "autonomy": {
- "properties": {
- "bounded_actions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "escalation_triggers": {
- "items": {
- "properties": {
- "action": {
- "enum": [
- "escalate",
- "deny",
- "log"
- ],
- "type": "string"
- },
- "condition": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- }
- },
- "required": [
- "condition",
- "action",
- "reason"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "forbidden_actions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "max_autonomous_value": {
- "properties": {
- "amount": {
- "type": "number"
- },
- "currency": {
- "type": "string"
- }
- },
- "type": "object"
- }
- },
- "required": [
- "bounded_actions"
- ],
- "type": "object"
- },
- "autonomy_mode": {
- "description": "ADR-039 master switch for the action-policing pipeline (autonomy constraints). Required at the top level post-cutover; the legacy `enforcement.mode` location is rejected.",
- "enum": [
- "off",
- "observe",
- "nudge",
- "enforce"
- ],
- "type": "string"
- },
- "capabilities": {
- "additionalProperties": {
- "properties": {
- "description": {
- "type": "string"
- },
- "required_actions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "tools": {
- "items": {
- "type": "string"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "type": "object"
- },
- "card_id": {
- "description": "Card row id. Server-assigned on PUT (`ac-{uuid}`).",
- "type": "string"
- },
- "card_version": {
- "description": "Card schema version (required, non-empty). Current canonical value: `unified/2026-04-26`.",
- "minLength": 1,
- "type": "string"
- },
- "conscience": {
- "properties": {
- "mode": {
- "enum": [
- "augment",
- "replace"
- ],
- "type": "string"
- },
- "values": {
- "items": {
- "properties": {
- "content": {
- "type": "string"
- },
- "id": {
- "type": "string"
- },
- "severity": {
- "enum": [
- "advisory",
- "mandatory"
- ],
- "type": "string"
- },
- "type": {
- "enum": [
- "BOUNDARY",
- "FEAR",
- "COMMITMENT",
- "BELIEF",
- "HOPE"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "content"
- ],
- "type": "object"
- },
- "type": "array"
- }
- },
- "required": [
- "mode",
- "values"
- ],
- "type": "object"
- },
- "content_hash": {
- "description": "Response-only: content hash of the composed card (`sha256:<hex>`), injected by the GET/PUT response. Server-assigned — do not send on a PUT.",
- "type": "string"
- },
- "enforcement": {
- "description": "Optional ADR-039 Decision-3 user-facing knobs for unmapped-tool handling. The legacy `mode`, `unmapped_tool_action` and `fail_open` keys are REJECTED by the validator (mode → top-level autonomy_mode; fail_open → gateway env config).",
- "properties": {
- "allow_unmapped_tools": {
- "description": "When true, tools not mapped to a capability are allowed by default.",
- "type": "boolean"
- },
- "default_unmapped_severity": {
- "description": "Severity assigned to an unmapped tool when allow_unmapped_tools is false.",
- "enum": [
- "low",
- "medium",
- "high",
- "critical"
- ],
- "type": "string"
- },
- "forbidden_tools": {
- "items": {
- "properties": {
- "pattern": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- },
- "severity": {
- "enum": [
- "critical",
- "high",
- "medium",
- "low"
- ],
- "type": "string"
- }
- },
- "required": [
- "pattern",
- "reason",
- "severity"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "grace_period_hours": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "expires_at": {
- "format": "date-time",
- "type": [
- "string",
- "null"
- ]
- },
- "extensions": {
- "additionalProperties": true,
- "type": "object"
- },
- "integrity_mode": {
- "description": "ADR-039 master switch for the values/conscience pipeline (integrity constraints). Required at the top level post-cutover; the legacy `integrity.enforcement_mode` location is rejected.",
- "enum": [
- "off",
- "observe",
- "nudge",
- "enforce"
- ],
- "type": "string"
- },
- "issued_at": {
- "format": "date-time",
- "type": "string"
- },
- "principal": {
- "allOf": [
- {
- "if": {
- "properties": {
- "type": {
- "not": {
- "const": "unspecified"
- }
- }
- }
- },
- "then": {
- "required": [
- "identifier"
- ]
- }
- }
- ],
- "description": "Required object describing whose authority the agent acts under (ADR-039 Decision 10).",
- "properties": {
- "escalation_contact": {
- "type": "string"
- },
- "identifier": {
- "description": "Required (non-empty) when principal.type is not `unspecified`; identifies the human / organization / agent.",
- "minLength": 1,
- "type": "string"
- },
- "relationship": {
- "enum": [
- "delegated_authority",
- "advisory",
- "autonomous"
- ],
- "type": "string"
- },
- "type": {
- "enum": [
- "human",
- "organization",
- "agent",
- "unspecified"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "relationship"
- ],
- "type": "object"
- },
- "values": {
- "properties": {
- "conflicts_with": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "declared": {
- "description": "Ordered list of declared values. Phase 1 cards-as-primitive: each entry is either a catalog-v1 ID string (e.g. `'accuracy'`) or a parameterized map carrying optional `intensity` / `domain` / `severity_on_violation` / `scope` (e.g. `{id: 'accuracy', domain: 'financial', severity_on_violation: 'critical'}`).",
- "items": {
- "oneOf": [
- {
- "minLength": 1,
- "type": "string"
- },
- {
- "additionalProperties": {
- "type": "string"
- },
- "properties": {
- "id": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "id"
- ],
- "type": "object"
- }
- ]
- },
- "type": "array"
- },
- "definitions": {
- "additionalProperties": {
- "properties": {
- "description": {
- "type": "string"
- },
- "priority": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "type": "object"
- },
- "hierarchy": {
- "enum": [
- "lexicographic",
- "weighted",
- "contextual"
- ],
- "type": "string"
- }
- },
- "required": [
- "declared"
- ],
- "type": "object"
- },
- "version": {
- "description": "Response-only: monotonic card version, injected by the GET/PUT response. Server-assigned — do not send on a PUT.",
- "type": "integer"
- }
- },
- "required": [
- "card_version",
- "agent_id",
- "autonomy_mode",
- "integrity_mode",
- "values",
- "autonomy",
- "audit"
- ],
- "type": "object"
- },
- "CompositionMetadata": {
- "description": "System-managed block describing which scope sources merged into the canonical card. Only returned when `?include_composition=true`.",
- "properties": {
- "canonical_id": {
- "type": "string"
- },
- "composed_at": {
- "format": "date-time",
- "type": "string"
- },
- "exemptions_applied": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "scopes_applied": {
- "items": {
- "properties": {
- "card_id": {
- "type": "string"
- },
- "scope": {
- "description": "`platform`, `org:<id>`, or `agent:<id>`.",
- "type": "string"
- },
- "template_version": {
- "type": "integer"
- },
- "version": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "type": "array"
- },
- "source_card_id": {
- "type": "string"
- },
- "source_policy_id": {
- "type": "string"
- }
- },
- "type": "object"
- }
-}
addedOutput schema / additionalProperties
Added value: +false
removedOutput schema / description
Removed value: -"OUTPUT-only variant of `UnifiedAlignmentCard` for the COMPOSED card the server emits on GET `/v1/alignment/{scope}/{id}`, `/effective`, and the `composed` field of preview-compose. Identical to `UnifiedAlignmentCard` except `principal` is optional (a default / org-scope composed card has no agent principal) and `values.declared` / `autonomy.bounded_actions` may be empty (a fresh card declares nothing yet). The strict `UnifiedAlignmentCard` remains the authoring/request contract."
removedOutput schema / properties / _composition
Removed value: -{
- "$ref": "#/$defs/CompositionMetadata"
-}
removedOutput schema / properties / agent_id
Removed value: -{
- "description": "Target agent id. On PUT, server overwrites to match the URL path.",
- "type": "string"
-}
removedOutput schema / properties / audit
Removed value: -{
- "allOf": [
- {
- "if": {
- "properties": {
- "queryable": {
- "const": true
- }
- },
- "required": [
- "queryable"
- ]
- },
- "then": {
- "required": [
- "query_endpoint"
- ]
- }
- }
- ],
- "properties": {
- "query_endpoint": {
- "description": "Required when audit.queryable is true.",
- "type": "string"
- },
- "queryable": {
- "type": "boolean"
- },
- "retention_days": {
- "minimum": 0,
- "type": "integer"
- },
- "storage": {
- "properties": {
- "location": {
- "type": "string"
- },
- "type": {
- "enum": [
- "local",
- "remote",
- "distributed"
- ],
- "type": "string"
- }
- },
- "type": "object"
- },
- "tamper_evidence": {
- "enum": [
- "append_only",
- "signed",
- "merkle",
- null
- ],
- "type": [
- "string",
- "null"
- ]
- },
- "trace_format": {
- "type": "string"
- }
- },
- "required": [
- "retention_days",
- "queryable"
- ],
- "type": "object"
-}
removedOutput schema / properties / autonomy
Removed value: -{
- "properties": {
- "bounded_actions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "escalation_triggers": {
- "items": {
- "properties": {
- "action": {
- "enum": [
- "escalate",
- "deny",
- "log"
- ],
- "type": "string"
- },
- "condition": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- }
- },
- "required": [
- "condition",
- "action",
- "reason"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "forbidden_actions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "max_autonomous_value": {
- "properties": {
- "amount": {
- "type": "number"
- },
- "currency": {
- "type": "string"
- }
- },
- "type": "object"
- }
- },
- "required": [
- "bounded_actions"
- ],
- "type": "object"
-}
removedOutput schema / properties / autonomy_mode
Removed value: -{
- "description": "ADR-039 master switch for the action-policing pipeline (autonomy constraints). Required at the top level post-cutover; the legacy `enforcement.mode` location is rejected.",
- "enum": [
- "off",
- "observe",
- "nudge",
- "enforce"
- ],
- "type": "string"
-}
removedOutput schema / properties / capabilities
Removed value: -{
- "additionalProperties": {
- "properties": {
- "description": {
- "type": "string"
- },
- "required_actions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "tools": {
- "items": {
- "type": "string"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "type": "object"
-}
changedOutput schema / properties / card_id / description
Previous value: -"Card row id. Server-assigned on PUT (`ac-{uuid}`)."New value: +"Card ID (ac-{uuid}) of the stored alignment card."
addedOutput schema / properties / card_id / pattern
Added value: +"^ac-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
removedOutput schema / properties / card_version
Removed value: -{
- "description": "Card schema version (required, non-empty). Current canonical value: `unified/2026-04-26`.",
- "minLength": 1,
- "type": "string"
-}
removedOutput schema / properties / conscience
Removed value: -{
- "properties": {
- "mode": {
- "enum": [
- "augment",
- "replace"
- ],
- "type": "string"
- },
- "values": {
- "items": {
- "properties": {
- "content": {
- "type": "string"
- },
- "id": {
- "type": "string"
- },
- "severity": {
- "enum": [
- "advisory",
- "mandatory"
- ],
- "type": "string"
- },
- "type": {
- "enum": [
- "BOUNDARY",
- "FEAR",
- "COMMITMENT",
- "BELIEF",
- "HOPE"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "content"
- ],
- "type": "object"
- },
- "type": "array"
- }
- },
- "required": [
- "mode",
- "values"
- ],
- "type": "object"
-}
removedOutput schema / properties / content_hash
Removed value: -{
- "description": "Response-only: content hash of the composed card (`sha256:<hex>`), injected by the GET/PUT response. Server-assigned — do not send on a PUT.",
- "type": "string"
-}
removedOutput schema / properties / enforcement
Removed value: -{
- "description": "Optional ADR-039 Decision-3 user-facing knobs for unmapped-tool handling. The legacy `mode`, `unmapped_tool_action` and `fail_open` keys are REJECTED by the validator (mode → top-level autonomy_mode; fail_open → gateway env config).",
- "properties": {
- "allow_unmapped_tools": {
- "description": "When true, tools not mapped to a capability are allowed by default.",
- "type": "boolean"
- },
- "default_unmapped_severity": {
- "description": "Severity assigned to an unmapped tool when allow_unmapped_tools is false.",
- "enum": [
- "low",
- "medium",
- "high",
- "critical"
- ],
- "type": "string"
- },
- "forbidden_tools": {
- "items": {
- "properties": {
- "pattern": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- },
- "severity": {
- "enum": [
- "critical",
- "high",
- "medium",
- "low"
- ],
- "type": "string"
- }
- },
- "required": [
- "pattern",
- "reason",
- "severity"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "grace_period_hours": {
- "type": "integer"
- }
- },
- "type": "object"
-}
removedOutput schema / properties / expires_at
Removed value: -{
- "format": "date-time",
- "type": [
- "string",
- "null"
- ]
-}
removedOutput schema / properties / extensions
Removed value: -{
- "additionalProperties": true,
- "type": "object"
-}
removedOutput schema / properties / integrity_mode
Removed value: -{
- "description": "ADR-039 master switch for the values/conscience pipeline (integrity constraints). Required at the top level post-cutover; the legacy `integrity.enforcement_mode` location is rejected.",
- "enum": [
- "off",
- "observe",
- "nudge",
- "enforce"
- ],
- "type": "string"
-}
addedOutput schema / properties / issued_at / description
Added value: +"ISO 8601 timestamp when the card was issued/stored."
addedOutput schema / properties / ok
Added value: +{
+ "const": true,
+ "description": "Always true on successful storage (errors return non-200 status).",
+ "type": "boolean"
+}
removedOutput schema / properties / principal
Removed value: -{
- "allOf": [
- {
- "if": {
- "properties": {
- "type": {
- "not": {
- "const": "unspecified"
- }
- }
- }
- },
- "then": {
- "required": [
- "identifier"
- ]
- }
- }
- ],
- "description": "Required object describing whose authority the agent acts under (ADR-039 Decision 10).",
- "properties": {
- "escalation_contact": {
- "type": "string"
- },
- "identifier": {
- "description": "Required (non-empty) when principal.type is not `unspecified`; identifies the human / organization / agent.",
- "minLength": 1,
- "type": "string"
- },
- "relationship": {
- "enum": [
- "delegated_authority",
- "advisory",
- "autonomous"
- ],
- "type": "string"
- },
- "type": {
- "enum": [
- "human",
- "organization",
- "agent",
- "unspecified"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "relationship"
- ],
- "type": "object"
-}
removedOutput schema / properties / values
Removed value: -{
- "properties": {
- "conflicts_with": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "declared": {
- "description": "Ordered list of declared values. Phase 1 cards-as-primitive: each entry is either a catalog-v1 ID string (e.g. `'accuracy'`) or a parameterized map carrying optional `intensity` / `domain` / `severity_on_violation` / `scope` (e.g. `{id: 'accuracy', domain: 'financial', severity_on_violation: 'critical'}`).",
- "items": {
- "oneOf": [
- {
- "minLength": 1,
- "type": "string"
- },
- {
- "additionalProperties": {
- "type": "string"
- },
- "properties": {
- "id": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "id"
- ],
- "type": "object"
- }
- ]
- },
- "type": "array"
- },
- "definitions": {
- "additionalProperties": {
- "properties": {
- "description": {
- "type": "string"
- },
- "priority": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "type": "object"
- },
- "hierarchy": {
- "enum": [
- "lexicographic",
- "weighted",
- "contextual"
- ],
- "type": "string"
- }
- },
- "required": [
- "declared"
- ],
- "type": "object"
-}
removedOutput schema / properties / version
Removed value: -{
- "description": "Response-only: monotonic card version, injected by the GET/PUT response. Server-assigned — do not send on a PUT.",
- "type": "integer"
-}
changedOutput schema / required
Previous value: -[
- "card_version",
- "agent_id",
- "autonomy_mode",
- "integrity_mode",
- "values",
- "autonomy",
- "audit"
-]New value: +[
+ "card_id",
+ "issued_at",
+ "ok"
+]