Skip to main content
Glama

Random Card

random_card
Read-onlyIdempotent

Draws one random card from the Pipeworx original 78-card tarot deck (Rider–Waite–Smith tradition). Returns the card, its orientation (upright or reversed, a coin-flip unless disabled), the traditional meaning for that orientation, and the seed used to reproduce the draw.

Input Schema

NameRequiredDescriptionDefault
seedNoReproduce a previous draw by passing back the seed it returned. Omit for fresh randomness.
reversalsNoAllow reversed orientation (50% chance per card). Default true; pass false to always draw upright.
session_idNoDraw from an open tarot_shuffle session instead of a fresh single-call draw (hosted only; never repeats a card within the session).

Output Schema

NameRequiredDescriptionDefault
cardNo
metaNo
seedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • addedInput schema / properties / reversals
      Added value: +{
      +  "description": "Allow reversed orientation (50% chance per card). Default true; pass false to always draw upright.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / seed
      Added value: +{
      +  "description": "Reproduce a previous draw by passing back the seed it returned. Omit for fresh randomness.",
      +  "type": "string"
      +}
    • addedInput schema / properties / session_id
      Added value: +{
      +  "description": "Draw from an open tarot_shuffle session instead of a fresh single-call draw (hosted only; never repeats a card within the session).",
      +  "type": "string"
      +}
    • addedOutput schema / properties / card
      Added value: +{
      +  "properties": {
      +    "arcana": {
      +      "type": "string"
      +    },
      +    "astrological_correspondence": {
      +      "type": "string"
      +    },
      +    "element": {
      +      "type": "string"
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "image_description": {
      +      "type": "string"
      +    },
      +    "keywords": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "meaning": {
      +      "type": "string"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "orientation": {
      +      "type": "string"
      +    },
      +    "rank": {
      +      "type": "null"
      +    },
      +    "rank_name": {
      +      "type": "null"
      +    },
      +    "suit": {
      +      "type": "null"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedOutput schema / properties / desc
      Removed value: -{
      -  "description": "Detailed description of the card",
      -  "type": "string"
      -}
    • removedOutput schema / properties / meaning_rev
      Removed value: -{
      -  "description": "Reversed meaning of the card",
      -  "type": "string"
      -}
    • removedOutput schema / properties / meaning_up
      Removed value: -{
      -  "description": "Upright meaning of the card",
      -  "type": "string"
      -}
    • addedOutput schema / properties / meta
      Added value: +{
      +  "properties": {
      +    "deck": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "version": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "procedure": {
      +      "type": "string"
      +    },
      +    "seed": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedOutput schema / properties / name
      Removed value: -{
      -  "description": "Full name of the tarot card",
      -  "type": "string"
      -}
    • removedOutput schema / properties / name_short
      Removed value: -{
      -  "description": "Short identifier for the card",
      -  "type": "string"
      -}
    • addedOutput schema / properties / seed
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / suit
      Removed value: -{
      -  "description": "Suit of the card (null for Major Arcana)",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / type
      Removed value: -{
      -  "description": "Card type (e.g. Major Arcana, Minor Arcana)",
      -  "type": "string"
      -}
    • removedOutput schema / properties / value
      Removed value: -{
      -  "description": "Card value or number",
      -  "type": "string"
      -}
    • removedOutput schema / properties / value_int
      Removed value: -{
      -  "description": "Integer representation of card value",
      -  "type": "number"
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "name",
      -  "name_short",
      -  "value",
      -  "value_int",
      -  "type",
      -  "suit",
      -  "meaning_up",
      -  "meaning_rev",
      -  "desc"
      -]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "desc": {
      +      "description": "Detailed description of the card",
      +      "type": "string"
      +    },
      +    "meaning_rev": {
      +      "description": "Reversed meaning of the card",
      +      "type": "string"
      +    },
      +    "meaning_up": {
      +      "description": "Upright meaning of the card",
      +      "type": "string"
      +    },
      +    "name": {
      +      "description": "Full name of the tarot card",
      +      "type": "string"
      +    },
      +    "name_short": {
      +      "description": "Short identifier for the card",
      +      "type": "string"
      +    },
      +    "suit": {
      +      "description": "Suit of the card (null for Major Arcana)",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "type": {
      +      "description": "Card type (e.g. Major Arcana, Minor Arcana)",
      +      "type": "string"
      +    },
      +    "value": {
      +      "description": "Card value or number",
      +      "type": "string"
      +    },
      +    "value_int": {
      +      "description": "Integer representation of card value",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "name",
      +    "name_short",
      +    "value",
      +    "value_int",
      +    "type",
      +    "suit",
      +    "meaning_up",
      +    "meaning_rev",
      +    "desc"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {}
      +]
  4. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish this as a safe, non-destructive read, so the description's job is to add draw semantics — and it does: orientation is a 50% coin flip that can be disabled, the seed makes the draw reproducible, and the response includes the meaning text. It does not describe card distribution or what happens when a session is exhausted, which keeps it below a 5.

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?

One sentence, front-loaded with the core action and deck, followed immediately by the return contract; every clause (orientation, meaning, seed) carries information an agent needs. No filler or restatement of the tool name.

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?

Annotations cover safety and an output schema covers the return shape, so the description only needs to explain draw behavior — which it does for orientation and seeding. What is missing is enough context to choose this tool over its three tarot siblings in a 45-tool namespace.

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 coverage is 100%, so the baseline is 3. The description reinforces seed (reproduce a prior draw) and reversals (coin flip unless disabled), but only restates what the schema already documents, and it says nothing about session_id — the one parameter whose behavior (session-scoped non-repeating draws) is the most consequential.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb and resource are specific and scoped: 'draws one random card' from a named 78-card RWS tarot deck, with the return payload enumerated. The singular 'one card' implicitly separates it from draw_cards, but no sibling is named explicitly, so the distinction must be inferred from tool names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the description's singular framing; there is no statement of when to call this versus draw_cards, tarot_spread, or tarot_shuffle. The session_id schema field is the only pointer to an alternative workflow, and that pointer lives in the schema, not the description.

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.