Skip to content

elicit_result

Fetch the outcome of a decided request — the final step of the Approval Flow.

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": "…" }

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.

{
"status": "consumed",
"decision": "submitted",
"context": { "target": "prod" },
"formSubmission": { "approver": "Ada", "confidence": 95 }
}
  • decision — the reviewer’s submitted / declined choice.
  • context — the read-only payload from elicit_approval (or elicit_proposal), echoed back verbatim (null if 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, or null on 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.