Skip to main content
Glama

Update form

update_form
Destructive

Update a form of the current team: title / description / isActive / flagImg / landingImage / theme / report / openGraph / language / systemText. flagImg is the quiz cover, landingImage the landing-page cover (sets the image only, does not toggle the landing page); both take a media id from finalize_image_upload, a media URL, or "" to clear. report and openGraph (the social share card on the answer link) merge by sub-key — only what you pass is replaced, "" clears an openGraph sub-key; in the outcome_quiz scene outcomes are matched by code so existing images survive, and removing an outcome still referenced by question votes is rejected. systemText is replaced wholesale ({} clears it). language is changeable only while the form has no language versions; scene never. Questions go through add_question / update_question / delete_question / move_question, dimensionAnalysis alone through set_dimension_analysis.

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": {
      "id": "<id>"
    },
    "name": "update_form"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesThe form ID to update
themeNoNew visual theme for the answer page. Only this sub-key of personalized is changed; settings are kept. Optional visual theme matching the quiz topic/mood. Default light. Pick the one that best fits the quiz: light (clean neutral bright; default — formal/general quizzes); corporate (professional blue+gray; B2B, career, business assessments); dark (modern sleek dark; tech, night, cool personality quizzes); cupcake (soft pink cute rounded; fun, food, kids, lighthearted); pastel (gentle pastel artsy; lifestyle, aesthetics, soft mood); valentine (pink romantic hearts; love, relationships, holidays); synthwave (neon purple/pink retro; gaming, trends, bold personality); luxury (dark + gold premium; finance, luxury brands, high-end); forest (deep green nature; environment, health, outdoors); coffee (warm brown cozy; food & drink, cafe, lifestyle); autumn (warm orange/brown seasonal; autumn, cozy, harvest); halloween (purple+orange spooky; Halloween, horror, festive fun); night (deep calm blue; astronomy, mindfulness, calm tech); cyberpunk (high-contrast neon yellow; tech, esports, gaming).
titleNoNew title
reportNoReport configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate) replaces overallAnalysis, except that an omitted formula keeps the current one (pass formula: "" to remove it and fall back to the default sum); passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); passing levelOrder sets the level display order (asc / desc, knowledge_quiz / scored_quiz only); passing scoreStyle sets the score card style (scale / ring / gauge / steps, null follows the theme; knowledge_quiz / scored_quiz only); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes).
flagImgNoQuiz cover image: a media ID returned by finalize_image_upload, or a media URL. Pass an empty string to clear the cover.
isActiveNoWhether to enable response collection
languageNoChange the form's language. Only allowed while the form has no translation links and is not referenced by other language versions; otherwise rejected.
openGraphNoSocial share card (Open Graph) settings: the title / description / image shown when the answer link is shared to social media or chat apps. In update_form each sub-key is merged independently (only the keys you pass change; pass an empty string to clear one). SEO keywords are generated automatically and cannot be set here.
systemTextNoAnswer-page system text overrides as a key→text map. Replaces the whole map (pass {} to clear); empty values are dropped and fall back to the language default.
descriptionNoNew description; pass an empty string to clear. Allows description-scope rich text (including <img src>). Write HTML, never Markdown: <strong>bold</strong> not **bold**, <ul><li> not "- item", <h2> not "## heading". This field also accepts an inline image: put an <img src="..."> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one.
landingImageNoLanding page cover image: a media ID returned by finalize_image_upload, or a media URL. Pass an empty string to clear it. Note: this only sets the image and does NOT toggle the landing page on/off; the landing image is shown only when the landing page is enabled.

Output Schema

NameRequiredDescriptionDefault
idNoForm id
sceneNoknowledge_quiz / scored_quiz / outcome_quiz / ai_quiz
themeNoAnswer-page theme name
titleNoForm title after the update
flagImgNoMedia id of the quiz cover
isActiveNoWhether the form is open for submissions
languageNoPrimary language
hasReportNoWhether this call replaced the report configuration
openGraphNoSocial share card
updatedAtNoISO datetime
systemTextNoOverridden system copy
descriptionNoForm description
landingImageNoMedia id of the landing-page cover

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / report / description
      Previous value: -"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate) replaces overallAnalysis, except that an omitted formula keeps the current one (pass formula: \"\" to remove it and fall back to the default sum); passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); passing levelOrder sets the level display order (asc / desc, knowledge_quiz / scored_quiz only); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."New value: +"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate) replaces overallAnalysis, except that an omitted formula keeps the current one (pass formula: \"\" to remove it and fall back to the default sum); passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); passing levelOrder sets the level display order (asc / desc, knowledge_quiz / scored_quiz only); passing scoreStyle sets the score card style (scale / ring / gauge / steps, null follows the theme; knowledge_quiz / scored_quiz only); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."
    • addedInput schema / properties / report / properties / scoreStyle
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "scale",
      +        "ring",
      +        "gauge",
      +        "steps"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "knowledge_quiz / scored_quiz only: how the result page's overall score card shows the result — scale (a level bar with a marker), ring (a progress ring with the score inside), gauge (a semicircle gauge split by level with a needle) or steps (one bar per level, taller for higher levels). Display only. null (the default) follows the personalized theme: the applied library design's style, or scale when none is applied. Styles that need data the quiz lacks (e.g. steps without levels) fall back to scale."
      +}
  2. Changed2 schema fields changed
    • changedInput schema / properties / report / description
      Previous value: -"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate) replaces overallAnalysis, except that an omitted formula keeps the current one (pass formula: \"\" to remove it and fall back to the default sum); passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."New value: +"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate) replaces overallAnalysis, except that an omitted formula keeps the current one (pass formula: \"\" to remove it and fall back to the default sum); passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); passing levelOrder sets the level display order (asc / desc, knowledge_quiz / scored_quiz only); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."
    • addedInput schema / properties / report / properties / levelOrder
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "asc",
      +        "desc"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "knowledge_quiz / scored_quiz only: display order of the score levels — asc (default, lowest level first) or desc (highest level first). Applies to the overall levels and every dimension's levels, in the editor and on the result page's level scale. Display only: levels are still stored and matched by minScore ascending, so pass report.levels in ascending order either way. null restores asc."
      +}
  3. Changed3 schema fields changed
    • removedInput schema / properties / report / properties / levels / items / properties / color
      Removed value: -{
      -  "description": "Level color, e.g. #4caf50",
      -  "type": "string"
      -}
    • removedInput schema / properties / report / properties / outcomes / items / properties / color
      Removed value: -{
      -  "description": "Theme color of this outcome, e.g. \"#4caf50\". Optional.",
      -  "maxLength": 30,
      -  "type": "string"
      -}
    • changedInput schema / properties / report / properties / sectionOrder / description
      Previous value: -"Any scene: the order of the movable result-page sections — dimension (dimension breakdown / radar), booking (the Cal.com booking block), feedback (the feedback block). The overall score / outcome always stays on top and the answer review / share area at the bottom. Keys you leave out keep their default relative order after the ones you list; [] restores the default (dimension, booking, feedback). Lead with booking when the quiz exists to book calls."New value: +"Any scene: the order of the movable result-page sections — dimension (dimension breakdown / radar), booking (the Cal.com booking block), feedback (the feedback block). The overall score / outcome always stays on top and the answer review / share area at the bottom. Keys you leave out keep their default relative order after the ones you list; [] restores the default (booking, dimension, feedback)."
  4. Changed2 schema fields changed
    • addedInput schema / properties / report / properties / levels / items / properties / redirectUrl
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 2048,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "http(s) link respondents are sent to right after submitting when the score falls in this level, instead of seeing the result page. Only takes effect while redirects are switched on (update_form_settings resultRedirect, Pro). In update_form, omit it to keep the link of the current level with the same label; pass \"\" or null to remove it. Overall levels only."
      +}
    • addedInput schema / properties / report / properties / outcomes / items / properties / redirectUrl
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 2048,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "outcome_quiz only: http(s) link respondents are sent to right after submitting when this outcome wins, instead of seeing the result page. Only takes effect while redirects are switched on (update_form_settings resultRedirect, Pro). In update_form, omit it to keep the outcome's current link; pass \"\" or null to remove it. Rejected on ai_quiz result tags."
      +}
  5. Changed4 schema fields changed
    • changedInput schema / properties / report / description
      Previous value: -"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate) replaces overallAnalysis, except that an omitted formula keeps the current one (pass formula: \"\" to remove it and fall back to the default sum); passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."New value: +"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate) replaces overallAnalysis, except that an omitted formula keeps the current one (pass formula: \"\" to remove it and fall back to the default sum); passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."
    • addedInput schema / properties / report / properties / levels / items / properties / description / description
      Added value: +"Result-page text shown when the score falls in this level. Write HTML, never Markdown: <strong>bold</strong> not **bold**, <ul><li> not \"- item\", <h2> not \"## heading\"."
    • removedInput schema / properties / report / properties / suggestionsTemplate
      Removed value: -{
      -  "description": "Suggestions template; same rich-text rules as summaryTemplate. Write HTML, never Markdown: <strong>bold</strong> not **bold**, <ul><li> not \"- item\", <h2> not \"## heading\".",
      -  "maxLength": 5000,
      -  "type": "string"
      -}
    • changedInput schema / properties / report / properties / summaryTemplate / description
      Previous value: -"Summary template. Allows description-scope rich text (headings/lists/links/images/<span> etc.). Supports math formulas: write `<span data-type=\"math-formula\" data-latex=\"x^2+1\"></span>`, rendered by KaTeX on the frontend. Supports variable placeholders `<art-field data-type=\"fieldVariable\" data-cid=\"score\"></art-field>` (cid can be score / level / a question code). Write HTML, never Markdown: <strong>bold</strong> not **bold**, <ul><li> not \"- item\", <h2> not \"## heading\". This field also accepts an inline image: put an <img src=\"...\"> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one."New value: +"Summary template. Allows description-scope rich text (headings/lists/links/images/<span> etc.). Supports math formulas: write `<span data-type=\"math-formula\" data-latex=\"x^2+1\"></span>` with the LaTeX in data-latex and nothing inside; the server renders it. Two variables are available: write {{score}} (the overall score) and {{level}} (the matched level label); they are stored as `<art-field data-type=\"fieldVariable\" data-cid=\"score\"></art-field>`. Any other variable is rejected. Write HTML, never Markdown: <strong>bold</strong> not **bold**, <ul><li> not \"- item\", <h2> not \"## heading\". This field also accepts an inline image: put an <img src=\"...\"> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one."
  6. Changed4 schema fields changed
    • changedInput schema / properties / description / description
      Previous value: -"New description; pass an empty string to clear. Allows description-scope rich text (including <img src>). This field also accepts an inline image: put an <img src=\"...\"> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one."New value: +"New description; pass an empty string to clear. Allows description-scope rich text (including <img src>). Write HTML, never Markdown: <strong>bold</strong> not **bold**, <ul><li> not \"- item\", <h2> not \"## heading\". This field also accepts an inline image: put an <img src=\"...\"> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one."
    • changedInput schema / properties / report / properties / outcomes / items / properties / description / description
      Previous value: -"Result-page content shown when this outcome wins. Allows description-scope rich text (headings/lists/links/images etc.). This field also accepts an inline image: put an <img src=\"...\"> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one."New value: +"Result-page content shown when this outcome wins. Allows description-scope rich text (headings/lists/links/images etc.). Write HTML, never Markdown: <strong>bold</strong> not **bold**, <ul><li> not \"- item\", <h2> not \"## heading\". This field also accepts an inline image: put an <img src=\"...\"> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one."
    • changedInput schema / properties / report / properties / suggestionsTemplate / description
      Previous value: -"Suggestions template; same rich-text rules as summaryTemplate."New value: +"Suggestions template; same rich-text rules as summaryTemplate. Write HTML, never Markdown: <strong>bold</strong> not **bold**, <ul><li> not \"- item\", <h2> not \"## heading\"."
    • changedInput schema / properties / report / properties / summaryTemplate / description
      Previous value: -"Summary template. Allows description-scope rich text (headings/lists/links/images/<span> etc.). Supports math formulas: write `<span data-type=\"math-formula\" data-latex=\"x^2+1\"></span>`, rendered by KaTeX on the frontend. Supports variable placeholders `<art-field data-type=\"fieldVariable\" data-cid=\"score\"></art-field>` (cid can be score / level / a question code). This field also accepts an inline image: put an <img src=\"...\"> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one."New value: +"Summary template. Allows description-scope rich text (headings/lists/links/images/<span> etc.). Supports math formulas: write `<span data-type=\"math-formula\" data-latex=\"x^2+1\"></span>`, rendered by KaTeX on the frontend. Supports variable placeholders `<art-field data-type=\"fieldVariable\" data-cid=\"score\"></art-field>` (cid can be score / level / a question code). Write HTML, never Markdown: <strong>bold</strong> not **bold**, <ul><li> not \"- item\", <h2> not \"## heading\". This field also accepts an inline image: put an <img src=\"...\"> in it, where src is a direct image URL that renders in <img src> (a page URL that merely contains an image does not work). Use finalize_image_upload to host an image yourself, or a direct URL the user supplied. Never invent an image URL — omit the image instead of risking a broken one."
  7. Changed1 schema field changed
    • changedInput schema / properties / report / properties / aiReport / properties / length / description
      Previous value: -"Report length: brief (about 150 words, verdict + 1-2 findings + next steps), standard (default, about 300 words, 2-4 sections, one chart) or detailed (about 650 words, up to 6 sections and 3 charts). null restores standard. A length rule written in style takes precedence."New value: +"Report length: brief (about 150 words, verdict + 1-2 findings + next steps), standard (default, about 300 words, 2-4 sections, one chart) or detailed (about 650 words, up to 6 sections and 3 charts). null restores standard. brief and standard are hard caps: a longer word count, more sections or more detail asked for in instructions or style is ignored. Only detailed lets a length rule written in style take precedence."
  8. Changed1 schema field changed
    • addedInput schema / properties / report / properties / aiReport / properties / length
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "brief",
      +        "standard",
      +        "detailed"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Report length: brief (about 150 words, verdict + 1-2 findings + next steps), standard (default, about 300 words, 2-4 sections, one chart) or detailed (about 650 words, up to 6 sections and 3 charts). null restores standard. A length rule written in style takes precedence."
      +}
  9. Changed2 schema fields changed
    • changedInput schema / properties / report / description
      Previous value: -"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate/hideOverallScore) replaces overallAnalysis, except that an omitted formula keeps the current one (pass formula: \"\" to remove it and fall back to the default sum); passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."New value: +"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate) replaces overallAnalysis, except that an omitted formula keeps the current one (pass formula: \"\" to remove it and fall back to the default sum); passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."
    • removedInput schema / properties / report / properties / hideOverallScore
      Removed value: -{
      -  "description": "Hide scores on the result page: the overall score (score ring / number / percentile) AND every dimension score (score / max score / progress bar / score rate) are hidden together, keeping level names, level descriptions, the level ladder, dimension levels and the summary. Note the summary template still renders its score variable if you left one in. Scored scenes only (ignored for outcome). Default false.",
      -  "type": "boolean"
      -}
  10. Changed5 schema fields changed
    • changedInput schema / properties / report / description
      Previous value: -"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate/hideOverallScore) replaces overallAnalysis; passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."New value: +"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate/hideOverallScore) replaces overallAnalysis, except that an omitted formula keeps the current one (pass formula: \"\" to remove it and fall back to the default sum); passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."
    • changedInput schema / properties / report / properties / formula / description
      Previous value: -"Total-score formula for the scored_quiz scene, and the ONLY source of the overall score there — summing question scores is the knowledge_quiz rule, so a scored_quiz without this formula scores null and no level ever matches. Required whenever levels are set. Question codes must be wrapped in `{{code}}` (e.g. `{{q1}} + {{q2}}` for custom question codes, or `{{__field_abc}} + {{__field_def}}` for auto-generated ones); bare codes are rejected. It may also reference dimension codes the same way (e.g. `{{dim_d}} * 2 + {{dim_i}}`): dimensions are computed first, so the overall score can be a weighted sum of dimension scores; a dimension referenced here cannot be removed later. Supported operators: + - * / ( ); every referenced code must exist in the current form (questions and dimensions). Setting dimension formulas does NOT cover this — the overall formula is separate."New value: +"Optional custom total-score formula for the scored_quiz scene. Leave it out to use the default: the overall score is the sum of every scored question (choice scores, plus the star value / configured score of Rate questions; NumberField / DateField / TimeField raw values are not summed) and the full mark is the sum of each question's highest attainable score. Set it only when you need weights, dimension combinations or NumberField / date values. In update_form, omitting it keeps the current formula; pass \"\" to remove it. Question codes must be wrapped in `{{code}}` (e.g. `{{q1}} + {{q2}}` for custom question codes, or `{{__field_abc}} + {{__field_def}}` for auto-generated ones); bare codes are rejected. It may also reference dimension codes the same way (e.g. `{{dim_d}} * 2 + {{dim_i}}`): dimensions are computed first, so the overall score can be a weighted sum of dimension scores; a dimension referenced here cannot be removed later. Supported operators: + - * / ( ); every referenced code must exist in the current form (questions and dimensions). Setting dimension formulas does NOT cover this — the overall formula is separate."
    • changedInput schema / properties / report / properties / levels / description
      Previous value: -"Score levels (at most 20), ordered by upper bound ascending. Example: [{label:\"Needs improvement\",upTo:60},{label:\"Good\",upTo:80},{label:\"Excellent\"}] means (-∞,60) / [60,80) / [80,+∞). The last level must omit upTo. In the scored_quiz scene these levels are matched against the formula score, so formula must be set alongside them (rejected otherwise)."New value: +"Score levels (at most 20), ordered by upper bound ascending. Example: [{label:\"Needs improvement\",upTo:60},{label:\"Good\",upTo:80},{label:\"Excellent\"}] means (-∞,60) / [60,80) / [80,+∞). The last level must omit upTo. In the scored_quiz scene these levels are matched against the overall score: report.formula when set, otherwise the sum of every scored question."
    • changedInput schema / properties / report / properties / outcomes / description
      Previous value: -"Outcome scene only (required there at create time, 1-50 items): the outcome types this quiz can result in. Each question choice votes for outcome codes; the outcome with the most votes wins (ties resolved by array order, earlier wins). Rejected in the knowledge_quiz / scored_quiz scenes."New value: +"outcome_quiz: the outcome types this quiz can result in (required at create time, 1-50 items). Each question choice votes for outcome codes; the outcome with the most votes wins (ties resolved by array order, earlier wins). ai_quiz: optional result tags (0-10; [] removes them) — before writing each report the AI picks one tag per respondent, so leads can be filtered and pushed by it; put the criteria for choosing a tag in its description, and an optional cta shown under that respondent's report. Tags are internal: respondents never see the tag name. Rejected in the knowledge_quiz / scored_quiz scenes."
    • removedInput schema / properties / report / properties / outcomes / minItems
      Removed value: -1
  11. Changed5 schema fields changed
    • changedInput schema / properties / report / description
      Previous value: -"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate/hideOverallScore) replaces overallAnalysis; passing dimensionAnalysis replaces the dimension list (codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."New value: +"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate/hideOverallScore) replaces overallAnalysis; passing dimensionAnalysis replaces the dimension list (scored_quiz only; codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."
    • changedInput schema / properties / report / properties / dimensionAnalysis / description
      Previous value: -"Multi-dimension analysis (radar chart + per-dimension breakdown). Each dimension has a stable code (pass dimensions[].code or let the server generate one; returned in structuredContent). In the knowledge_quiz scene set fieldCodes per dimension. In the scored_quiz scene every dimension needs a formula over question codes (e.g. `{{q1}} + {{q2}}`); a question may override its score for one dimension via choices[i].dimensionScores, otherwise the formula uses its plain choice score. If you set custom question codes you can configure everything in one create_form call; otherwise create the questions first, then get_form to read the auto-generated codes."New value: +"Multi-dimension analysis (radar chart + per-dimension breakdown); scored_quiz scene only — knowledge quizzes have no dimensions and reject it. Each dimension has a stable code (pass dimensions[].code or let the server generate one; returned in structuredContent). Every dimension needs a formula over question codes (e.g. `{{q1}} + {{q2}}`); a question may override its score for one dimension via choices[i].dimensionScores, otherwise the formula uses its plain choice score. If you set custom question codes you can configure everything in one create_form call; otherwise create the questions first, then get_form to read the auto-generated codes."
    • removedInput schema / properties / report / properties / dimensionAnalysis / properties / dimensions / items / properties / fieldCodes
      Removed value: -{
      -  "description": "Required in the knowledge_quiz scene: the question codes this dimension covers (dimension score = sum of these field scores). Each code must exist in the form. Ignored in the scored_quiz scene, where the formula decides which questions count.",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • changedInput schema / properties / report / properties / dimensionAnalysis / properties / dimensions / items / properties / formula / description
      Previous value: -"Required in the scored_quiz scene: the dimension score formula, usually the sum of the questions in this dimension. Question codes must be wrapped in `{{code}}` (e.g. `{{q1}} + {{q2}}` when you set custom question codes, or `{{__field_abc}} + {{__field_def}}` for auto-generated ones); bare codes are rejected. Inside a dimension formula `{{q}}` is the question's score for THIS dimension: its choices[i].dimensionScores override when set, otherwise the plain choice score. A dimension formula cannot reference other dimensions (only report.formula can). Supported operators: + - * / ( ). Ignored in the knowledge_quiz scene."New value: +"Required: the dimension score formula, usually the sum of the questions in this dimension. Question codes must be wrapped in `{{code}}` (e.g. `{{q1}} + {{q2}}` when you set custom question codes, or `{{__field_abc}} + {{__field_def}}` for auto-generated ones); bare codes are rejected. Inside a dimension formula `{{q}}` is the question's score for THIS dimension: its choices[i].dimensionScores override when set, otherwise the plain choice score. A dimension formula cannot reference other dimensions (only report.formula can). Supported operators: + - * / ( )."
    • changedInput schema / properties / report / properties / dimensionAnalysis / properties / dimensions / items / properties / standardScore / description
      Previous value: -"Standard score (the radar-chart standard line; in the scored_quiz scene it also acts as the dimension full mark). When omitted in the scored_quiz scene it defaults to the attainable maximum: the formula evaluated with every referenced question at its highest score for this dimension (choices[i].dimensionScores override, else the choice score); 0 when that cannot be estimated, e.g. the formula uses NumberField / date questions. knowledge_quiz defaults to 0."New value: +"Standard score: the radar-chart standard line and the dimension full mark. When omitted it defaults to the attainable maximum: the formula evaluated with every referenced question at its highest score for this dimension (choices[i].dimensionScores override, else the choice score); 0 when that cannot be estimated, e.g. the formula uses NumberField / date questions."
  12. Changed3 schema fields changed
    • addedInput schema / properties / report / properties / aiReport
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "ai_quiz scene only (rejected elsewhere): how the AI writes each respondent's report. Sub-keys are merged — pass only the one you change; null or \"\" clears it.",
      +  "properties": {
      +    "instructions": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Generation instructions: what the report should cover, how to read the answers, what to recommend. Plain text (one paragraph per line) or description-scope rich text HTML. Reference a question as {{code}} (visible input questions only; call get_form for the codes) — the AI is pointed at that answer, the answer text itself is not inlined. Unknown codes are rejected. At most 20000 visible characters. get_form returns it in this same {{code}} form."
      +    },
      +    "style": {
      +      "anyOf": [
      +        {
      +          "maxLength": 5000,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Optional style and rules (tone, length, things to avoid), plain text, at most 5000 characters."
      +    }
      +  },
      +  "type": "object"
      +}
    • changedInput schema / properties / report / properties / sectionOrder / description
      Previous value: -"Any scene: the order of the movable result-page sections — dimension (dimension breakdown / radar), booking (the 1:1 call block), feedback (the feedback block). The overall score / outcome always stays on top and the answer review / share area at the bottom. Keys you leave out keep their default relative order after the ones you list; [] restores the default (dimension, booking, feedback). Lead with booking when the quiz exists to book calls."New value: +"Any scene: the order of the movable result-page sections — dimension (dimension breakdown / radar), booking (the Cal.com booking block), feedback (the feedback block). The overall score / outcome always stays on top and the answer review / share area at the bottom. Keys you leave out keep their default relative order after the ones you list; [] restores the default (dimension, booking, feedback). Lead with booking when the quiz exists to book calls."
    • changedOutput schema / properties / scene / description
      Previous value: -"knowledge_quiz / scored_quiz / outcome_quiz"New value: +"knowledge_quiz / scored_quiz / outcome_quiz / ai_quiz"
  13. Changed3 schema fields changed
    • changedInput schema / properties / report / properties / sectionOrder / description
      Previous value: -"Any scene: the order of the movable result-page sections — dimension (dimension breakdown / radar), ai (AI suggestions), booking (the 1:1 call block), feedback (the feedback block). The overall score / outcome always stays on top and the answer review / share area at the bottom. Keys you leave out keep their default relative order after the ones you list; [] restores the default (dimension, ai, booking, feedback). Lead with booking when the quiz exists to book calls."New value: +"Any scene: the order of the movable result-page sections — dimension (dimension breakdown / radar), booking (the 1:1 call block), feedback (the feedback block). The overall score / outcome always stays on top and the answer review / share area at the bottom. Keys you leave out keep their default relative order after the ones you list; [] restores the default (dimension, booking, feedback). Lead with booking when the quiz exists to book calls."
    • changedInput schema / properties / report / properties / sectionOrder / items / enum
      Previous value: -[
      -  "dimension",
      -  "ai",
      -  "booking",
      -  "feedback"
      -]New value: +[
      +  "dimension",
      +  "booking",
      +  "feedback"
      +]
    • changedInput schema / properties / report / properties / sectionOrder / maxItems
      Previous value: -4New value: +3
  14. Changed2 schema fields changed
    • changedInput schema / properties / report / description
      Previous value: -"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate/hideOverallScore) replaces overallAnalysis; passing dimensionAnalysis replaces the dimension list (codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."New value: +"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate/hideOverallScore) replaces overallAnalysis; passing dimensionAnalysis replaces the dimension list (codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); passing sectionOrder replaces the result-page section order ([] restores the default); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."
    • addedInput schema / properties / report / properties / sectionOrder
      Added value: +{
      +  "description": "Any scene: the order of the movable result-page sections — dimension (dimension breakdown / radar), ai (AI suggestions), booking (the 1:1 call block), feedback (the feedback block). The overall score / outcome always stays on top and the answer review / share area at the bottom. Keys you leave out keep their default relative order after the ones you list; [] restores the default (dimension, ai, booking, feedback). Lead with booking when the quiz exists to book calls.",
      +  "items": {
      +    "enum": [
      +      "dimension",
      +      "ai",
      +      "booking",
      +      "feedback"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "type": "array",
      +  "uniqueItems": true
      +}
  15. Changed9 schema fields changed
    • changedInput schema / properties / report / description
      Previous value: -"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate/hideOverallScore) replaces overallAnalysis; passing dimensionAnalysis replaces it (an empty dimensions array clears it); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."New value: +"Report configuration, merged by sub-key into form.report: passing overallAnalysis fields (title/formula/levels/summaryTemplate/suggestionsTemplate/hideOverallScore) replaces overallAnalysis; passing dimensionAnalysis replaces the dimension list (codes are kept by code or by name, omitted title / radar settings are preserved; an empty dimensions array clears it; a dimension still referenced by a question's dimensionScores or by report.formula cannot be removed); in the outcome_quiz scene passing outcomes replaces the outcome list (matched by code, existing images kept; cannot be emptied, and removing an outcome still referenced by question votes is rejected); unspecified parts are kept. Common usage: either set custom question codes in create_form and pass report.formula / dimensionAnalysis in the same call, or call create_form first to get the auto-generated field codes, then update_form to fill in report.formula and/or dimensionAnalysis (which reference question codes)."
    • changedInput schema / properties / report / properties / dimensionAnalysis / description
      Previous value: -"Multi-dimension analysis (radar chart + per-dimension breakdown). Each dimension gets a server-generated code returned in structuredContent. In the knowledge_quiz scene set fieldCodes per dimension; in the scored_quiz scene set a formula. Dimensions reference question codes: if you set custom question codes you can configure dimensions in the same create_form call; otherwise create the questions first, then get_form to read the auto-generated codes."New value: +"Multi-dimension analysis (radar chart + per-dimension breakdown). Each dimension has a stable code (pass dimensions[].code or let the server generate one; returned in structuredContent). In the knowledge_quiz scene set fieldCodes per dimension. In the scored_quiz scene every dimension needs a formula over question codes (e.g. `{{q1}} + {{q2}}`); a question may override its score for one dimension via choices[i].dimensionScores, otherwise the formula uses its plain choice score. If you set custom question codes you can configure everything in one create_form call; otherwise create the questions first, then get_form to read the auto-generated codes."
    • addedInput schema / properties / report / properties / dimensionAnalysis / properties / dimensions / items / properties / code
      Added value: +{
      +  "description": "Optional stable identifier for the dimension (same rules as question codes: starts with a letter or underscore, letters/digits/underscores only). Set it when questions reference the dimension via choices[i].dimensionScores in the same create_form call. When updating, pass the existing code to keep it; if omitted, a dimension with the same name keeps its current code, otherwise one is generated.",
      +  "maxLength": 64,
      +  "type": "string"
      +}
    • changedInput schema / properties / report / properties / dimensionAnalysis / properties / dimensions / items / properties / fieldCodes / description
      Previous value: -"Required in the knowledge_quiz scene: the question codes this dimension covers (dimension score = sum of these field scores). Each code must exist in the form. Ignored in the scored_quiz scene."New value: +"Required in the knowledge_quiz scene: the question codes this dimension covers (dimension score = sum of these field scores). Each code must exist in the form. Ignored in the scored_quiz scene, where the formula decides which questions count."
    • changedInput schema / properties / report / properties / dimensionAnalysis / properties / dimensions / items / properties / formula / description
      Previous value: -"Required in the scored_quiz scene: the dimension score formula. Question codes must be wrapped in `{{code}}` (e.g. `{{q1}} + {{q2}}` when you set custom question codes, or `{{__field_abc}} + {{__field_def}}` for auto-generated ones); bare codes are rejected. Supported operators: + - * / ( ). Ignored in the knowledge_quiz scene."New value: +"Required in the scored_quiz scene: the dimension score formula, usually the sum of the questions in this dimension. Question codes must be wrapped in `{{code}}` (e.g. `{{q1}} + {{q2}}` when you set custom question codes, or `{{__field_abc}} + {{__field_def}}` for auto-generated ones); bare codes are rejected. Inside a dimension formula `{{q}}` is the question's score for THIS dimension: its choices[i].dimensionScores override when set, otherwise the plain choice score. A dimension formula cannot reference other dimensions (only report.formula can). Supported operators: + - * / ( ). Ignored in the knowledge_quiz scene."
    • changedInput schema / properties / report / properties / dimensionAnalysis / properties / dimensions / items / properties / standardScore / description
      Previous value: -"Standard score (the radar-chart standard line; in the scored_quiz scene it also acts as the dimension full mark). Default 0."New value: +"Standard score (the radar-chart standard line; in the scored_quiz scene it also acts as the dimension full mark). When omitted in the scored_quiz scene it defaults to the attainable maximum: the formula evaluated with every referenced question at its highest score for this dimension (choices[i].dimensionScores override, else the choice score); 0 when that cannot be estimated, e.g. the formula uses NumberField / date questions. knowledge_quiz defaults to 0."
    • changedInput schema / properties / report / properties / formula / description
      Previous value: -"Total-score formula for the scored_quiz scene, and the ONLY source of the overall score there — summing question scores is the knowledge_quiz rule, so a scored_quiz without this formula scores null and no level ever matches. Required whenever levels are set. Question codes must be wrapped in `{{code}}` (e.g. `{{q1}} + {{q2}}` for custom question codes, or `{{__field_abc}} + {{__field_def}}` for auto-generated ones); bare codes are rejected. Supported operators: + - * / ( ); every referenced code must exist in the current form. Setting dimension formulas does NOT cover this — the overall formula is separate."New value: +"Total-score formula for the scored_quiz scene, and the ONLY source of the overall score there — summing question scores is the knowledge_quiz rule, so a scored_quiz without this formula scores null and no level ever matches. Required whenever levels are set. Question codes must be wrapped in `{{code}}` (e.g. `{{q1}} + {{q2}}` for custom question codes, or `{{__field_abc}} + {{__field_def}}` for auto-generated ones); bare codes are rejected. It may also reference dimension codes the same way (e.g. `{{dim_d}} * 2 + {{dim_i}}`): dimensions are computed first, so the overall score can be a weighted sum of dimension scores; a dimension referenced here cannot be removed later. Supported operators: + - * / ( ); every referenced code must exist in the current form (questions and dimensions). Setting dimension formulas does NOT cover this — the overall formula is separate."
    • changedInput schema / properties / report / properties / levels / items / properties / cta / properties / newWindow / description
      Previous value: -"Open the link in a new window, default false"New value: +"Deprecated and ignored: the CTA link always opens in a new window."
    • changedInput schema / properties / report / properties / outcomes / items / properties / cta / properties / newWindow / description
      Previous value: -"Open the link in a new window, default false"New value: +"Deprecated and ignored: the CTA link always opens in a new window."
  16. Changed1 schema field changed
    • changedInput schema / properties / report / properties / hideOverallScore / description
      Previous value: -"Hide the overall score on the result page (the score ring / number / percentile), keeping the level name, level description and summary. Scored scenes only (ignored for outcome). Default false."New value: +"Hide scores on the result page: the overall score (score ring / number / percentile) AND every dimension score (score / max score / progress bar / score rate) are hidden together, keeping level names, level descriptions, the level ladder, dimension levels and the summary. Note the summary template still renders its score variable if you left one in. Scored scenes only (ignored for outcome). Default false."
  17. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark the tool as destructive and open-world, but the description adds high-value semantics: report and openGraph sub-key merging, systemText wholesale replacement, empty-string clearing, outcome matching by code, and rejection when an outcome is still referenced. These details go well beyond the annotations and are consistent with them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The field list is front-loaded, and the remaining sentences focus on the highest-risk update semantics. For an 11-parameter nested mutation tool, the description is dense but appropriately sized with little wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition gives the agent enough context to call a complex nested update correctly: it covers merge-vs-replace behavior, clearing, code references, validation rejections, language constraints, and sibling routing. Return-value details are appropriately left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even with 100% schema coverage, the description adds meaning that the schema fields alone do not fully convey: flagImg vs landingImage behavior, media ID/URL/clear semantics, report and openGraph merge rules, systemText clearing, and the language-change restriction. This materially reduces the chance of destructive or malformed updates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource, then enumerates the exact form fields it updates. It clearly distinguishes question-level edits and standalone dimensionAnalysis edits by naming the sibling tools that handle them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes questions to add_question / update_question / delete_question / move_question and standalone dimensionAnalysis to set_dimension_analysis. It also states when language can be changed, but does not explicitly contrast with update_form_settings for settings-oriented edits, leaving one sibling-routing gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources