request user input
native.request_user_inputFor creative discovery before kickoff, ask one useful question with waits_for_answer=no_default, an assumption that leaves the choice undecided, and final_reply. These three fields work together: leaving out waits_for_answer treats the question as optional and allows continued work. For accepted production work, ask only for material decisions or information/authority you cannot obtain, and use sensible reversible defaults for optional details. Recommend the best option and state its consequence. Ask the smallest set that unlocks useful work, then keep working: this returns at once with the question ids. Every question needs question and assumption. The assumption is the choice you go with until they answer, as the choice itself in a short phrase ("the experiment plan"): their card reads "Going with the experiment plan". Do the work that does not depend on the answer. Set waits_for_answer only when no reasonable choice exists and any guess would waste their work or credits (no_default), or the next step sends, publishes or deletes something that cannot be undone and no go-ahead covers it (irreversible, with that tool's id in held_tool). A waiting question still has an assumption: what you will do if they skip it ("leave the ending open"). Never wait for spending or video approval (the gates hold the paid step), a budget, or redundant permission to finish accepted work. During guided creative discovery, a choice the creator has not made is no_default: wait, with an assumption that leaves it undecided if skipped. Silence does not choose a proposed story or launch production. During already-authorized production, use sensible defaults within the accepted brief. Offer numbered options when the choices are few. Their answer or skip reaches you as an answer message at your next step. When this question is the response and no independent work remains, include final_reply and put any update_memory or settle_questions calls beside it; the question is saved and the turn waits without a second model call.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"work_id": "<work_id>",
"arguments": "<arguments>",
"expected_catalog_version": "<expected_catalog_version>",
"read_skills": "<read_skills>",
"request_key": "<request_key>"
},
"name": "native.request_user_input"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| work_id | Yes | ||
| arguments | Yes | ||
| read_skills | Yes | Exact required native skills and their dependencies, copied from the accepted session bootstrap's skills array. Include only entries in that array. General mcp.* guides and native.{studio}.instructions are guidance, not native skill proofs. | |
| request_key | Yes | ||
| publication_proposal_id | No | For native Social scheduling, the exact server-approved publication proposal. This identifier cannot confer approval by itself. | |
| expected_catalog_version | Yes | For a new session, read a studios/{studio}/native/{pack} child toolset and copy invocation.catalog_version from a native tool descriptor. Do not use the top-level library version. For calls in an existing session, use that session proposal's catalog_version. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||