Skip to main content
Glama

Mnemom — Trust Ratings for AI Agents

preview_compose_alignment_by_agent

Read-onlyIdempotent

Preview composed alignment (dry run) — Composes the cascade against a hypothetical body at the agent layer and returns conflicts + the composed view. No DB writes. Used by the dashboard editor for live conflict markers.

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
okYesTrue when composition succeeded (no blocking conflicts).
summaryYesOne-line human-readable summary of composition status.
full_reportNoOptional pointer to the full /v1 conflict report (method + path).
conflicts_countYesTotal number of conflicts detected (0 = none).
composition_validYesTrue when the composed card is coherence-valid.

Schema Changelog

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

  1. Changed34 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 / properties / coherence_violations
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "by_severity": {
      -      "additionalProperties": {
      -        "type": "integer"
      -      },
      -      "type": "object"
      -    },
      -    "items": {
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "field": {},
      -          "message": {},
      -          "rule": {},
      -          "severity": {}
      -        },
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "not_shown": {
      -      "type": "integer"
      -    },
      -    "total": {
      -      "type": "integer"
      -    }
      -  },
      -  "required": [
      -    "total",
      -    "by_severity",
      -    "items"
      -  ],
      -  "type": "object"
      -}
    • addedOutput schema / properties / composition_valid
      Added value: +{
      +  "description": "True when the composed card is coherence-valid.",
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / conflicts
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "by_reason": {
      -      "additionalProperties": {
      -        "type": "integer"
      -      },
      -      "type": "object"
      -    },
      -    "not_shown": {
      -      "description": "Conflicts beyond the inline top-N (present only when > top-N).",
      -      "type": "integer"
      -    },
      -    "overrides": {
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "field": {},
      -          "from": {},
      -          "reason": {},
      -          "to": {},
      -          "won_by": {}
      -        },
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "total": {
      -      "type": "integer"
      -    }
      -  },
      -  "required": [
      -    "total",
      -    "by_reason",
      -    "overrides"
      -  ],
      -  "type": "object"
      -}
    • addedOutput schema / properties / conflicts_count
      Added value: +{
      +  "description": "Total number of conflicts detected (0 = none).",
      +  "type": "integer"
      +}
    • removedOutput schema / properties / effective
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "autonomy_mode": {
      -      "type": "string"
      -    },
      -    "capabilities_count": {
      -      "type": "integer"
      -    },
      -    "conscience_value_count": {
      -      "type": "integer"
      -    },
      -    "forbidden_actions_count": {
      -      "type": "integer"
      -    },
      -    "integrity_mode": {
      -      "type": "string"
      -    },
      -    "principal_type": {
      -      "type": "string"
      -    },
      -    "values_declared_count": {
      -      "type": "integer"
      -    }
      -  },
      -  "required": [
      -    "values_declared_count",
      -    "conscience_value_count",
      -    "forbidden_actions_count",
      -    "capabilities_count"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / full_report / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / full_report / description
      Added value: +"Optional pointer to the full /v1 conflict report (method + path)."
    • addedOutput schema / properties / full_report / oneOf
      Added value: +[
      +  {
      +    "type": "null"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "method": {
      +        "type": "string"
      +      },
      +      "note": {
      +        "type": "string"
      +      },
      +      "path": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "method",
      +      "path",
      +      "note"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties / full_report / properties
      Removed value: -{
      -  "method": {
      -    "type": "string"
      -  },
      -  "note": {
      -    "type": "string"
      -  },
      -  "path": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / full_report / required
      Removed value: -[
      -  "method",
      -  "path",
      -  "note"
      -]
    • removedOutput schema / properties / full_report / type
      Removed value: -"object"
    • addedOutput schema / properties / ok / description
      Added value: +"True when composition succeeded (no blocking conflicts)."
    • addedOutput schema / properties / summary / description
      Added value: +"One-line human-readable summary of composition status."
    • removedOutput schema / properties / summary / enum
      Removed value: -[
      -  true
      -]
    • changedOutput schema / properties / summary / type
      Previous value: -"boolean"New value: +"string"
    • removedOutput schema / properties / tool
      Removed value: -{
      -  "enum": [
      -    "preview_compose_alignment_by_agent"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / what_changed
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / what_to_do_next
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / what_would_break
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "summary",
      -  "tool",
      -  "ok",
      -  "effective",
      -  "conflicts",
      -  "coherence_violations",
      -  "what_changed",
      -  "what_would_break",
      -  "what_to_do_next",
      -  "full_report"
      -]New value: +[
      +  "ok",
      +  "composition_valid",
      +  "conflicts_count",
      +  "summary"
      +]
  2. 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"
      +]
  3. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description reinforces this with 'No DB writes' while adding that it composes against a hypothetical body and returns conflicts and a composed view. This adds useful context beyond annotations, though the meaning of 'cascade' and 'agent layer' could be clearer.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and dry-run nature, with no wasted words. It efficiently conveys the primary function, side effects, and intended usage.

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 nested params, output schema exists), the description provides sufficient orientation: what it does, side effects, and typical use case. It does not elaborate on input semantics, but the schema covers that, and the output schema eliminates the need to describe return structure.

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 documents all eight parameters. The description does not add parameter-specific meaning, but the rich schema already handles that, so baseline 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 tool performs a dry-run preview of composed alignment at the agent layer, returning conflicts and the composed view. It differentiates from sibling tools like put_alignment_by_agent (write) and preview_compose_protection_by_agent (protection vs alignment).

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 description specifies it is a dry run with no DB writes and mentions its use by the dashboard editor for live conflict markers, implying a preview-before-commit context. It does not explicitly contrast against put_alignment_by_agent, but the use case is clear enough.

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.