Skip to main content
Glama

palette_get

Read-onlyIdempotent

Reads the palettes - colors, fonts, button styles and background settings - of a Riddle. Returns every palette the Riddle can use (including the ones inherited from the account / project default preset) with all of its values, which palette is currently selected, which values this Riddle overrides, and the built-in palettes that can be used as a starting point. See riddle://reference/palette/fields for what each value does. Mind the size: a palette carries around 30 values and an account preset can contribute several palettes that have nothing to do with this Riddle, so the full response is easily thousands of tokens. Use "omit" to cut it down - omit: ["paletteValues"] lists the palettes by uuid and name only, which is how you find out WHICH palette you want (paletteUUID then returns that one in full), and "builtInPalettes"/"customizedValues"/"hints" drop those keys. To just read the design in effect, pass the selectedPaletteUuid from such a listing as paletteUUID.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
omitNoLeaves parts of the response out - the way to keep this call small. "paletteValues" lists every palette as {uuid, name} instead of with its ~30 values (then read the one you want with paletteUUID); "builtInPalettes", "customizedValues" and "hints" drop those keys entirely. Omit the parameter for the full response. Whatever you leave out is echoed back under "omittedFields", so a missing key never means the Riddle has none of it.
riddleUUIDYesThe UUID of the Riddle whose palettes you want
paletteUUIDNoReturn only this palette instead of all of them. Accepts a palette UUID or a built-in palette id like "default:timeless".
includeBuiltInPalettesNoInclude the full values of all built-in palettes. Defaults to false, in which case only their ids and names are listed.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is free. The description then adds considerable behavior beyond annotations: the response is easily thousands of tokens, palettes are inherited from accounts/projects, a missing palette never means 'none' because whatever you omit is echoed back under "omittedFields", and the distinction between a rare built-in listing and a full palette read. 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 section earns its keep: the first sentence fixes the purpose, the second fixes the return contract, the third warns about token bloat, and the rest explains the mitigation workflow. The structure is front-loaded and logically ordered; it is verbose only because the tool has a non-obvious task that genuinely needs explaining. Trimming I almost any of it would lose guidance.

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?

There is no output schema, so the description fully assumes the burden of explaining return shape, and it does: all palettes (including inherited), currently selected, overridden values, built-in starting points, and the callback-reference field meanings. Adding the size warning and the omittedFields echo semantics that prevent misunderstanding, this is a complete contract for calling the tool correctly.

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% (all 4 parameters have descriptions, defaults, and enum items), so the baseline is 3. The description earns a 4 by adding the orchestration the schema alone doesn't provide: how to discover WHICH palette you want (list first with omit, then fetch by paletteUUID) and how to read the design in effect by reusing the selectedPaletteUuid from the listing. This is real value added beyond the enum semantics.

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 and resource: 'Reads the palettes - names of collected colors, fonts, buttons and backgrounds - of a Riddle.' It states exactly what the tool does, which fits the read-only semantics and clearly distinguishes it from the sibling palette_customize. The scope ('a Riddle') and the return coverage (all palettes, including overrides and built-ins) are both pinned down, leaving no ambiguity about intent.

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?

The description provides a clear context and a concrete workflow: list all palettes with omit: ["paletteValues"], then read the one you want with paletteUUID, plus the tip to pass the selectedPaletteUuid to just read the design currently in effect. It does not explicitly say 'use palette_customize when you want to modify' or name alternatives, so it stops just short of explicit when/when-not guidance; the when-to-use intent is strongly implied by the read-only verb and behavior.

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

A4.1/5.0
Disambiguation5/5

Each tool has a clear, unique purpose. The riddle_builder_* variants are distinct by Riddle type, questionBank_* and riddleTemplate_* cover separate objects, and stats_* differ by scope. No two tools appear to perform the same function.

Naming Consistency4/5

Naming is largely consistent with domain prefixes (riddle_, questionBank_, riddleTemplate_, stats_, project_, palette_, reference_). Minor deviations like riddle_account_list vs. riddle_list and whoami (no prefix) and riddle_get_embed_code vs. riddle_qr_code slightly break the pattern, but overall it is predictable.

Tool Count2/5

With 62 tools, the server is far beyond the typical 3-15 well-scoped range. While each tool is functional and the breadth reflects the platform's complexity, the sheer number makes it heavy and increases the cognitive load for an agent, suggesting over-granularity.

Completeness5/5

The tool set covers the full lifecycle: create (builder variants), read (get/list), update (builder_update, rename), delete, publish/unpublish, tagging, templates, question banks, stats, projects, palettes, and reference documentation. No obvious domain operation is missing.

Resources