Skip to main content
Glama

List decks

list_decks
Read-only

Use this when the user asks what flashcard decks they have or what is due, or before choosing a deck to study or add cards to. Lists every deck with its due and new card counts. A name is a path: Parent::Child is a subdeck of Parent, and each deck is followed by its subdecks. A deck's counts already include its subdecks, so never add rows up. An archived deck keeps its place, with archived: true and zero counts.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNoPresent only when the account has no cards at all: what to offer.
decksYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / $defs / DeckOut / properties / goal
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/GoalOut"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Present when the deck has a goal date."
      +}
    • addedOutput schema / $defs / GoalOut
      Added value: +{
      +  "description": "A deck's goal date and how the deck stands toward it, over the deck\nand its subdecks.",
      +  "properties": {
      +    "behind_by": {
      +      "description": "New cards behind that plan; studying that many more today catches up.",
      +      "format": "uint32",
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "date": {
      +      "description": "The date, YYYY-MM-DD, on the user's calendar.",
      +      "type": "string"
      +    },
      +    "days_left": {
      +      "description": "Days until it: 0 on the day, negative once it has passed.",
      +      "format": "int64",
      +      "type": "integer"
      +    },
      +    "learned": {
      +      "description": "Cards past their first learning steps.",
      +      "format": "uint32",
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "new_per_day": {
      +      "description": "New cards a day until the last days before the date, which are kept\nfor review; null on the day and after.",
      +      "format": "uint32",
      +      "minimum": 0,
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "on_track": {
      +      "description": "Keeping to the plan made when the date was set.",
      +      "type": "boolean"
      +    },
      +    "passed": {
      +      "description": "The date has passed; the deck is studied as any other again.",
      +      "type": "boolean"
      +    },
      +    "total": {
      +      "description": "Cards in the deck and its subdecks.",
      +      "format": "uint32",
      +      "minimum": 0,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "date",
      +    "days_left",
      +    "passed",
      +    "on_track",
      +    "behind_by",
      +    "learned",
      +    "total"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "Present only when the account has no cards at all: what to offer.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  3. Changed2 schema fields changed
    • addedOutput schema / $defs / DeckOut / properties / archived
      Added value: +{
      +  "description": "Archived: kept whole but out of study; its counts are zero.",
      +  "type": "boolean"
      +}
    • changedOutput schema / $defs / DeckOut / required
      Previous value: -[
      -  "name",
      -  "due",
      -  "new"
      -]New value: +[
      +  "name",
      +  "due",
      +  "new",
      +  "archived"
      +]
  4. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/non-destructive annotations, it discloses non-obvious domain behavior: deck names are paths, subdecks are nested and listed after their parent, parent counts already include subdecks (so rows must not be summed), and archived decks appear with archived: true and zero counts. These are exactly the traits an agent could otherwise get wrong.

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

Conciseness5/5

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

Four short sentences, front-loaded with the trigger condition, then the aggregation caveat and archived-deck behavior. Every sentence carries distinct information with no restatement of the name or title.

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 zero-parameter list tool with an output schema and read-only annotations, nothing essential is missing: usage trigger, hierarchy semantics, the double-counting trap, and archived-deck handling are all covered.

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?

The tool takes no parameters, so the baseline is 4. The description's path and count-inclusion notes concern output semantics rather than inputs, and an output schema already exists, so no additional parameter meaning is required.

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 specific verb and resource (lists decks) and immediately scopes what each row contains (due and new card counts). It is clearly distinguishable from siblings like list_cards or list_tags, so an agent can pick it without opening the schema.

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 concrete trigger conditions: when the user asks what decks exist or what is due, or before choosing a deck to study or add cards to. It does not name a competing alternative or state when not to use it, which keeps it just short of the top band.

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.