Skip to main content
Glama

update_survey

Idempotent

Update an existing survey. Partial update: only the fields you send are touched — EXCEPT questions, which is a FULL REPLACEMENT of the entire question set (sending [] deletes all questions; omitting it leaves them untouched). If the survey already has responses its structure is locked: replacing questions is rejected with 409 — do not retry, explain to the user that responses protect the structure. At least one of survey_name, status, archived, settings or questions is required. Use status false to disable a survey without losing data (the safe alternative to delete_survey). Visual configuration (Visuals/Pages/LogoFile) is ignored here. Requires the Surveys module enabled — on 403 "module is not enabled", do NOT retry; tell the user to contact Sweeppea support. DISPLAY RULE: never show SurveyToken UUIDs.

update_survey

When to use

Update an existing survey. Partial update: only the fields you send are touched — EXCEPT questions, which is a FULL REPLACEMENT of the entire question set (sending [] deletes all questions; omitting it leaves them untouched). If the survey already has responses its structure is locked: replacing questions is rejected with 409 — do not retry, explain to the user that responses protect the structure. At least one of survey_name, status, archived, settings or questions is required. Use status false to disable a survey without losing data (the safe alternative to delete_survey). Visual configuration (Visuals/Pages/LogoFile) is ignored here. Requires the Surveys module enabled — on 403 "module is not enabled", do NOT retry; tell the user to contact Sweeppea support. DISPLAY RULE: never show SurveyToken UUIDs.

Pre-calls required

  1. get_survey — check IsLocked before attempting to replace questions

Parameters to validate before calling

  • survey_token (string, required) — The survey token (UUID v4) of the survey to update

  • survey_name (string, optional) — New survey name (max 200 characters, cannot be emptied, optional)

  • status (boolean, optional) — true enables, false disables the survey (optional)

  • archived (boolean, optional) — true archives, false restores (optional)

  • settings (object, optional) — Settings object with PascalCase keys (written key-by-key, only sent keys change): Description, QuestionsPerPage (1-5), CollectContactInfo, ShowProgressBar, ShuffleQuestions, AllowMultipleResponses, ThankYouMessage, RedirectUrl, StartDate, EndDate, MaxResponses, ShowCountdown, EnableSharing, Language ("en"|"es") (optional)

  • questions (array, optional) — FULL REPLACEMENT of the question set — rejected with 409 if the survey has responses. PascalCase keys per item: {"QuestionText" (required), "FieldType" (required: text|textarea|radio|checkbox|select|slider|rating|nps|yesno|date), "Page", "QuestionDescription", "Layout", "Required", "Options": [each option is an object {"Label": "..."}], "Settings": {...}} (optional)

Notes

  • questions is a FULL REPLACEMENT of the question set — sending [] deletes all questions; omitting it leaves them untouched

  • Each Option is an object with a Label key, e.g. "Options": [{"Label": "Friend"}, {"Label": "Social media"}] — never plain strings

  • 409 when the survey has responses: the structure is locked to protect collected data — do not retry

  • To disable a survey without losing data use status false (the safe alternative to delete_survey)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
statusNotrue enables, false disables the survey (optional)
archivedNotrue archives, false restores (optional)
settingsNoSettings object with PascalCase keys (written key-by-key, only sent keys change): Description, QuestionsPerPage (1-5), CollectContactInfo, ShowProgressBar, ShuffleQuestions, AllowMultipleResponses, ThankYouMessage, RedirectUrl, StartDate, EndDate, MaxResponses, ShowCountdown, EnableSharing, Language ("en"|"es") (optional)
questionsNoFULL REPLACEMENT of the question set — rejected with 409 if the survey has responses. PascalCase keys per item: {"QuestionText" (required), "FieldType" (required: text|textarea|radio|checkbox|select|slider|rating|nps|yesno|date), "Page", "QuestionDescription", "Layout", "Required", "Options": [...], "Settings": {...}} (optional)
survey_nameNoNew survey name (max 200 characters, cannot be emptied, optional)
survey_tokenYesThe survey token (UUID v4) of the survey to update

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses nuanced behaviors well beyond the annotations: the exceptional full-replacement semantics for questions, the 409 lock when responses exist, the module-disable 403 handling, and the display rule for SurveyToken UUIDs. These add critical context that annotations alone (readOnlyHint=false, destructiveHint=false, idempotentHint=true) do not convey.

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?

The description is well-structured with clear sections, bold key warnings, and bullets, making it scannable. However, the 'questions is a FULL REPLACEMENT' warning is repeated multiple times, which adds redundancy. Overall it earns its length given the complexity, but a small trim would make it more concise.

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?

Given the tool's complexity (6 parameters, nested objects, no output schema), the description is exceptionally complete. It covers prerequisites, parameter validation, error handling (409, 403), behavioral caveats, and a display rule. The only minor omission is the return value format, but that is not essential for a mutation tool with such thorough guidance.

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?

Although schema coverage is 100%, the description enriches each parameter: it explains the key-by-key write behavior for settings, the full-replacement semantics for questions, nested option structure ('never plain strings'), and max-length constraints on survey_name. This goes far beyond the schema's type-only descriptions.

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?

The description opens with a specific verb+resource ('Update an existing survey') and immediately clarifies the partial-update semantics, which distinguishes it from create_survey and delete_survey. It also explicitly positions status=false as the safe alternative to delete_survey, further differentiating sibling tools.

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

Usage Guidelines5/5

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

A dedicated 'When to use' section states the required minimum parameters and when to choose this tool. It includes a pre-call requirement (get_survey to check IsLocked) and explicit do-not-retry guidance for 409 and 403 errors, giving the agent clear decision rules.

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.

TDQS

A3.6/5.0
Disambiguation4/5

Most tools follow a clear resource+action pattern (fetch_* for lists, get_* for single items, create/update/delete for writes), making them distinguishable. A few near-overlaps exist (fetch_billing_transactions vs fetch_wallet_transactions, draw_winners vs schedule_drawing) but the descriptions clarify the boundaries.

Naming Consistency4/5

Tool names consistently use snake_case verb_noun, with fetch_ for list operations and get_ for single-item retrieval. Some verb variation (add_participant, count_participants, draw_winners, schedule_drawing) deviates from the dominant create/fetch/update/delete pattern but remains predictable and readable.

Tool Count1/5

With 83 tools, this is far beyond a well-scoped server (typically 3-15, with 25+ considered too many). Even though the platform has broad functionality, the sheer number of tools creates significant agent confusion and selection overhead.

Completeness4/5

The sweepstakes domain is thoroughly covered: lifecycle management, participants, groups, rules, drawings, winners, calendar, notes, todos, tickets, surveys, invoices, billing, files, and entry settings. A few minor gaps exist (e.g., no general participant field update, no archive action) but the surface is remarkably complete for its scope.

Resources