submit_answers
Save the founder's answers to the intake questions. Upsert semantics with an explicit commit flag.
When: status == "intake", after research generates the questions.
Read them from get_status → intake.questions.
Before you call:
READ the questions to the founder verbatim. Ask only the question
text— do not volunteer or invent any internal rationale for why we ask.Collect answers conversationally; don't make them answer all five at once if they'd rather talk through them.
If
finalize: true: show every answer back to the founder for confirmation first. This is one-way — after finalize they can't edit.If
finalize: false(autosave): no confirmation needed.
Answers shape: array of {questionId, answer} objects. Only include
question ids that were in the get_status response — other ids are
rejected.
Upsert rules:
Answers with matching
questionIdoverwrite.Prior answers for ids NOT in this batch are KEPT.
So you can save Q1 + Q2 in one call, Q3-Q5 in another, then commit with
finalize: true+ emptyanswers: []at the end.
On error:
unknown questionIds— check spelling / the id list fromget_status.missing required— onfinalize: true, everypriority=requiredmust have an answer. Error lists which are missing.alreadyAnswered— you called finalize twice. Status issubmitted; no more edits.Wrong status — not in
intakeyet (still researching) or already past it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| answers | Yes | Array of `{questionId, answer}` objects. Can be empty when finalize is true. | |
| finalize | No | If true, commits the answers and flips status to submitted. One-way — confirm with founder first. | |
| applicationId | Yes | Application id from `create_application`. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |