Skip to main content
Glama

riddle_list

Read-onlyIdempotent

Returns a paginated list of Riddles. With the default scope "project" they come from a single project - use projectId to name it, or omit it for the project the API key is scoped to. With scope "account" they come from the entire account instead: the personal project and every team project the user has access to, in one list - the account-wide listing is this scope, not a tool of its own; projectId and notType do not apply there and are rejected rather than ignored. Every other filter works the same in both scopes. Answers with {items, page, pageSize, total, hasMore}, where "total" is how many Riddles match the filters in total and "hasMore" whether another page follows.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, 1-indexed, 12 Riddles per page (default: 1). Zero or negative is rejected with a VALIDATION_ERROR rather than clamped.
tagsNoFilter by tag IDs (array of integers). Omit to ignore tags.
typeNoFilter by Riddle type (array of strings). Valid values: "Quiz", "Poll", "Form", "Personality", "Predictor", "Minigame", "Leaderboard", "Placeholder", "Story". Omit to include all types.
scopeNoWhat to list: "project" (default) for the Riddles of a single project, "account" for every Riddle of the account at once.
originNoFilter by how the Riddle was created: "api" (Riddle Builder API or Riddle AI) or "manual" (made in the Creator). Omit for both. A filter value only - the "origin" returned per Riddle is {builder, aiGenerated, writableByThisKey}; what that means for writes: riddle://reference/concepts/access.
searchNoSearch term to filter Riddles by title
sortByNoSort field: "created", "published", or "modified"
statusNoFilter by status: "published", "modified", or "draft". Omit to include all statuses.
notTypeNoExclude specific Riddle types (array of strings, same valid values as type). Omit to exclude nothing. Scope "project" only - the account list has no exclusion filter.
projectIdNoFilter by project ID, as returned by project_list. Omit to use the project the API key is scoped to (your personal project for a user API key). Scope "project" only.
sortOrderNoSort direction: "ASC" or "DESC"

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / origin / description
      Previous value: -"Filter by how the Riddle was created: \"api\" (Riddle Builder API or Riddle AI, so\nriddle_delete/riddle_builder_update/palette_customize work on it) or \"manual\" (built by\nhand in the Creator, where those three are rejected). Omit for both. A filter value\nonly - the \"origin\" returned per Riddle is {builder, aiGenerated, apiManageable}."New value: +"Filter by how the Riddle was created: \"api\" (Riddle Builder API or Riddle AI) or\n\"manual\" (made in the Creator). Omit for both. A filter value only - the \"origin\"\nreturned per Riddle is {builder, aiGenerated, writableByThisKey}; what\nthat means for writes: riddle://reference/concepts/access."
    • changedInput schema / properties / projectId / description
      Previous value: -"Filter by project ID; omit or null for the authenticated user's personal project. Scope \"project\" only."New value: +"Filter by project ID, as returned by project_list. Omit to use the project the API key is scoped to (your personal project for a user API key). Scope \"project\" only."
  2. Changed5 schema fields changed
    • changedInput schema / properties / notType / description
      Previous value: -"Exclude specific Riddle types (array of strings, same valid values as type). Omit to exclude nothing."New value: +"Exclude specific Riddle types (array of strings, same valid values as type). Omit to exclude nothing. Scope \"project\" only - the account list has no exclusion filter."
    • changedInput schema / properties / origin / description
      Previous value: -"Filter by how the Riddle was created: \"api\" (built via the Riddle Builder API or\ngenerated by the Riddle AI, so riddle_delete/riddle_builder_update/palette_customize\nwork on it) or \"manual\" (created by hand in the Creator, where those three are\nrejected). Omit to include both. Filter value only: the \"origin\" field returned per\nRiddle is an object {builder, aiGenerated, apiManageable}, not one of these strings."New value: +"Filter by how the Riddle was created: \"api\" (Riddle Builder API or Riddle AI, so\nriddle_delete/riddle_builder_update/palette_customize work on it) or \"manual\" (built by\nhand in the Creator, where those three are rejected). Omit for both. A filter value\nonly - the \"origin\" returned per Riddle is {builder, aiGenerated, apiManageable}."
    • changedInput schema / properties / page / description
      Previous value: -"Page number, 1-indexed, 12 Riddles per page (default: 1). Zero or negative is rejected with a VALIDATION_ERROR, not clamped to page 1 - the same contract as project_list/questionBank_list."New value: +"Page number, 1-indexed, 12 Riddles per page (default: 1). Zero or negative is rejected with a VALIDATION_ERROR rather than clamped."
    • changedInput schema / properties / projectId / description
      Previous value: -"Filter by project ID; omit or null for the authenticated user's personal project"New value: +"Filter by project ID; omit or null for the authenticated user's personal project. Scope \"project\" only."
    • addedInput schema / properties / scope
      Added value: +{
      +  "default": null,
      +  "description": "What to list: \"project\" (default) for the Riddles of a single project, \"account\" for every Riddle of the account at once.",
      +  "enum": [
      +    "project",
      +    "account"
      +  ],
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / page / description
      Previous value: -"Page number, 12 Riddles per page (default: 1)"New value: +"Page number, 1-indexed, 12 Riddles per page (default: 1). Zero or negative is rejected with a VALIDATION_ERROR, not clamped to page 1 - the same contract as project_list/questionBank_list."
  4. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive, closed-world), so this score reflects added value: the description discloses rejection-rather-than-ignore semantics for inapplicable filters in account scope and summarizes the pagination envelope. It does not describe auth/permission requirements beyond a passing reference in the origin parameter.

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?

Purpose and default scope are front-loaded, and the paragraph is dense with payload rather than filler. It is slightly long for a single block and could be split, but every sentence carries distinct information.

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 an 11-parameter, zero-required list tool with no output schema, the description supplies the response shape ({items, page, pageSize, total, hasMore}) plus the meaning of total/hasMore, and resolves the ambiguous scope/filter interactions. Nothing needed to invoke it correctly appears missing.

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 description coverage is 100%, so the 3 baseline is already met by the schema. The description adds meaning beyond it by explaining cross-scope filter applicability — notably that projectId and notType are rejected (not ignored) under scope "account", a behavior the schema does not state.

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?

Opens with a specific verb+resource ("Returns a paginated list of Riddles") and immediately disambiguates the two listing scopes, so an agent can tell what this returns without opening the schema. It is clearly distinguishable from sibling list tools (riddle_template_list, question_bank_list) by resource.

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?

Explicitly states when to use each scope: "project" (default) for a single project, "account" for the personal project plus every accessible team project. It also names the key condition that changes behavior (projectId omitted = API-key-scoped project) and states that projectId/notType are rejected in account scope.

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.

Resources