AgentPlacement over A2A with createPlacementCaller from the TypeScript SDK. It holds only invoke on the placement.
Before starting, have:
- An autonomous
AgentPlacement(aplace_…) with its service Principal inacted_as. See Installations and placements. - The caller’s
serviceorpersonPrincipal (prin_…).
Plain HTTP against the Checkfu API needs no private package.
The Checkfu CLI and TypeScript SDK are optional private-alpha artifacts; the HTTP requests work without them.
The documented path is usable as written for an admitted Workspace.
Confirm capability status before making availability part of your application’s contract.
1. Give the caller invoke and a credential
Grant the caller invoke on the placement. Do not grant observe: that would let them read whole tasks and history.
a2a credential and hand it over once:
2. Send a message
The caller creates a placement caller with that credential. It never uses an API key:messageId you can find again, such as your own record’s ID. It is scoped to this caller and this placement.
3. Read the result
send waits until the task settles or stops to wait, for example on TASK_STATE_INPUT_REQUIRED. Check task.status.state:
messageId with the same text. Checkfu answers with the original task and starts no new work. Do not pass taskId or a nonzero historyLength: those are task reads and need observe.
getTask and cancelTask follow the task-read rules, so an invoke-only caller gets PlacementCallRefused.
4. Cancel your own message
cancelOwn withdraws a message that has not run, or stops a Run that holds only that message:
What the caller can and cannot do
Every send, replay, and cancel checks the placement and the caller’s
invoke again. Revoke invoke or the credential to cut a caller off; their next call is refused.
Keep business limits, such as which customer’s records the Agent may touch, in the tools and Connections the service Principal holds. A sentence in the message is not a control.