curl --request GET \
--url https://api.mnemom.ai/v1/alignment/agent/{agent_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.mnemom.ai/v1/alignment/agent/{agent_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.mnemom.ai/v1/alignment/agent/{agent_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mnemom.ai/v1/alignment/agent/{agent_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.mnemom.ai/v1/alignment/agent/{agent_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.mnemom.ai/v1/alignment/agent/{agent_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mnemom.ai/v1/alignment/agent/{agent_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"card_version": "<string>",
"autonomy_mode": "off",
"integrity_mode": "off",
"agent_id": "<string>",
"values": {
"declared": [
"<string>"
],
"definitions": {},
"conflicts_with": [
"<string>"
],
"hierarchy": "lexicographic"
},
"autonomy": {
"bounded_actions": [
"<string>"
],
"forbidden_actions": [
"<string>"
],
"escalation_triggers": [
{
"condition": "<string>",
"action": "escalate",
"reason": "<string>"
}
],
"max_autonomous_value": {
"amount": 123,
"currency": "<string>"
}
},
"audit": {
"retention_days": 1,
"queryable": true,
"trace_format": "<string>",
"query_endpoint": "<string>",
"tamper_evidence": "append_only",
"storage": {
"type": "local",
"location": "<string>"
}
},
"card_id": "<string>",
"issued_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"principal": {
"type": "human",
"relationship": "delegated_authority",
"identifier": "<string>",
"escalation_contact": "<string>"
},
"conscience": {
"mode": "augment",
"values": [
{
"type": "BOUNDARY",
"content": "<string>",
"id": "<string>",
"severity": "advisory"
}
]
},
"capabilities": {},
"enforcement": {
"allow_unmapped_tools": true,
"default_unmapped_severity": "low",
"forbidden_tools": [
{
"pattern": "<string>",
"reason": "<string>",
"severity": "critical"
}
],
"grace_period_hours": 123
},
"extensions": {},
"_composition": {
"canonical_id": "<string>",
"composed_at": "2023-11-07T05:31:56Z",
"scopes_applied": [
{
"scope": "<string>",
"version": 123,
"template_version": 123,
"card_id": "<string>"
}
],
"exemptions_applied": [
"<string>"
],
"source_card_id": "<string>",
"source_policy_id": "<string>"
},
"content_hash": "<string>",
"version": 123
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}Get this layer's alignment manifest
Returns the agent-scope alignment spec as authored.
curl --request GET \
--url https://api.mnemom.ai/v1/alignment/agent/{agent_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.mnemom.ai/v1/alignment/agent/{agent_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.mnemom.ai/v1/alignment/agent/{agent_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mnemom.ai/v1/alignment/agent/{agent_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.mnemom.ai/v1/alignment/agent/{agent_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.mnemom.ai/v1/alignment/agent/{agent_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mnemom.ai/v1/alignment/agent/{agent_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"card_version": "<string>",
"autonomy_mode": "off",
"integrity_mode": "off",
"agent_id": "<string>",
"values": {
"declared": [
"<string>"
],
"definitions": {},
"conflicts_with": [
"<string>"
],
"hierarchy": "lexicographic"
},
"autonomy": {
"bounded_actions": [
"<string>"
],
"forbidden_actions": [
"<string>"
],
"escalation_triggers": [
{
"condition": "<string>",
"action": "escalate",
"reason": "<string>"
}
],
"max_autonomous_value": {
"amount": 123,
"currency": "<string>"
}
},
"audit": {
"retention_days": 1,
"queryable": true,
"trace_format": "<string>",
"query_endpoint": "<string>",
"tamper_evidence": "append_only",
"storage": {
"type": "local",
"location": "<string>"
}
},
"card_id": "<string>",
"issued_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"principal": {
"type": "human",
"relationship": "delegated_authority",
"identifier": "<string>",
"escalation_contact": "<string>"
},
"conscience": {
"mode": "augment",
"values": [
{
"type": "BOUNDARY",
"content": "<string>",
"id": "<string>",
"severity": "advisory"
}
]
},
"capabilities": {},
"enforcement": {
"allow_unmapped_tools": true,
"default_unmapped_severity": "low",
"forbidden_tools": [
{
"pattern": "<string>",
"reason": "<string>",
"severity": "critical"
}
],
"grace_period_hours": 123
},
"extensions": {},
"_composition": {
"canonical_id": "<string>",
"composed_at": "2023-11-07T05:31:56Z",
"scopes_applied": [
{
"scope": "<string>",
"version": 123,
"template_version": 123,
"card_id": "<string>"
}
],
"exemptions_applied": [
"<string>"
],
"source_card_id": "<string>",
"source_policy_id": "<string>"
},
"content_hash": "<string>",
"version": 123
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}Authorizations
Supabase JWT token in Authorization: Bearer header
Headers
Response format. YAML is canonical; JSON is returned only on explicit application/json. The ?include=sources envelope is JSON-only.
text/yaml, application/yaml, application/json Path Parameters
Agent identifier (e.g. smolt-abc123)
Query Parameters
Include the _composition metadata block on the response body.
When sources, returns the four-scope envelope {platform, org, teams[], agent, composed, composed_stale, my_role} (see ADR-053). The envelope is JSON-only.
sources Response
Alignment manifest at this scope.
- Option 1
- Option 2
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.
Card schema version (required, non-empty). Current canonical value: unified/2026-04-26.
1ADR-039 master switch for the action-policing pipeline (autonomy constraints). Required at the top level post-cutover; the legacy enforcement.mode location is rejected.
off, observe, nudge, enforce 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.
off, observe, nudge, enforce Target agent id. On PUT, server overwrites to match the URL path.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Card row id. Server-assigned on PUT (ac-{uuid}).
Required object describing whose authority the agent acts under (ADR-039 Decision 10).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
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).
Show child attributes
Show child attributes
System-managed block describing which scope sources merged into the canonical card. Only returned when ?include_composition=true.
Show child attributes
Show child attributes
Response-only: content hash of the composed card (sha256:<hex>), injected by the GET/PUT response. Server-assigned — do not send on a PUT.
Response-only: monotonic card version, injected by the GET/PUT response. Server-assigned — do not send on a PUT.