Skip to main content
Glama

Вопросы и структура опроса

update_quiz_widgets

Сохраняет структуру виджетов опроса (ids + entities). Перед вызовом прочитайте текущую структуру через ресурс quiz://{id}/structure. Тариф ограничивает число вопросов и их типы: сохранение, которое добавляет вопросы сверх лимита или вопрос недоступного типа, отклоняется. ids — массив идентификаторов виджетов по порядку; entities — объект конфигов по этим id. ВАЖНО: идентификаторы виджетов — уникальные UUID в формате RFC 4122 (например 550e8400-e29b-41d4-a716-446655440000). Допустимы только служебные строки "welcome" (первый) и "submit" (последний); все остальные id обязаны быть уникальными UUID. При добавлении новых виджетов генерируйте новый UUID для каждого; дубликаты id запрещены. Экран благодарности («спасибо», thank you) — это ОТДЕЛЬНЫЙ виджет type = "finish" с новым UUID перед "submit"; правка полей submit его не создаёт. Спецварианты «Другое / Свой вариант», «Затрудняюсь ответить», «Ничего из перечисленного» включаются флагами choiceTextOther / dropdownOther / hardToAnswer / noneOfAbove, а не добавляются пунктами в список вариантов. Ответ инструмента содержит фактически сохранённый состав (saved: количество виджетов и разбивка по типам) — сверьтесь с ним, прежде чем отвечать пользователю, что изменение применилось.

Input Schema

NameRequiredDescriptionDefault
idsYesПорядок виджетов: "welcome", затем уникальные UUID виджетов, затем "submit". Каждый id — уникальный UUID (кроме welcome/submit).
quiz_idYesID опроса для обновления.
entitiesYesКонфигурации виджетов: ключ — UUID из ids (уникальный для каждого виджета). Идентификаторы вариантов внутри виджета (choiceTextIds, dropdownIds, matrixRowIds и остальные списки опций) — тоже UUID, сгенерированные заново; порядковые имена вроде «q2_1» не годятся: опрос с ними сохранится, но публикация упадёт.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / npsFollowUpEnabled
      Added value: +{
      +  "description": "NPS: спрашивать причину оценки под шкалой. Нет поля — не спрашивать",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / npsFollowUpGroups
      Added value: +{
      +  "additionalProperties": {
      +    "type": "boolean"
      +  },
      +  "description": "NPS: какие группы спрашивать — detractors (0–6), passives (7–8), promoters (9–10) → true/false. Нет ключа — группу спрашиваем",
      +  "type": "object"
      +}
    • addedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / npsFollowUpQuestions
      Added value: +{
      +  "additionalProperties": {
      +    "type": "string"
      +  },
      +  "description": "NPS: вопрос о причине для каждой группы (detractors, passives, promoters), простой текст до 140 символов. Пустой — группу не спрашиваем",
      +  "type": "object"
      +}
    • addedInput schema / properties / entities / additionalProperties / properties / npsFollowUpEnabled
      Added value: +{
      +  "description": "NPS: спрашивать причину оценки под шкалой. Нет поля — не спрашивать",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / entities / additionalProperties / properties / npsFollowUpGroups
      Added value: +{
      +  "additionalProperties": {
      +    "type": "boolean"
      +  },
      +  "description": "NPS: какие группы спрашивать — detractors (0–6), passives (7–8), promoters (9–10) → true/false. Нет ключа — группу спрашиваем",
      +  "type": "object"
      +}
    • addedInput schema / properties / entities / additionalProperties / properties / npsFollowUpQuestions
      Added value: +{
      +  "additionalProperties": {
      +    "type": "string"
      +  },
      +  "description": "NPS: вопрос о причине для каждой группы (detractors, passives, promoters), простой текст до 140 символов. Пустой — группу не спрашиваем",
      +  "type": "object"
      +}
  2. Changed16 schema fields changed
    • changedInput schema / properties / entities / additionalProperties / properties / choiceImageEntities / additionalProperties / properties / score / description
      Previous value: -"Балл за выбор"New value: +"Балл за выбор (целое число)"
    • changedInput schema / properties / entities / additionalProperties / properties / choiceImageEntities / additionalProperties / properties / score / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / entities / additionalProperties / properties / choiceTextEntities / additionalProperties / properties / score / description
      Previous value: -"Балл за выбор"New value: +"Балл за выбор (целое число)"
    • changedInput schema / properties / entities / additionalProperties / properties / choiceTextEntities / additionalProperties / properties / score / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / entities / additionalProperties / properties / dropdownScores / additionalProperties / properties / score / description
      Previous value: -"Балл за выбор (число или строка)"New value: +"Балл за выбор (целое число или строка из цифр)"
    • changedInput schema / properties / entities / additionalProperties / properties / dropdownScores / additionalProperties / properties / score / type
      Previous value: -[
      -  "number",
      -  "string"
      -]New value: +[
      +  "integer",
      +  "string"
      +]
    • changedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / choiceImageEntities / additionalProperties / properties / score / description
      Previous value: -"Балл за выбор"New value: +"Балл за выбор (целое число)"
    • changedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / choiceImageEntities / additionalProperties / properties / score / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / choiceTextEntities / additionalProperties / properties / score / description
      Previous value: -"Балл за выбор"New value: +"Балл за выбор (целое число)"
    • changedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / choiceTextEntities / additionalProperties / properties / score / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / dropdownScores / additionalProperties / properties / score / description
      Previous value: -"Балл за выбор (число или строка)"New value: +"Балл за выбор (целое число или строка из цифр)"
    • changedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / dropdownScores / additionalProperties / properties / score / type
      Previous value: -[
      -  "number",
      -  "string"
      -]New value: +[
      +  "integer",
      +  "string"
      +]
    • changedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / yesNoTextEntities / additionalProperties / properties / score / description
      Previous value: -"Балл за выбор"New value: +"Балл за выбор (целое число)"
    • changedInput schema / properties / entities / additionalProperties / properties / groupWidgets / properties / entities / additionalProperties / properties / yesNoTextEntities / additionalProperties / properties / score / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / entities / additionalProperties / properties / yesNoTextEntities / additionalProperties / properties / score / description
      Previous value: -"Балл за выбор"New value: +"Балл за выбор (целое число)"
    • changedInput schema / properties / entities / additionalProperties / properties / yesNoTextEntities / additionalProperties / properties / score / type
      Previous value: -"number"New value: +"integer"
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare a mutating, non-idempotent operation; the description adds substantive context: tariff-based rejection of too many or unsupported question types, forbidden duplicate ids, the requirement to generate a fresh UUID per new widget, and that the response returns the actually saved composition to verify against. The one gap is that replace semantics are not spelled out – it never says widgets omitted from ids/entities are removed.

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

Conciseness4/5

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

Front-loaded with the action, then prerequisites, then constraints, then the verification step. Dense and mostly free of filler, though the UUID format example and the special-option flag sentence stack up enough that it runs long.

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

Completeness4/5

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

Given a huge nested schema, three required params and no output schema, the description covers the highest-risk failure modes (UUID generation, finish widget, special answers as flags, tariff rejection, saved-count verification). What is missing is the destructive side of a full-structure save: what happens to widgets dropped from the arrays.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description goes beyond the schema by defining the ordering contract (welcome first, submit last, UUIDs in between), the uniqueness constraint, and the non-obvious rule that a thank-you screen is a separate finish widget with its own UUID rather than a submit field edit.

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: saving the widget structure of a quiz as ids + entities. The pre-read directive referencing quiz://{id}/structure and the contrast with publish-time behavior makes it distinguishable from get_quiz_structure and update_quiz_texts.

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 tells the agent to read the current structure first, which is a real precondition for a full-replace save. It does not name a sibling alternative for partial edits (e.g. update_quiz_logic / update_quiz_texts), so the when-not-to-use case is left implicit.

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