Skip to main content
A result-only service lets another system, or a person, send work to your Agent and get back the answer to their own message. The Agent runs as a fixed service Principal you chose. The caller never sees its prompts, tool output, sources, approvals, or anyone else’s work. The caller talks to an 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 in acted_as. See Installations and placements.
  • The caller’s service or person Principal (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.
Then issue the caller an 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:
Choose a 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:
To read the result again later, or after a lost response, send the same 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:
It never stops other callers’ work. See Cancel your own message for every answer.

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.