Skip to main content
Glama

Mnemom — Trust Ratings for AI Agents

put_alignment_by_agent

DestructiveIdempotent

Publish or replace the alignment manifest — Accepts YAML (text/yaml, application/yaml) or JSON. Body is the full UnifiedAlignmentCard; server-side composition merges it across the platform → org → team → agent cascade and writes the canonical composed card. Requires Idempotency-Key. Honor...

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
auditYesHow 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.)
valuesYesThe values this agent declares it is bound by. Required.
agent_idYesThe 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.
autonomyYesWhat the agent may do on its own authority. Required.
principalYesWhose authority this agent acts under. Required.
card_versionYesCard schema version. REQUIRED by the server-side validator. Current canonical value: `unified/2026-04-26`.
autonomy_modeYesMaster switch for the action-policing pipeline. Required. `off` disables it; `observe` records only; `nudge` warns; `enforce` blocks.
integrity_modeYesMaster switch for the values pipeline. Required. Same four states as `autonomy_mode`.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYesAlways true on successful storage (errors return non-200 status).
card_idYesCard ID (ac-{uuid}) of the stored alignment card.
issued_atYesISO 8601 timestamp when the card was issued/stored.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed38 schema fields changed
    • 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"
      +]
  2. Changed6 schema fields changed
    • addedOutput schema / $defs / ComposedAlignmentCard
      Added value: +{
      +  "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"
      +}
    • removedOutput schema / $defs / UnifiedAlignmentCard
      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"
      -}
    • changedOutput schema / description
      Previous value: -"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."New 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 / autonomy / properties / bounded_actions / minItems
      Removed value: -1
    • removedOutput schema / properties / values / properties / declared / minItems
      Removed value: -1
    • changedOutput schema / required
      Previous value: -[
      -  "card_version",
      -  "agent_id",
      -  "autonomy_mode",
      -  "integrity_mode",
      -  "principal",
      -  "values",
      -  "autonomy",
      -  "audit"
      -]New value: +[
      +  "card_version",
      +  "agent_id",
      +  "autonomy_mode",
      +  "integrity_mode",
      +  "values",
      +  "autonomy",
      +  "audit"
      +]
  3. Changed4 schema fields changed
    • removedInput schema / properties / body / additionalProperties
      Removed value: -true
    • addedInput schema / properties / body / description
      Added value: +"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."
    • addedInput schema / properties / body / properties
      Added value: +{
      +  "_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"
      +  }
      +}
    • addedInput schema / properties / body / required
      Added value: +[
      +  "card_version",
      +  "agent_id",
      +  "autonomy_mode",
      +  "integrity_mode",
      +  "principal",
      +  "values",
      +  "autonomy",
      +  "audit"
      +]
  4. First observed

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral context beyond annotations: it discloses server-side composition merging across the platform→org→team→agent cascade, writes the canonical composed card, and requires Idempotency-Key. Annotations already signal destructive and idempotent behavior, and the description reinforces and extends this without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose but becomes a run-on sentence and ends abruptly with "Honor...", which appears truncated. While each segment carries useful information, the structure suffers from the incomplete final clause and the dense single-sentence flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 params, nested objects) and rich schema plus output schema, the description covers key behavioral aspects: media types, merge cascade, canonical card, and idempotency requirement. It misses explicit return-value discussion (covered by output schema) and the truncated "Honor..." likely indicates more context, but it is still fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully explains all parameters. The description adds only a high-level note that the body is the full UnifiedAlignmentCard, but does not enrich individual parameter semantics beyond what the schema provides. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: "Publish or replace the alignment manifest". It distinguishes from siblings like put_protection_by_agent (protection card) and preview_compose_alignment_by_agent (preview), making its specific purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: this is the publish/replace operation for an alignment card, accepting YAML or JSON with a full UnifiedAlignmentCard body. However, it does not explicitly mention alternatives like preview_compose_alignment_by_agent or state when not to use it, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct operation: identity claiming, lookup, reputation retrieval/badge, scanning, verification, alignment/protection management, and feedback. No significant overlap exists.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case (e.g., claim_agent, get_reputation, verify_scan). Even complex names like preview_compose_alignment_by_agent adhere to the pattern.

Tool Count4/5

With 16 tools, the set is slightly heavy but still well-scoped for the domain of AI agent trust ratings. Each tool serves a clear purpose, and no tool feels redundant.

Completeness4/5

The surface covers core workflows: agent identity, reputation, alignment/protection, scanning, verification, and feedback. Minor gaps like agent updates or deletion might exist, but the core lifecycle is complete.