Skip to main content
Glama

imho.run game recommendations

Find a game by description

find_game_by_description
Read-only

Identify a game from a description of what the user remembers (plot, look, platform, era). Returns ranked candidates with a reason each, a confidence, and find_game_url: imho.run's /find-game page with the description filled in (the user presses the button; nothing runs by itself). Pass what the user said about the platform, the release years and the camera as platform, year_min / year_max and perspective instead of leaving them only in the text. When confidence is not high or no result fits, give the user find_game_url so they can add details there. Slow (LLM) and rate-limited: use it only when the user does not know the title; for games similar to a known game use games_like or recommend. Games rated for adults only (explicit sexual content) are not covered; filtering is best effort.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
langNoen
platformNoWhere the user played it, if they said (a platform family).
year_maxNoLatest plausible release year, if the user gave an era.
year_minNoEarliest plausible release year, if the user gave an era.
descriptionYesWhat the user remembers about the game, in their words.
perspectiveNoCamera: first person, third person, top-down or side view.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
langYes
sourceYes
resultsYes
tool_urlYes
confidenceNo
attributionYes
find_game_urlNo/find-game with the description filled in, for the user to refine.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "attribution": {
      +      "title": "Attribution",
      +      "type": "string"
      +    },
      +    "confidence": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Confidence"
      +    },
      +    "find_game_url": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "/find-game with the description filled in, for the user to refine.",
      +      "title": "Find Game Url"
      +    },
      +    "lang": {
      +      "enum": [
      +        "en",
      +        "ru"
      +      ],
      +      "title": "Lang",
      +      "type": "string"
      +    },
      +    "results": {
      +      "items": {
      +        "properties": {
      +          "igdb_url": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "title": "Igdb Url"
      +          },
      +          "name": {
      +            "title": "Name",
      +            "type": "string"
      +          },
      +          "platforms": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "title": "Platforms",
      +            "type": "array"
      +          },
      +          "rank": {
      +            "title": "Rank",
      +            "type": "integer"
      +          },
      +          "steam_appid": {
      +            "anyOf": [
      +              {
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "title": "Steam Appid"
      +          },
      +          "steam_url": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "title": "Steam Url"
      +          },
      +          "summary": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "title": "Summary"
      +          },
      +          "url": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "description": "Its imho.run page, when we have one.",
      +            "title": "Url"
      +          },
      +          "why": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "title": "Why"
      +          },
      +          "year": {
      +            "anyOf": [
      +              {
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "title": "Year"
      +          }
      +        },
      +        "required": [
      +          "rank",
      +          "name"
      +        ],
      +        "title": "AgentFindItem",
      +        "type": "object"
      +      },
      +      "title": "Results",
      +      "type": "array"
      +    },
      +    "source": {
      +      "title": "Source",
      +      "type": "string"
      +    },
      +    "tool_url": {
      +      "title": "Tool Url",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "source",
      +    "attribution",
      +    "lang",
      +    "results",
      +    "tool_url"
      +  ],
      +  "title": "FindGameResponse",
      +  "type": "object"
      +}
  2. Changed4 schema fields changed
    • addedInput schema / properties / perspective
      Added value: +{
      +  "description": "Camera: first person, third person, top-down or side view.",
      +  "enum": [
      +    "first",
      +    "third",
      +    "top_down",
      +    "side"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / platform
      Added value: +{
      +  "description": "Where the user played it, if they said (a platform family).",
      +  "enum": [
      +    "pc",
      +    "playstation",
      +    "xbox",
      +    "nintendo",
      +    "sega",
      +    "mobile",
      +    "browser",
      +    "arcade"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / year_max
      Added value: +{
      +  "description": "Latest plausible release year, if the user gave an era.",
      +  "maximum": 2035,
      +  "minimum": 1970,
      +  "type": "integer"
      +}
    • addedInput schema / properties / year_min
      Added value: +{
      +  "description": "Earliest plausible release year, if the user gave an era.",
      +  "maximum": 2035,
      +  "minimum": 1970,
      +  "type": "integer"
      +}
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover safety/idempotency; the description adds substantial behavioral context beyond them: it is slow (LLM-backed) and rate-limited, the returned find_game_url is user-initiated ('nothing runs by itself'), adult-only content is not covered, and filtering is best effort. These are exactly the traits an agent needs to set expectations and avoid over-calling.

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?

Front-loaded with the core purpose, and every clause carries actionable content. It is dense and slightly packs routing, latency, parameter hygiene and coverage caveats into one block, but there is no filler. Minor redundancy in restating the find_game_url fallback after already defining the field.

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?

Even though an output schema exists, the description usefully previews the return shape (ranked candidates with a reason each, a confidence, and find_game_url) and pairs it with the confidence-low workflow. For a rate-limited, non-deterministic tool it covers latency, coverage limits, and the human hand-off.

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 83%, so the schema already documents lang, platform, year bounds, perspective and description. The description still adds real guidance by telling the agent to hoist platform, release years and camera out of free text into platform, year_min/year_max and perspective, which is a usage decision the schema cannot express.

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 ('Identify a game from a description of what the user remembers') and enumerates the memory dimensions (plot, look, platform, era). It also names the sibling tools it is not (games_like, recommend), so an agent can route without opening other schemas.

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?

Explicit when-to-use ('only when the user does not know the title'), explicit alternatives for the contrasting case ('for games similar to a known game use games_like or recommend'), plus a fallback path when confidence is low or nothing fits. Nothing is left to inference.

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