Skip to main content
Glama

riddle_builder_update

Edits an existing Riddle of any type with the same build configuration the riddle_builder_ tools take - but as a merge, not a rebuild: only what you send is changed. Blocks are addressed by their ID and can be added with "$create": true, removed with "$delete": true (see the "blocks" field) or reordered with "$blocksOrder" - and so are the entries of a block's "items"/"fields" and, for a Personality Test, its "personalities" (which cannot be reordered, see that field); a Placeholder's "conditions" is replaced as a whole though (see that field). Read the Riddle with riddle_get first to get its block IDs and current build configuration - what it returns under "build" is exactly the shape this takes, so it can be fed straight back in. Only Riddles that were created via the Riddle Builder tools (riddle_builder_*) or generated by the Riddle AI can be edited here - a Riddle the user built manually in the Creator can hold content this build config cannot express (riddle_get reports it as "warnings"), so editing it from here would mean editing around content you never saw, and it is rejected. Check context.origin.apiManageable on riddle_get (or "origin" on riddle_list/riddle_account_list) beforehand instead of finding out from the error; reading such a Riddle keeps working. Returns the edited Riddle in the same compact build-configuration envelope riddle_get returns ({uuid, type, modifiedAt, build, nextBlockId, warnings, published, context}). To replace a Riddle wholesale instead, build a new one with the riddle_builder_ tool of its type.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
UUIDYesThe UUID of the Riddle to edit (as returned by riddle_list / riddle_get)
omitNoLeaves parts of the returned envelope out. Values: "build", "warnings", "nextBlockId", "published", "context" (whole sections) and "build.omittedDefaults" (the per-block maps of properties left at their default, inside every build config in the response). Omit for the whole envelope. "uuid"/"type"/"modifiedAt" are always returned. Reach for omit: ["build.omittedDefaults"] on almost every build - it drops ~85-90% of the read-back and loses nothing, since riddle://reference/block-defaults/<block type> states the same defaults; what you must not do either way is resend those values. When you leave anything out the response names it under "omittedFields", so a missing key never means the Riddle has none of it. Same parameter as riddle_get's.
buildYesThe changes to apply, as a partial build configuration in the engine's own key names - the same shape riddle_get returns under "build" and the riddle_builder_<type> tools take. Only the fields you send are touched; send at least one. A field only exists for the Riddle types that have it, and unknown keys are rejected rather than ignored.
publishNoWhether to publish the Riddle after the edit; default is false, which leaves the changes in the draft. It rides along with an edit, it is not one: this tool with publish: true and an empty "build" is rejected with "Nothing to edit: send at least one of ...". To publish what is already in the draft, call riddle_publish.

TDQS

A4.3/5.0
Behavior4/5

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

With only idempotentHint:false annotated, the description carries the disclosure burden and delivers: the merge-over-rebuild semantics, the apiManageable prerequisite, the exact return envelope shape (uuid, type, modifiedAt, build, nextBlockId, warnings, published, context), the hidden data-loss hazard when resending a damaged read-back, and the fact that per-block operations (add/delete/reorder) are applied rather than being a wholesale replacement. It stops short of surfacing the deep normalization details (conditions tier-sorting, lossy overlap rewriting), which are left in the schema and reference links, so a top score is not reached.

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 long (roughly 350 words) but earns it: a genuinely complex 4-parameter tool with nested build semantics, and each sentence adds a non-obvious fact — precedence of the merge, the apiManageable gate, the read-back envelope, the wholesale-replacement alternative. The first sentence front-loads the single most important differentiator, and the warning about checking apiManageable 'beforehand instead of finding out from the error' is practical and discreet. It loses a point only because a few details are repeated in the schema (e.g. $create/$delete markers) and the structure is one dense paragraph rather than scannable.

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 the absence of an output schema and only one annotation, the description covers the essential operating conditions well: a return-shape description, a precondition check, main rejection modes, and the recommended pre-step (read with riddle_get). It also points to riddle://reference docs for the full merge-semantics rulebook, which is reasonable for a tool this size but means an agent must look those up for edge cases such as per-collection order rules.

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 description coverage is 100%, and the schema entries for UUID, omit, build, and publish are themselves rich — the blocks description already explains '$create': true, '$delete': true, and reorder markers. The description adds conceptual framing ('blocks are addressed by their ID... reordered with $blocksOrder') but does not reveal meaning the schema does not already carry, so the baseline 3 applies.

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 first sentence states a specific verb and resource: 'Edits an existing Riddle of any type' and immediately distinguishes the tool from the riddle_builder_<type> siblings by pinning down the defining trait: 'as a merge, not a rebuild: only what you send is changed.' An agent can tell this tool apart from its eleven builder siblings without reading their schemas.

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?

The description gives explicit when-to-use guidance — 'Read the Riddle with riddle_get first to get its block IDs and current build configuration' — and equally explicit when-not-to-use: only Riddles with context.origin.apiManageable can be edited, and manually built Riddles are rejected. It also names alternatives: 'To replace a Riddle wholesale instead, build a new one with the riddle_builder_<type> tool of its type.'

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.8/5.0
Disambiguation4/5

Tools are largely distinct by name and detailed descriptions, with clear prefixes (riddle_builder_*, questionBank_*, stats_*). Some potential confusion exists among the stats tools (stats_fetch vs stats_overview_fetch vs breakdowns) but descriptions clarify their different scopes. Overall, an agent can usually pick the right tool.

Naming Consistency4/5

Naming follows a predictable prefix+verb pattern within each domain (e.g., riddle_builder_quiz, riddle_builder_poll; riddle_get, riddle_publish). Minor inconsistencies exist, like the camelCase 'questionBank' and 'riddleTemplate' prefixes vs snake_case elsewhere, and 'stats_overview_fetch' ordering, but these are not chaotic and remain readable.

Tool Count1/5

With 62 tools, this far exceeds the recommended 3-15 range and even the 25+ threshold. While the server covers a broad domain, the extreme number overwhelms and makes tool selection harder, fitting the 'extreme mismatch' criterion for 50+ tools.

Completeness5/5

The tool surface is exceptionally comprehensive, covering creation, reading, updating, deleting, publishing, unpublishing, moving, tagging, template management, question banks, palettes, and various stats breakdowns. There are no obvious gaps in the lifecycle of managing interactive content, and all apparent operations are supported.

Resources