elicit_result
Fetch the outcome of a decided request — the final step of the Approval Flow.
When to use
Section titled “When to use”After elicit_await or
elicit_status reports a decision. Calling it
earlier errors: while the request is still pending, after it has
expired undecided, and for a request the requester canceled via
elicit_cancel (no reviewer outcome exists).
Once the reviewer has decided, it succeeds for either outcome —
submitted or declined — both are fetchable, not just submissions.
| Parameter | Type | Required | Description |
|---|---|---|---|
elicitationId |
string | yes | The id returned when the request was created. |
{ "elicitationId": "…" }Behavior
Section titled “Behavior”Idempotent: every fetch is recorded as a consumed audit event, and
repeat calls return the same result — for as long as the record is retained
(90 days; see Data Retention).
A success always carries the outcome. If elicit_result returns without
error, decision, context, and formSubmission are all present — you never
need to inspect the shape before trusting it. In every state where no
reviewer outcome exists the call errors instead, and the error names the
state so you know why:
| State | Error text |
|---|---|
| Still undecided | not decided (status=pending) |
| TTL elapsed undecided | not decided (status=expired) |
Withdrawn via elicit_cancel |
not decided (status=canceled) |
To read a status without fetching an outcome, use
elicit_status — that’s the tool that returns
{ "status": … } for every state, including canceled.
Output
Section titled “Output”{ "status": "consumed", "decision": "submitted", "context": { "target": "prod" }, "formSubmission": { "approver": "Ada", "confidence": 95 }}decision— the reviewer’ssubmitted/declinedchoice.context— the read-only payload fromelicit_approval(orelicit_proposal), echoed back verbatim (nullif none was supplied). Never a value the agent re-supplies — the human approved what actually runs.formSubmission— what the review form submitted, keyed by field name, ornullon decline. Every review-page tool uses this one envelope; only the form’s fields differ:
| Tool | formSubmission on submit |
|---|---|
elicit_approval |
The requestedSchema fields, validated — null in JSON mode (no requestedSchema, so the form has no fields) |
elicit_selection |
{ "selectedIds": [...] } — the chosen option ids |
elicit_proposal |
Only the fields the reviewer included, validated — unincluded fields are absent |
A declined request is fetchable like a submitted one — decision: "declined"
with formSubmission: null — rather than erroring.
Related
Section titled “Related”elicit_await/elicit_status— reach a decided state firstelicit_history— recover a lostelicitationId