Skip to main content
Glama

riddle_get

Read-onlyIdempotent

Gets one Riddle - or several, with UUIDs - as a compact build-configuration envelope: {uuid, type, modifiedAt, build, nextBlockId, warnings, published, context}. "build" is the same build config POST /riddle-builder accepts (see the riddle_builder_* tools) - everything the Riddle contains which cannot be expressed there is left out of "build" and reported in "warnings" instead; this never fails on content it cannot express. A property that is simply still at its block type's default is left out too, but never silently: each block carries an "omittedDefaults" map of those properties with the value each one is at - so "not in the config" does not mean "unknown". Read those values, do not resend them: many build properties enable a feature by being present at all, whatever their value. Pass omit: ["build.omittedDefaults"] to leave those maps out for a much smaller response - riddle://reference/block-defaults/ states the same defaults without a Riddle in hand. "id" and "type" are always present on every block and never omitted, and a property the block cannot accept in its current configuration is not listed either. "build" always describes the DRAFT - the version you edit; "published" describes the live version visitors see: null if never published, {"status": "identical"} if the live version is exactly what "build" shows, or {"status": "differs", "build": ..., "warnings": ...} with the live version in full when the draft has unpublished changes; unpublished changes the build config cannot express show up as {"status": "identical", "hasUnpublishedChanges": true, ...}. Every non-null "published" carries "isLive" - whether that version is online right now; it is false after riddle_unpublish, which leaves the last published version stored. Either way, call riddle_publish to make "build" live. "context" adds the extra fields an MCP client typically needs next to the build config: title, image (the Riddle's thumbnail), tags, notes, viewUrl (the public URL the Riddle is reachable under - null when it is not published or its landing page is turned off, with "viewUrlUnavailable": {reason, message} saying which of the two), features (incl. hasIntegration, consistent with riddle_list/riddle_account_list), origin (builder/aiGenerated/apiManageable - whether riddle_delete, riddle_builder_update and palette_customize will work on this Riddle, consistent with riddle_list/riddle_account_list), published/unpublished/modified state (both timestamps set = the Riddle was published and then taken offline again), duplicated (the Riddle this one was copied from, if any), project/team identity, and the preset relationship (id/parentId, whether it is merged from a parent preset and whether it has since drifted from it). Pass includeRiddleData=true to additionally receive the full stored Riddle under "riddle" - a large payload, rarely needed. Use "omit" to leave parts of all this out when you do not need them (see that parameter - it is the only way to make this call smaller), and UUIDs to read several Riddles in one call (see that parameter for its own, lower size budget).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
UUIDNoThe UUID of the single Riddle you want to read. Pass either this or UUIDs.
omitNoLeaves parts of the response out - the one way to make this call smaller. Valid values: "build", "warnings", "nextBlockId", "published", "context" (whole envelope sections) and "build.omittedDefaults" (the per-block "omittedDefaults" maps inside every build configuration in the response, including "published.build" - not a section, but by far the largest part of one). Omit the parameter, or pass [], for everything; "uuid"/"type"/"modifiedAt" are always present and cannot be left out. Which value to reach for: "build.omittedDefaults" shrinks a read-back by ~85-90% and loses no information, since riddle://reference/block-defaults/<block type> and riddle://reference/riddle-defaults/<riddle type> state the very same defaults - the right default for any call that does not specifically need to know which properties sit at their default. Whole sections are worth naming when you truly do not need them: "published" is a second full build configuration whenever the draft has unpublished changes (about half the response), while "warnings"/"nextBlockId"/"context" together are only a few percent of it - though leaving out "published" also skips re-serializing the live version entirely, and "context" skips that section's extra lookups (features/origin, cover image, preset diff), so the saving is in work as well as bytes. Whatever you leave out is echoed back in "omittedFields", so a key missing from the response never has to be read as "this Riddle has none of that", only as "I asked for it to be left out"; a call that omitted nothing carries no such key. With UUIDs, the same omissions apply to every entry.
UUIDsNoSeveral Riddles to read at once, as Riddle UUID strings, e.g. ["6FA740EW", "OllsevHa"] (max 20 - lower than the other bulk tools, since every entry here is a full build-configuration envelope, not compact state). Pass either this or UUID; rejected together with includeRiddleData: true, which would overflow the inline response size. The response is the {bulk, operation: "read", summary, results} envelope the other bulk tools answer with, but with the full riddle_get envelope per entry. Size is therefore the thing to manage: entries are read in the order you listed them, and once the response would exceed the inline size budget, the remaining ones are reported as {uuid, success: true, truncated: true, ...compact state} instead of their full envelope - never silently dropped - with a top-level "truncated" block naming those UUIDs. Put the Riddles you most need in full first, and use "omit" to fit more of them in: an unfiltered bulk read of several non-trivial Riddles will truncate. omit: ["build.omittedDefaults"] is by far the most effective (~85-90% off every entry); leaving out whole sections saves much less, a build configuration being almost the entire envelope.
includeRiddleDataNoAdditionally returns the full stored Riddle payload (content, settings, preset merge/diff, ...) under "riddle". A large payload (tens of KB) - only for inspecting raw stored data, leave it false for normal use. Not allowed together with UUIDs.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only provide readOnlyHint and idempotentHint; the description adds extensive behavioral context: it never fails on unexpressible content, omittedDefaults reports default-valued properties, published status has distinct states, isLive becomes false after unpublish, and omittedFields echoes omissions. There is no contradiction with the annotations.

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, but every segment provides necessary semantics: envelope shape, build behavior, published behavior, context fields, omit options, and bulk-read details. It is front-loaded with the core purpose and each section adds distinct information, though a more structured/scannable format would improve readability.

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?

With no output schema, the description fully defines the output contract: every envelope field, special published states, always-present properties, warnings, omittedDefaults, options for shrinking responses, and bulk-read truncation behavior. An agent has enough information to call the tool safely, correctly, and efficiently without guessing.

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% and each schema parameter already has a detailed description, so baseline is 3. The description goes beyond the schema by explaining practical consequences such as omit: ['build.omittedDefaults'] shrinking payloads by ~85-90%, bulk ordering affecting truncation, includeRiddleData overflowing inline responses with UUIDs, and the exact effect of each omit target.

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 precisely that it reads one or several Riddles by UUID and returns a compact build-configuration envelope, naming the body shape and how it relates to the riddle_builder_* tools. This clearly distinguishes it from sibling read and utility tools without ambiguity.

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 explicitly covers when to use UUID vs UUIDs, when to use omit and which values to reach for, when includeRiddleData is warranted, and what to call next (riddle_publish/riddle_unpublish). It also points to the reference resources as an alternative for defaults and explains bulk-read size management.

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