create_new_form_using_document
ChatGPTCreate a new form from an uploaded file, document, image, screenshot, or PDF. ALWAYS use this tool when the user has uploaded, attached, or pasted any file or content — even if the file contains just a title or simple text. Use "html" format when the content has layout, formatting, structure, or comes from HTML, SCREENSHOT, IMAGE, or PDF. Use "markdown" format when the content is plain text without formatting. This tool returns the complete form with all sections and fields. IMPORTANT: This tool already renders the preview widget for the newly created live form, so do NOT call preview in the same turn after a successful create_new_form_using_document — that would render the preview UI twice. Call create_new_form_using_document at most once per turn. IMPORTANT: Do NOT include sensitive personal data in the document content. This includes health information, biometric data, social security numbers, payment card industry information (credit/debit card numbers, CVV, expiration dates), bank account details, login credentials, passwords, or authentication secrets. Remove or redact any such sensitive data before passing the document. Output MUST match the "format" parameter. Never mix formats. FIELD DETECTION — decide what becomes a field by the source, not by topic: - Create a form field ONLY where the source document has an actual place to write, mark, check, or sign: a blank line (____), an empty box, a checkbox, or a signature line. The number of fields must match the number of real inputs in the source — do not add one. - Text that has NO input in the source (paragraphs, recitals, numbered clauses, instructions) is descriptive content. Keep it as headings/<p> text in the form, NOT as a field. Do not attach an input box to a clause that the source only asks the reader to read. - Reproduce all wording VERBATIM. Never paraphrase, summarize, shorten, or rewrite the source text — especially legal, consent, agreement, or policy text. - Preserve the source's own section order and grouping. Do not split one block into many sections or invent sections. format="html" example output: <!DOCTYPE html> <html><head><base target="_top"></head><body> <h1>Title</h1> <h3>Section</h3> <div><p>Choices</p> <p> <input type="radio"/> <input type="text"/></p> <p> <input type="radio"/> <input type="text"/></p> </div> <div><p>Field </p><p><input type="text"></p></div> <div><p>Notes</p><textarea></textarea></div> <div><p>Yes/No statement — full statement text goes in the label </p><p><input type="checkbox"/></p></div> </body></html> DOM rules for checkbox fields (apply to any document, in any combination): - A single yes/no checkbox is ALWAYS one <div> with the statement text inside <p> as the label and a single <input type="checkbox"/> inside its own <p>. The statement text never goes next to the input. - Multiple independent yes/no statements = repeat the same <div>...</div> shape, one per statement. Place each <div> in the section that matches its position in the source document. - A multi-select question (one prompt, several options where more than one can be picked) uses <input type="radio"/> shape per choice — DO NOT collapse the options into the label. - Never wrap <input type="checkbox"> inside <label>...</label> (e.g., <label><input type="checkbox">text</label>). That shape is parsed as a multi-choice question and emits a stray "Other" option. format="markdown" example output: Title Section Choices ( ) ___________ ( ) ___________ Field (text) : ___________ Notes (textarea) : ___________ Yes/No statement (checkbox) * after label = required field.
create_new_form_using_document
ChatGPTCreate a new form from an uploaded file, document, image, screenshot, or PDF. ALWAYS use this tool when the user has uploaded, attached, or pasted any file or content — even if the file contains just a title or simple text. Use "html" format when the content has layout, formatting, structure, or comes from HTML, SCREENSHOT, IMAGE, or PDF. Use "markdown" format when the content is plain text without formatting. This tool returns the complete form with all sections and fields. IMPORTANT: This tool already renders the preview widget for the newly created live form, so do NOT call preview in the same turn after a successful create_new_form_using_document — that would render the preview UI twice. Call create_new_form_using_document at most once per turn. IMPORTANT: Do NOT include sensitive personal data in the document content. This includes health information, biometric data, social security numbers, payment card industry information (credit/debit card numbers, CVV, expiration dates), bank account details, login credentials, passwords, or authentication secrets. Remove or redact any such sensitive data before passing the document. Output MUST match the "format" parameter. Never mix formats. FIELD DETECTION — decide what becomes a field by the source, not by topic: - Create a form field ONLY where the source document has an actual place to write, mark, check, or sign: a blank line (____), an empty box, a checkbox, or a signature line. The number of fields must match the number of real inputs in the source — do not add one. - Text that has NO input in the source (paragraphs, recitals, numbered clauses, instructions) is descriptive content. Keep it as headings/<p> text in the form, NOT as a field. Do not attach an input box to a clause that the source only asks the reader to read. - Reproduce all wording VERBATIM. Never paraphrase, summarize, shorten, or rewrite the source text — especially legal, consent, agreement, or policy text. - Preserve the source's own section order and grouping. Do not split one block into many sections or invent sections. format="html" example output: <!DOCTYPE html> <html><head><base target="_top"></head><body> <h1>Title</h1> <h3>Section</h3> <div><p>Choices</p> <p> <input type="radio"/> <input type="text"/></p> <p> <input type="radio"/> <input type="text"/></p> </div> <div><p>Field </p><p><input type="text"></p></div> <div><p>Notes</p><textarea></textarea></div> <div><p>Yes/No statement — full statement text goes in the label </p><p><input type="checkbox"/></p></div> </body></html> DOM rules for checkbox fields (apply to any document, in any combination): - A single yes/no checkbox is ALWAYS one <div> with the statement text inside <p> as the label and a single <input type="checkbox"/> inside its own <p>. The statement text never goes next to the input. - Multiple independent yes/no statements = repeat the same <div>...</div> shape, one per statement. Place each <div> in the section that matches its position in the source document. - A multi-select question (one prompt, several options where more than one can be picked) uses <input type="radio"/> shape per choice — DO NOT collapse the options into the label. - Never wrap <input type="checkbox"> inside <label>...</label> (e.g., <label><input type="checkbox">text</label>). That shape is parsed as a multi-choice question and emits a stray "Other" option. format="markdown" example output: Title Section Choices ( ) ___________ ( ) ___________ Field (text) : ___________ Notes (textarea) : ___________ Yes/No statement (checkbox) * after label = required field.
create_new_form_using_form_name
ChatGPTCreate a DRAFT form OUTLINE from a short title or name only (NO file, document, image, or uploaded content). IMPORTANT: This generates a draft outline for review — the form is NOT live or accessible to respondents yet. After the user reviews and confirms the outline, call publish_form (or have the user click Publish in the UI) to convert the outline into a real, live form. Use this ONLY when the user describes what form they want in words (e.g., "create a feedback form", "make a registration form"). Do NOT use this tool if the user uploaded, attached, or pasted a file, document, screenshot, image, or PDF — use create_new_form_using_document instead. To edit an already-published live form, use update_form. Returns a widget UI showing the draft outline with sections and fields that can be reviewed and confirmed.
create_new_form_using_form_name
ChatGPTCreate a DRAFT form OUTLINE from a short title or name only (NO file, document, image, or uploaded content). IMPORTANT: This generates a draft outline for review — the form is NOT live or accessible to respondents yet. After the user reviews and confirms the outline, call publish_form (or have the user click Publish in the UI) to convert the outline into a real, live form. Use this ONLY when the user describes what form they want in words (e.g., "create a feedback form", "make a registration form"). Do NOT use this tool if the user uploaded, attached, or pasted a file, document, screenshot, image, or PDF — use create_new_form_using_document instead. To edit an already-published live form, use update_form. Returns a widget UI showing the draft outline with sections and fields that can be reviewed and confirmed.
get_form
ChatGPTFetch the full structure of a LIVE, already-published form by publishId — including title, sections, fields, field types, choices, and required flags. Use this to understand what a form contains BEFORE editing it with update_form, or to answer questions about the form's shape. If you do not know the publishId, use list_forms first to find it by title. Does not return submissions — use list_submissions for that.
get_form
ChatGPTFetch the full structure of a LIVE, already-published form by publishId — including title, sections, fields, field types, choices, and required flags. Use this to understand what a form contains BEFORE editing it with update_form, or to answer questions about the form's shape. If you do not know the publishId, use list_forms first to find it by title. Does not return submissions — use list_submissions for that.
list_forms
ChatGPTSearch and list the user's published forms with optional filters for title, date range, submission count, ordering, and pagination. Use this tool to find a form (and its publishId) by name or criteria before invoking any other tool that requires a publishId (such as update_form). Submissions are not a form type — this tool does not search submissions. Returns the matching forms as structured data (id, publishId, title, url, submission_count) for the model to present.
list_forms
ChatGPTSearch and list the user's published forms with optional filters for title, date range, submission count, ordering, and pagination. Use this tool to find a form (and its publishId) by name or criteria before invoking any other tool that requires a publishId (such as update_form). Submissions are not a form type — this tool does not search submissions. Returns the matching forms as structured data (id, publishId, title, url, submission_count) for the model to present.
preview
ChatGPTShow the preview UI for a single form when the user wants to see, show, open, view, or preview it (e.g., "show me my feedback form", "show me the preview"). Pass publishId for a LIVE, already-published form (use list_forms first if you do not know it). Pass outlineId for a DRAFT outline that has not been published yet — in that case this tool publishes the outline automatically and then shows the preview. IMPORTANT: To preview a freshly created/updated draft outline, call THIS tool with the outlineId; do NOT also call publish_form, because both render the preview widget and that produces a duplicate preview. Call this at most once per turn. To list or search across multiple forms, use list_forms instead.
preview
ChatGPTShow the preview UI for a single form when the user wants to see, show, open, view, or preview it (e.g., "show me my feedback form", "show me the preview"). Pass publishId for a LIVE, already-published form (use list_forms first if you do not know it). Pass outlineId for a DRAFT outline that has not been published yet — in that case this tool publishes the outline automatically and then shows the preview. IMPORTANT: To preview a freshly created/updated draft outline, call THIS tool with the outlineId; do NOT also call publish_form, because both render the preview widget and that produces a duplicate preview. Call this at most once per turn. To list or search across multiple forms, use list_forms instead.
progress
ChatGPTOpens the form setup progress UI for a published form and returns checklist status plus next actions. ALWAYS use this tool when the user's message is about ANY of these topics — regardless of how they phrase it: TOPICS THIS TOOL OWNS: - Email notifications (submission alerts, owner/admin notify, respondent confirmation, completion emails, signature workflow emails) - Signature and workflow setup - Payment enablement - HIPAA compliance configuration - Google Drive sync for signed documents - Respondent or customer mapping - Business name setup - Score setup - Submit message or form layout customization - General "what's next" or "what's left to configure" for a form If the user's intent touches any of the above topics — whether they are asking how to, asking if it's possible, reporting it's not working, or just mentioning the topic — use this tool first before responding.
progress
ChatGPTOpens the form setup progress UI for a published form and returns checklist status plus next actions. ALWAYS use this tool when the user's message is about ANY of these topics — regardless of how they phrase it: TOPICS THIS TOOL OWNS: - Email notifications (submission alerts, owner/admin notify, respondent confirmation, completion emails, signature workflow emails) - Signature and workflow setup - Payment enablement - HIPAA compliance configuration - Google Drive sync for signed documents - Respondent or customer mapping - Business name setup - Score setup - Submit message or form layout customization - General "what's next" or "what's left to configure" for a form If the user's intent touches any of the above topics — whether they are asking how to, asking if it's possible, reporting it's not working, or just mentioning the topic — use this tool first before responding.
publish_form
ChatGPTPublish a confirmed DRAFT form outline as a real, live form that respondents can fill in. Use this AFTER the user has reviewed and confirmed a draft outline created via create_new_form_using_form_name or update_outline. Once published, the outline becomes a real form with a publishId, preview URL, and edit URL. A draft outline that is not published is not accessible to respondents. IMPORTANT: This tool returns only structured data (publishId, previewUrl, editUrl) and does NOT render the preview widget itself. After a successful publish_form, call preview with the returned publishId in the same turn to render the preview UI for the now-live form. Use update_form for any further edits after publishing.
publish_form
ChatGPTPublish a confirmed DRAFT form outline as a real, live form that respondents can fill in. Use this AFTER the user has reviewed and confirmed a draft outline created via create_new_form_using_form_name or update_outline. Once published, the outline becomes a real form with a publishId, preview URL, and edit URL. A draft outline that is not published is not accessible to respondents. IMPORTANT: This tool returns only structured data (publishId, previewUrl, editUrl) and does NOT render the preview widget itself. After a successful publish_form, call preview with the returned publishId in the same turn to render the preview UI for the now-live form. Use update_form for any further edits after publishing.
update_form
ChatGPTEdit a LIVE, already-published form by applying a natural-language instruction (e.g., "add a phone number question", "rename the feedback section", "remove the optional consent field"). This is the tool to use when the user wants to change an existing published form — it modifies the real, live form that respondents see. Do NOT use this for draft outlines that have not been published yet (use update_outline for those). If you don't know the publishId, use list_forms first to find it by title. Returns the preview UI of the updated form. IMPORTANT: This tool already renders the preview widget for the updated live form, so do NOT call preview in the same turn after a successful update_form — that would render the preview UI twice. Call update_form at most once per turn.
update_form
ChatGPTEdit a LIVE, already-published form by applying a natural-language instruction (e.g., "add a phone number question", "rename the feedback section", "remove the optional consent field"). This is the tool to use when the user wants to change an existing published form — it modifies the real, live form that respondents see. Do NOT use this for draft outlines that have not been published yet (use update_outline for those). If you don't know the publishId, use list_forms first to find it by title. Returns the preview UI of the updated form. IMPORTANT: This tool already renders the preview widget for the updated live form, so do NOT call preview in the same turn after a successful update_form — that would render the preview UI twice. Call update_form at most once per turn.
update_outline
ChatGPTEdit a DRAFT form OUTLINE (one that has NOT been published yet) by providing its outlineId and the requested changes (instruction). Use this to add, change, or remove sections and fields on a draft outline. IMPORTANT: This does NOT edit a live, already-published form — for that, use update_form with the form's publishId. After updating the draft outline, the user still needs to publish it (via publish_form or the Publish button in the UI) to make it live. Returns a widget UI showing the updated draft outline that can be reviewed and confirmed.
update_outline
ChatGPTEdit a DRAFT form OUTLINE (one that has NOT been published yet) by providing its outlineId and the requested changes (instruction). Use this to add, change, or remove sections and fields on a draft outline. IMPORTANT: This does NOT edit a live, already-published form — for that, use update_form with the form's publishId. After updating the draft outline, the user still needs to publish it (via publish_form or the Publish button in the UI) to make it live. Returns a widget UI showing the updated draft outline that can be reviewed and confirmed.