Arbitrate a conflict
Read the queue of filed cases, ask the arbiter to hear one, and read its ruling and the path to appeal it.
arbitration.arbiter
Read the queue of filed cases, ask the arbiter to hear one, and read its ruling and the path to appeal it.
arbitration.arbiterPut 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.
Detectors file a case when agents collide, and a case climbs a ladder. At rung 3 a model proposes a remedy from a closed menu, and a case under the tenant's confidence bar goes to a person.
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.
The worklist shows the open cases with their SLA clocks and on-call routes, so you can pick the one that needs a hearing.
The case holds the ruling: remedy, menu, confidence, threshold, decider.
{
"case": {
"id": "case_9f2",
"rung": 3,
"remedy": "peer_talk",
"confidence": ,
: ,
: {
: ,
: [, , , , ],
: ,
: ,
: ,
: [],
: [, , ],
: ,
:
}
},
: [],
: ,
: ,
: { : , : , : , : }
}arbitration.arbiterarbitration-arbiter
curl -sS https://api.intramedial.com/api/v1/acp/arbitration/queue \
-H "Authorization: Bearer $INTRAMEDIAL_KEY"const res = await fetch("https://api.intramedial.com/api/v1/acp/arbitration/queue", {
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/arbitration/queue",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
timeout=30,
)
print(res.status_code, res.json())Send the case id and its conflictId, which must match the case. Add forceInline over REST to hear it in the request.
curl -sS -X POST https://api.intramedial.com/api/v1/acp/arbitration/arbiter \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "case_9f2",
"conflictId": "lease-overlap:repo:payments/main:did:web:acme.example:agent:cost,did:web:acme.example:agent:release"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/arbitration/arbiter", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
id: "case_9f2",
conflictId: "lease-overlap:repo:payments/main:did:web:acme.example:agent:cost,did:web:acme.example:agent:release",
}),
});
const body = await res.json();
console.log(res.status, body);import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/arbitration/arbiter",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"id": "case_9f2",
"conflictId": "lease-overlap:repo:payments/main:did:web:acme.example:agent:cost,did:web:acme.example:agent:release",
},
timeout=30,
)
body = res.json()
print(res.status_code, body)remedy and confidence come from the model. Under the bar, decidedBy is fallback.
const { case: c, appealPath } = body;
console.log(c.rung, c.remedy, c.confidence, c.ruling.decidedBy);
if (c.rung === 4) console.log("waits for a person");
else console.log("appealable:", appealPath.appealable, "until", appealPath.deadline);c = body["case"]
print(c["rung"], c["remedy"], c["confidence"], c["ruling"]["decidedBy"])
if c["rung"] == 4:
print("waits for a person")
else:
print("appealable:", body["appealPath"]["appealable"], "until", body["appealPath"]["deadline"])A party with standing can appeal one rung up within seven days. escalate_human files a docket item.
Copied from: /docs/arbitration-arbiter
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.
Open a negotiation on a case, let the two parties propose and counter within eight rounds, and accept to close it with a commitment record.
negotiate.proposeFile a docket item with its parties and standing, read its state, list the docket and see how an item is heard, closed or appealed.
courts.fileList the detectors, run lease-overlap, and read the conflicts it cites with their evidence, then read the cases it filed for review.
detection.runOne 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.