Skip to main content
Glama

Change texts of a survey

limesurvey_update_survey_texts
DestructiveIdempotent

Change texts of a survey by code, also at an active survey: survey title, description, welcometext and endtext (set_language_properties per language), group title and description by group_id (set_group_properties with questiongroupl10ns)…

Instructions

Change texts of a survey by code, also at an active survey: survey title, description, welcometext and endtext (set_language_properties per language), group title and description by group_id (set_group_properties with questiongroupl10ns) and question, help and subquestion texts by question code (set_question_properties with questionl10ns on the question or subquestion). Every text is one string for every survey language or a map with some of them. Before anything is written the tool refuses: answers or attributes in texts (TEXT_NOT_WRITABLE: RemoteControl cannot write them; at an inactive survey use limesurvey_update_question_from_spec), an unknown code or a language the survey lacks (SPEC_INVALID with the path), a group of another survey (GROUP_SURVEY_MISMATCH), a row that holds an embedded data URI in any field, which LimeSurvey would remove on saving (DATA_URI_PRESENT), and an expected_fingerprint that does not match (STALE_SPEC). Returns { survey_id, survey_active, changes [{ path, language, current, desired }], changes_total, applied, verification { ok, differences }, side_effects (for example empty mail templates LimeSurvey fills on saving), collateral_changes (other fields of the saved rows that changed), fingerprint }. dry_run true only reads (write scope none) and shows the changes; its fingerprint can be passed as expected_fingerprint. If a write fails, every text the call wrote is reset and read back (TEXT_UPDATE_FAILED with rolled_back; manual_cleanup names the old values that are not back); if only the read-back after the writes fails, VERIFY_READ_FAILED says written: true. A subquestion, question or group named twice answers SPEC_INVALID. Needs the write scope content (dry run: none).

Input Schema

NameRequiredDescriptionDefault
textsYesThe texts to set.
dry_runNotrue: only show the changes; nothing is written (default false).
survey_idYesNumeric LimeSurvey survey ID.
expected_fingerprintNoThe fingerprint of a dry run: the call stops with STALE_SPEC if a text changed since.

Output Schema

NameRequiredDescriptionDefault
resultYes
workflowYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.6.0

TDQS

A4.3/5.0
Behavior5/5

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

Far exceeds what the annotations carry: it enumerates every refusal precondition with its error code (TEXT_NOT_WRITABLE, SPEC_INVALID, GROUP_SURVEY_MISMATCH, DATA_URI_PRESENT, STALE_SPEC), the rollback contract (TEXT_UPDATE_FAILED with rolled_back and manual_cleanup), the read-back failure case (VERIFY_READ_FAILED with written: true), and reports side_effects and collateral_changes. It also clarifies the scope requirement (write scope content; none for dry run).

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

Conciseness3/5

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

Every sentence is load-bearing, but it is delivered as one dense run-on paragraph with error codes and clauses stacked together, which hurts scannability for such a complex tool. Information is roughly front-loaded (what it changes first, refusals second, failure handling last), but structure is poor.

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?

For a deeply nested mutation tool it covers everything an agent needs: scope requirements, dry-run semantics, fingerprint-based staleness protection, refusal conditions, rollback guarantees, and error codes, even though an output schema already exists so return values need not be explained. Nothing critical is missing.

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

Parameters3/5

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

Schema coverage is 100% and the schema already documents the string-or-map text format, group_id, code, and scale_id semantics, so the schema does the heavy lifting. The description adds the dry_run/expected_fingerprint interplay ('its fingerprint can be passed as expected_fingerprint') but little else about individual parameters, so baseline 3 is appropriate.

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 precise verb+resource (change a survey's texts) and enumerates the exact surface: survey title/description/welcometext/endtext, group title/description by group_id, and question/help/subquestion texts by code. It names the underlying operations (set_language_properties, set_group_properties, set_question_properties) and cross-references the sibling limesurvey_update_question_from_spec, so an agent can distinguish it from neighbors.

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?

Gives clear context for use (works on active surveys, one string per language or a partial map, dry_run for read-only preview, write scope content required) and an explicit routing rule away from itself for answers/attributes at an inactive survey. It does not explicitly contrast itself against limesurvey_set_survey_properties or limesurvey_set_language_properties, which also mutate similar fields.

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

Deploy Server

Other Tools