Build the Article 12 evidence pack
Invoke the EU AI Act Article 12 export, then read the coverage report that maps the evidence you hold to controls and names the gaps.
compliance.pack
Invoke the EU AI Act Article 12 export, then read the coverage report that maps the evidence you hold to controls and names the gaps.
compliance.packPut admission in front of your MCP servers, repositories, SaaS tools and cloud accounts. Every agent gets a lease or a reason – and you keep the lever to stop any of them.
You need to show what record-keeping the plane gives you for the EU AI Act. The pack for Article 12 is an export wrap, and the coverage report checks each of fourteen controls against what is observed: live ledger event kinds and the modules that run.
The module maps evidence to controls and screens out text that claims conformity, legal advice or a guaranteed outcome. A control missing from a coverage report fails the whole report. Only list and pack have an MCP action; the rest is REST.
The code reads the key from INTRAMEDIAL_KEY. Keep it in your shell or your secret store, never in a file you commit. Calls that need a signed-in person cannot use a key: the console makes them.
Read the packs and controls the workspace can invoke before you ask for one. The module covers fourteen controls across the EU AI Act and NIST AI RMF, and Articles 9, 12, 14, 15 and 50 are mapped. Article 14's export wrap is free on every plan.
The pack answers with the wrap it invoked in wrapId. artifacts stays empty when the export runtime is unbound.
{
"pack": {
"id": "art12",
"wrapId": "exports.eu-ai-act.article-12.request"
},
"wraps": ["exports.eu-ai-act.article-12.request"],
"invoked": true,
"artifacts": []
}wrapId, or was skipped cleanly.compliance.packcompliance-pack
curl -sS https://api.intramedial.com/api/v1/acp/compliance/list \
-H "Authorization: Bearer $INTRAMEDIAL_KEY"const res = await fetch("https://api.intramedial.com/api/v1/acp/compliance/list", {
headers: { Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`, },
});
console.log(res.status, await res.json());import os, requests
res = requests.get(
"https://api.intramedial.com/api/v1/acp/compliance/list",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
timeout=30,
)
print(res.status_code, res.json())Send the article id, such as art12. The module looks up its export wrap and invokes it through the export runtime, and skips cleanly when that runtime is unbound rather than inventing an id. The answer names the wrap in wrapId and wraps.
curl -sS -X POST https://api.intramedial.com/api/v1/acp/compliance/pack \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "art12"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/compliance/pack", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
id: "art12",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/compliance/pack",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"id": "art12",
},
timeout=30,
)
print(res.status_code, res.json())The coverage action checks each of fourteen controls against what is really observed: live ledger event kinds, the dispatcher's own module table and export-runtime availability. Each control comes back evidenced, partial or gap, and the gaps are named, never dropped. A control missing from the report fails the whole report.
curl -sS https://api.intramedial.com/api/v1/acp/compliance/coverage \
-H "Authorization: Bearer $INTRAMEDIAL_KEY"const res = await fetch("https://api.intramedial.com/api/v1/acp/compliance/coverage", {
headers: { Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`, },
});
console.log(res.status, await res.json());import os, requests
res = requests.get(
"https://api.intramedial.com/api/v1/acp/compliance/coverage",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
timeout=30,
)
print(res.status_code, res.json())Copied from: /docs/compliance-pack
The ledger is append-only and sealed under Merkle roots. The time on an entry is Intramedial's own clock, and a signed bundle can be checked offline with the published key.
Seal the audit log into a Merkle-rooted, signed bundle and check it offline with the published key.
ledger.bundles-snapshotRead the five exit objectives, record a real drill, export every covered class under a Merkle-rooted manifest and verify the export.
exit.objectivesList who touched a resource, most recent first, then rebuild one event with its Merkle proof.
ledger.blameOne short email when we add recipes to the cookbook. No other mail, and you can unsubscribe from any message.
No key or account: Try it on the coordination.admit module page runs the real kernel in your browser. Use a workspace key for your own workspace.