Needs
What an agent asked you to connect or provide before it can go on
On this page(8 sections)
An agent raises a need when a task stops on something only you can give: a capability, a credential, a change to its environment. These routes raise one and list an agent's own, list what is open for you, answer one or hand over its secret, withdraw one, and read or revoke the standing grants an answer left behind.
8 calls. Pick one to open it, or use the list on the right.
POST/needs/askAsk a person for something the task needs
Raises a need in the conversation the calling shell belongs to and holds the call up to `wait` seconds for an answer. Answers `met` when it is usable now (or already was), `open` when it is still waiting, and `refused` when nothing was raised or a person declined. An open need's answer reaches the conversation by itself.
What you send
| Field | Type | Where |
|---|---|---|
askrequired | object | body |
when kind is "capability" | shape | body |
entryrequiredThe catalog entry or a connected… | string | body |
targetThe site, host or address it… | string | body |
setSettings to fill in, or to… | object | body |
reconnectIt is connected, but its credential… | boolean | body |
when kind is "secret" | shape | body |
namerequiredThe name it is stored under,… | string | body |
whereHow it will be used: the… | string | body |
linkWhere a person gets one, shown… | string | body |
hintWhat a valid one looks like,… | string | body |
replaceOne is stored under this name… | boolean | body |
when kind is "grant" | shape | body |
subjectrequiredA connected capability the persona leaves… | "capability" | "folder" | "shelf" | "site" | body |
whatrequired | string | body |
when kind is "release" | shape | body |
subjectrequired | string | body |
when kind is "environment" | shape | body |
toolrequired | string | body |
stepsrequired | string | body |
when kind is "automation" | shape | body |
automationrequired | object | body |
idrequiredThe automation's id | string | body |
triggerrequiredWhat sets it off: a schedule,… | object | body |
guardA command run before the wake… | string | body |
sourceA ready-made check instead of a… | object | body |
fireOnFire on every passing check, or… | "pass" | "change" | body |
untilSwitch it off the first time… | "first-fire" | body |
expiresAtWhen it gives up, in milliseconds | integer | body |
targetWhat a passing check sets off:… | object | body |
noteOne line on what it watches… | string | body |
promptrequiredWhat the woken agent is told | string | body |
webchatSettings for the public chat widget,… | object | body |
issuesSettings for the bug reporter, for… | object | body |
allowedToolsNarrow the woken turn to these… | string[] | body |
modelsWhich models this automation may run… | object[] | body |
accountWhich account pays for it | string | body |
actsAsWhich persona it speaks as | string | body |
sendersWho may talk to it, and… | object | body |
requireApprovalHold every fire for a person… | boolean | body |
holdForSecondsHold each fire this long before… | number | body |
choreThis automation is a maintenance job,… | boolean | body |
enabledrequiredWhether it fires at all | boolean | body |
why | string | body |
waitSeconds to hold the call for… | integer | body |
What comes back
| Field | Type |
|---|---|
state | "met" | "open" | "refused" |
messageThe sentence the CLI prints, written… | string |
need | object |
idThe need's handle, the one `needs… | string |
conversationIdThe conversation that asked, and the… | string |
subjectWhat exactly is asked for | object |
when kind is "capability" | shape |
entryThe catalog entry, as the catalog… | string |
nameWhat the catalog calls it, never… | string |
modeConnect something new, give a connected… | "connect" | "reconnect" | "change" |
instanceThe connection a reconnect or a… | string |
targetThe site, host or address the… | string |
prefillSettings the agent could fill in… | object |
changesFor a change: each setting and… | object |
reasonThe daemon's own sentence on why… | string |
reportedThe agent reported the credential refused… | boolean |
when kind is "secret" | shape |
nameThe name it is stored under,… | string |
whereHow it will be used: the… | string |
linkWhere a person gets one, shown… | string |
hintWhat a valid one looks like,… | string |
replaceOne is stored under this name… | boolean |
when kind is "grant" | shape |
subjectA connected capability the persona leaves… | "capability" | "folder" | "shelf" | "site" |
whatThe capability's id, the folder, or… | string |
labelWhat it is, in the daemon's… | string |
personaThe persona that withholds it, when… | string |
scopeHow far the yes went, once… | "conversation" | "persona" |
when kind is "release" | shape |
subjectThe gated account or connector | string |
approversWho may release it | string[] |
when kind is "environment" | shape |
toolWhat the steps install, the name… | string |
stepsThe Dockerfile steps proposed for the… | string |
approvedHashThe overlay these steps were approved… | string |
when kind is "automation" | shape |
automationThe automation as it would be… | object |
replacesAn automation of this id already… | boolean |
firstCheck | object |
titleThe one line it leads with,… | string |
whyThe agent's case for it, and… | string |
statusWhere it stands: open (waiting on… | "open" | "working" | "met" | "declined" … (5) |
createdAtWhen it was raised, in milliseconds | number |
updatedAtWhen it last moved, in milliseconds | number |
answeredByWho answered it, as the sandbox… | string |
outcomeHow it ended, in the daemon's… | string |
toldHow the agent heard the outcome,… | "call" | "turn" | "queued" |
unattendedRaised by a turn nobody was… | boolean |
codeA refusal's type, for a script… | string |
curl -X POST "$SANDBOX/needs/ask" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"ask":{"kind":"capability","entry":"…","target":"…","set":{"src/app.ts":"…","README.md":"…"},"reconnect":true},"why":"…","wait":0}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.needs.ask({
"ask": {
"kind": "capability",
"entry": "…",
"target": "…",
"set": {
"src/app.ts": "…",
"README.md": "…"
},
"reconnect": true
},
"why": "…",
"wait": 0
});GET/needs/mineThis conversation's needs
Every need the calling shell's conversation raised, newest first, open or answered.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
needsNewest first | object[] |
idThe need's handle, the one `needs… | string |
conversationIdThe conversation that asked, and the… | string |
subjectWhat exactly is asked for | object |
when kind is "capability" | shape |
entryThe catalog entry, as the catalog… | string |
nameWhat the catalog calls it, never… | string |
modeConnect something new, give a connected… | "connect" | "reconnect" | "change" |
instanceThe connection a reconnect or a… | string |
targetThe site, host or address the… | string |
prefillSettings the agent could fill in… | object |
changesFor a change: each setting and… | object |
reasonThe daemon's own sentence on why… | string |
reportedThe agent reported the credential refused… | boolean |
when kind is "secret" | shape |
nameThe name it is stored under,… | string |
whereHow it will be used: the… | string |
linkWhere a person gets one, shown… | string |
hintWhat a valid one looks like,… | string |
replaceOne is stored under this name… | boolean |
when kind is "grant" | shape |
subjectA connected capability the persona leaves… | "capability" | "folder" | "shelf" | "site" |
whatThe capability's id, the folder, or… | string |
labelWhat it is, in the daemon's… | string |
personaThe persona that withholds it, when… | string |
scopeHow far the yes went, once… | "conversation" | "persona" |
when kind is "release" | shape |
subjectThe gated account or connector | string |
approversWho may release it | string[] |
when kind is "environment" | shape |
toolWhat the steps install, the name… | string |
stepsThe Dockerfile steps proposed for the… | string |
approvedHashThe overlay these steps were approved… | string |
when kind is "automation" | shape |
automationThe automation as it would be… | object |
replacesAn automation of this id already… | boolean |
firstCheck | object |
titleThe one line it leads with,… | string |
whyThe agent's case for it, and… | string |
statusWhere it stands: open (waiting on… | "open" | "working" | "met" | "declined" … (5) |
createdAtWhen it was raised, in milliseconds | number |
updatedAtWhen it last moved, in milliseconds | number |
answeredByWho answered it, as the sandbox… | string |
outcomeHow it ended, in the daemon's… | string |
toldHow the agent heard the outcome,… | "call" | "turn" | "queued" |
unattendedRaised by a turn nobody was… | boolean |
curl "$SANDBOX/needs/mine" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.needs.mine();POST/needs/{id}/withdrawWithdraw a need
Closes one of this conversation's open needs because the task no longer needs it. Its card says so.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich need | string | address |
What comes back
| Field | Type |
|---|---|
idThe need's handle, the one `needs… | string |
conversationIdThe conversation that asked, and the… | string |
subjectWhat exactly is asked for | object |
when kind is "capability" | shape |
entryThe catalog entry, as the catalog… | string |
nameWhat the catalog calls it, never… | string |
modeConnect something new, give a connected… | "connect" | "reconnect" | "change" |
instanceThe connection a reconnect or a… | string |
targetThe site, host or address the… | string |
prefillSettings the agent could fill in… | object |
changesFor a change: each setting and… | object |
reasonThe daemon's own sentence on why… | string |
reportedThe agent reported the credential refused… | boolean |
when kind is "secret" | shape |
nameThe name it is stored under,… | string |
whereHow it will be used: the… | string |
linkWhere a person gets one, shown… | string |
hintWhat a valid one looks like,… | string |
replaceOne is stored under this name… | boolean |
when kind is "grant" | shape |
subjectA connected capability the persona leaves… | "capability" | "folder" | "shelf" | "site" |
whatThe capability's id, the folder, or… | string |
labelWhat it is, in the daemon's… | string |
personaThe persona that withholds it, when… | string |
scopeHow far the yes went, once… | "conversation" | "persona" |
when kind is "release" | shape |
subjectThe gated account or connector | string |
approversWho may release it | string[] |
when kind is "environment" | shape |
toolWhat the steps install, the name… | string |
stepsThe Dockerfile steps proposed for the… | string |
approvedHashThe overlay these steps were approved… | string |
when kind is "automation" | shape |
automationThe automation as it would be… | object |
idThe automation's id | string |
triggerWhat sets it off: a schedule,… | object |
guardA command run before the wake… | string |
sourceA ready-made check instead of a… | object |
fireOnFire on every passing check, or… | "pass" | "change" |
untilSwitch it off the first time… | "first-fire" |
expiresAtWhen it gives up, in milliseconds | integer |
targetWhat a passing check sets off:… | object |
noteOne line on what it watches… | string |
promptWhat the woken agent is told | string |
webchatSettings for the public chat widget,… | object |
issuesSettings for the bug reporter, for… | object |
allowedToolsNarrow the woken turn to these… | string[] |
modelsWhich models this automation may run… | object[] |
accountWhich account pays for it | string |
actsAsWhich persona it speaks as | string |
sendersWho may talk to it, and… | object |
requireApprovalHold every fire for a person… | boolean |
holdForSecondsHold each fire this long before… | number |
choreThis automation is a maintenance job,… | boolean |
enabledWhether it fires at all | boolean |
replacesAn automation of this id already… | boolean |
firstCheck | object |
passWhether the check passes today, which… | boolean |
sawWhat it saw, or what it… | string |
atWhen it ran, in milliseconds | number |
titleThe one line it leads with,… | string |
whyThe agent's case for it, and… | string |
statusWhere it stands: open (waiting on… | "open" | "working" | "met" | "declined" … (5) |
createdAtWhen it was raised, in milliseconds | number |
updatedAtWhen it last moved, in milliseconds | number |
answeredByWho answered it, as the sandbox… | string |
outcomeHow it ended, in the daemon's… | string |
toldHow the agent heard the outcome,… | "call" | "turn" | "queued" |
unattendedRaised by a turn nobody was… | boolean |
curl -X POST "$SANDBOX/needs/a1b2c3d4/withdraw" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.needs.withdraw({
"id": "a1b2c3d4"
});GET/needsWhat agents are waiting on people for
Needs across the sandbox, or one conversation's, newest first. Never a secret's value.
What you send
| Field | Type | Where |
|---|---|---|
conversationIdOne conversation's needs | string | query |
openOnly the ones still waiting | boolean | query |
What comes back
| Field | Type |
|---|---|
needsNewest first | object[] |
idThe need's handle, the one `needs… | string |
conversationIdThe conversation that asked, and the… | string |
subjectWhat exactly is asked for | object |
when kind is "capability" | shape |
entryThe catalog entry, as the catalog… | string |
nameWhat the catalog calls it, never… | string |
modeConnect something new, give a connected… | "connect" | "reconnect" | "change" |
instanceThe connection a reconnect or a… | string |
targetThe site, host or address the… | string |
prefillSettings the agent could fill in… | object |
changesFor a change: each setting and… | object |
reasonThe daemon's own sentence on why… | string |
reportedThe agent reported the credential refused… | boolean |
when kind is "secret" | shape |
nameThe name it is stored under,… | string |
whereHow it will be used: the… | string |
linkWhere a person gets one, shown… | string |
hintWhat a valid one looks like,… | string |
replaceOne is stored under this name… | boolean |
when kind is "grant" | shape |
subjectA connected capability the persona leaves… | "capability" | "folder" | "shelf" | "site" |
whatThe capability's id, the folder, or… | string |
labelWhat it is, in the daemon's… | string |
personaThe persona that withholds it, when… | string |
scopeHow far the yes went, once… | "conversation" | "persona" |
when kind is "release" | shape |
subjectThe gated account or connector | string |
approversWho may release it | string[] |
when kind is "environment" | shape |
toolWhat the steps install, the name… | string |
stepsThe Dockerfile steps proposed for the… | string |
approvedHashThe overlay these steps were approved… | string |
when kind is "automation" | shape |
automationThe automation as it would be… | object |
replacesAn automation of this id already… | boolean |
firstCheck | object |
titleThe one line it leads with,… | string |
whyThe agent's case for it, and… | string |
statusWhere it stands: open (waiting on… | "open" | "working" | "met" | "declined" … (5) |
createdAtWhen it was raised, in milliseconds | number |
updatedAtWhen it last moved, in milliseconds | number |
answeredByWho answered it, as the sandbox… | string |
outcomeHow it ended, in the daemon's… | string |
toldHow the agent heard the outcome,… | "call" | "turn" | "queued" |
unattendedRaised by a turn nobody was… | boolean |
curl "$SANDBOX/needs" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.needs.list();POST/needs/{id}/answerAnswer a need
Declines it, or says yes the way its card offered: accept a connection being set up, apply a change, grant for this conversation or the persona, release a gated credential, approve an environment proposal. A release is refused from anyone the gate does not name.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich need | string | address |
answerrequired | object | body |
when kind is "decline" | shape | body |
noteWhy not, passed to the agent | string | body |
when kind is "accept" | shape | body |
when kind is "apply" | shape | body |
when kind is "grant" | shape | body |
scoperequiredHow far a yes goes: this… | "conversation" | "persona" | body |
when kind is "release" | shape | body |
when kind is "approve" | shape | body |
What comes back
| Field | Type |
|---|---|
idThe need's handle, the one `needs… | string |
conversationIdThe conversation that asked, and the… | string |
subjectWhat exactly is asked for | object |
when kind is "capability" | shape |
entryThe catalog entry, as the catalog… | string |
nameWhat the catalog calls it, never… | string |
modeConnect something new, give a connected… | "connect" | "reconnect" | "change" |
instanceThe connection a reconnect or a… | string |
targetThe site, host or address the… | string |
prefillSettings the agent could fill in… | object |
changesFor a change: each setting and… | object |
reasonThe daemon's own sentence on why… | string |
reportedThe agent reported the credential refused… | boolean |
when kind is "secret" | shape |
nameThe name it is stored under,… | string |
whereHow it will be used: the… | string |
linkWhere a person gets one, shown… | string |
hintWhat a valid one looks like,… | string |
replaceOne is stored under this name… | boolean |
when kind is "grant" | shape |
subjectA connected capability the persona leaves… | "capability" | "folder" | "shelf" | "site" |
whatThe capability's id, the folder, or… | string |
labelWhat it is, in the daemon's… | string |
personaThe persona that withholds it, when… | string |
scopeHow far the yes went, once… | "conversation" | "persona" |
when kind is "release" | shape |
subjectThe gated account or connector | string |
approversWho may release it | string[] |
when kind is "environment" | shape |
toolWhat the steps install, the name… | string |
stepsThe Dockerfile steps proposed for the… | string |
approvedHashThe overlay these steps were approved… | string |
when kind is "automation" | shape |
automationThe automation as it would be… | object |
idThe automation's id | string |
triggerWhat sets it off: a schedule,… | object |
guardA command run before the wake… | string |
sourceA ready-made check instead of a… | object |
fireOnFire on every passing check, or… | "pass" | "change" |
untilSwitch it off the first time… | "first-fire" |
expiresAtWhen it gives up, in milliseconds | integer |
targetWhat a passing check sets off:… | object |
noteOne line on what it watches… | string |
promptWhat the woken agent is told | string |
webchatSettings for the public chat widget,… | object |
issuesSettings for the bug reporter, for… | object |
allowedToolsNarrow the woken turn to these… | string[] |
modelsWhich models this automation may run… | object[] |
accountWhich account pays for it | string |
actsAsWhich persona it speaks as | string |
sendersWho may talk to it, and… | object |
requireApprovalHold every fire for a person… | boolean |
holdForSecondsHold each fire this long before… | number |
choreThis automation is a maintenance job,… | boolean |
enabledWhether it fires at all | boolean |
replacesAn automation of this id already… | boolean |
firstCheck | object |
passWhether the check passes today, which… | boolean |
sawWhat it saw, or what it… | string |
atWhen it ran, in milliseconds | number |
titleThe one line it leads with,… | string |
whyThe agent's case for it, and… | string |
statusWhere it stands: open (waiting on… | "open" | "working" | "met" | "declined" … (5) |
createdAtWhen it was raised, in milliseconds | number |
updatedAtWhen it last moved, in milliseconds | number |
answeredByWho answered it, as the sandbox… | string |
outcomeHow it ended, in the daemon's… | string |
toldHow the agent heard the outcome,… | "call" | "turn" | "queued" |
unattendedRaised by a turn nobody was… | boolean |
curl -X POST "$SANDBOX/needs/a1b2c3d4/answer" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"answer":{"kind":"decline","note":"…"}}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.needs.answer({
"id": "a1b2c3d4",
"answer": {
"kind": "decline",
"note": "…"
}
});POST/needs/{id}/secretGive a secret a need asked for
Stores the value under the name the need asked for and meets it. The value goes to the sandbox's secret store and nowhere else: not the answer, not the transcript, not a log.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich need | string | address |
valuerequiredThe secret's value | string | body |
What comes back
| Field | Type |
|---|---|
idThe need's handle, the one `needs… | string |
conversationIdThe conversation that asked, and the… | string |
subjectWhat exactly is asked for | object |
when kind is "capability" | shape |
entryThe catalog entry, as the catalog… | string |
nameWhat the catalog calls it, never… | string |
modeConnect something new, give a connected… | "connect" | "reconnect" | "change" |
instanceThe connection a reconnect or a… | string |
targetThe site, host or address the… | string |
prefillSettings the agent could fill in… | object |
changesFor a change: each setting and… | object |
reasonThe daemon's own sentence on why… | string |
reportedThe agent reported the credential refused… | boolean |
when kind is "secret" | shape |
nameThe name it is stored under,… | string |
whereHow it will be used: the… | string |
linkWhere a person gets one, shown… | string |
hintWhat a valid one looks like,… | string |
replaceOne is stored under this name… | boolean |
when kind is "grant" | shape |
subjectA connected capability the persona leaves… | "capability" | "folder" | "shelf" | "site" |
whatThe capability's id, the folder, or… | string |
labelWhat it is, in the daemon's… | string |
personaThe persona that withholds it, when… | string |
scopeHow far the yes went, once… | "conversation" | "persona" |
when kind is "release" | shape |
subjectThe gated account or connector | string |
approversWho may release it | string[] |
when kind is "environment" | shape |
toolWhat the steps install, the name… | string |
stepsThe Dockerfile steps proposed for the… | string |
approvedHashThe overlay these steps were approved… | string |
when kind is "automation" | shape |
automationThe automation as it would be… | object |
idThe automation's id | string |
triggerWhat sets it off: a schedule,… | object |
guardA command run before the wake… | string |
sourceA ready-made check instead of a… | object |
fireOnFire on every passing check, or… | "pass" | "change" |
untilSwitch it off the first time… | "first-fire" |
expiresAtWhen it gives up, in milliseconds | integer |
targetWhat a passing check sets off:… | object |
noteOne line on what it watches… | string |
promptWhat the woken agent is told | string |
webchatSettings for the public chat widget,… | object |
issuesSettings for the bug reporter, for… | object |
allowedToolsNarrow the woken turn to these… | string[] |
modelsWhich models this automation may run… | object[] |
accountWhich account pays for it | string |
actsAsWhich persona it speaks as | string |
sendersWho may talk to it, and… | object |
requireApprovalHold every fire for a person… | boolean |
holdForSecondsHold each fire this long before… | number |
choreThis automation is a maintenance job,… | boolean |
enabledWhether it fires at all | boolean |
replacesAn automation of this id already… | boolean |
firstCheck | object |
passWhether the check passes today, which… | boolean |
sawWhat it saw, or what it… | string |
atWhen it ran, in milliseconds | number |
titleThe one line it leads with,… | string |
whyThe agent's case for it, and… | string |
statusWhere it stands: open (waiting on… | "open" | "working" | "met" | "declined" … (5) |
createdAtWhen it was raised, in milliseconds | number |
updatedAtWhen it last moved, in milliseconds | number |
answeredByWho answered it, as the sandbox… | string |
outcomeHow it ended, in the daemon's… | string |
toldHow the agent heard the outcome,… | "call" | "turn" | "queued" |
unattendedRaised by a turn nobody was… | boolean |
curl -X POST "$SANDBOX/needs/a1b2c3d4/secret" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"value":"…"}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.needs.provideSecret({
"id": "a1b2c3d4",
"value": "…"
});GET/needs/grantsThe yeses still standing
What people allowed conversations beyond their persona or area, and the gated credentials released to them, by conversation; and, apart from them, the yeses that name no conversation: command policy lines allowed with Always, approved hook sets, approved workspace extensions. Names only, never a value.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
conversations | object[] |
conversationId | string |
capabilitiesConnected capabilities allowed although its persona… | string[] |
foldersWorkspace folders its file tools may… | string[] |
shelvesShelves of tools opened for it | "files" | "shell" | "code" | "web" … (7)[] |
installsWhether its own dependency installs run… | boolean |
secretsSecrets it may send past their… | string[] |
everythingWhether every request an allow-once could… | boolean |
rulesCredential gateway rules that no longer… | object[] |
capabilityThe capability whose rule asked, by… | string |
ruleThe rule's own identity (its content),… | string |
saidThe request in a person's words,… | string |
byWho last allowed one of those | string |
updatedAtWhen one of those last changed,… | number |
releasesGated credentials released to it, until… | object[] |
subject | string |
approvedBy | string |
at | number |
ownerWideYeses that name no conversation: command… | object[] |
when kind is "command-policy" | shape |
lineThe policy line the judge reads,… | string |
atWhen it was allowed, in milliseconds | number |
byWho allowed it, off the verified… | string |
when kind is "hook-set" | shape |
digestThe set's fingerprint, what taking it… | string |
hooksEach hook in the set in… | string[] |
atWhen it was approved, in milliseconds | number |
when kind is "extension" | shape |
idThe extension, by its publisher.name id | string |
powersWhat it was approved to do,… | string[] |
atWhen it was approved, in milliseconds | number |
unreadableKinds of owner-wide yes whose record… | "command-policy" | "hook-set" | "extension"[] |
curl "$SANDBOX/needs/grants" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.needs.grants();POST/needs/grants/revokeTake a yes back
Takes back one grant or one release of a conversation, or one owner-wide yes (a policy line, a hook set, an extension). A conversation's next turn runs without it; a turn already running keeps what it mounted.
What you send
| Field | Type | Where |
|---|---|---|
conversationIdrequired | string | body |
kindrequiredWhich kind of yes: a grant… | "capability" | "folder" | "shelf" | "release" … (8) | body |
whatrequiredThe capability id, folder, shelf, released… | string | body |
capabilityFor a rule, the capability whose… | string | body |
What comes back
| Field | Type |
|---|---|
okAlways true | true |
curl -X POST "$SANDBOX/needs/grants/revoke" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"conversationId":"nightly-changelog","kind":"capability","what":"2026-08-21T09:14:02.000Z","capability":"…"}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.needs.revokeGrant({
"conversationId": "nightly-changelog",
"kind": "capability",
"what": "2026-08-21T09:14:02.000Z",
"capability": "…"
});