Skip to main content
Glama

Search your library

search
Read-onlyIdempotent

Search the USER'S COLLECTION by title, creator, genre, or theme. Literal keyword match only - the query must actually appear in the item's title/creator/genre/theme text, or it returns nothing. Returns items they own with status, ratings, and for box sets, the list of contained albums. Use this to answer questions about what the user has. For generic, thematic, mood, or conceptual queries (e.g. "something about grief", "a film podcast") where the exact wording may not appear in any field, use search_library instead - it searches by meaning, not keyword.

Input Schema

NameRequiredDescriptionDefault
queryYesSearch query (matches title, author/artist/director/creator, genres, or themes)
filterNoFilter by status or rating. Books: all, reading, finished, unread, abandoned, rated, unrated. Movies/shows: all, watching, watched, unwatched, abandoned, rated, unrated. Anime: also plan_to_watch, completed, saved, on_hold, dropped. Albums: all, listening, played, unheard, saved, rated, unrated. Games: all, playing, played, unplayed, saved, on_hold, abandoned, rated, unrated.
media_typeYesType of media to search

Output Schema

NameRequiredDescriptionDefault
itemsYes
queryNo
totalNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / filter / description
      Previous value: -"Filter by status or rating. Books: all, reading, finished, unread, abandoned, rated, unrated. Movies/shows/anime: all, watching, watched, unwatched, abandoned, rated, unrated. Albums: all, listening, played, unheard, saved, rated, unrated."New value: +"Filter by status or rating. Books: all, reading, finished, unread, abandoned, rated, unrated. Movies/shows: all, watching, watched, unwatched, abandoned, rated, unrated. Anime: also plan_to_watch, completed, saved, on_hold, dropped. Albums: all, listening, played, unheard, saved, rated, unrated. Games: all, playing, played, unplayed, saved, on_hold, abandoned, rated, unrated."
    • changedInput schema / properties / media_type / enum
      Previous value: -[
      -  "book",
      -  "movie",
      -  "album",
      -  "show",
      -  "anime"
      -]New value: +[
      +  "book",
      +  "movie",
      +  "album",
      +  "show",
      +  "anime",
      +  "podcast",
      +  "game",
      +  "manga"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Items from the user's own library matching the request.",
      +  "properties": {
      +    "items": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "cover_url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "creator": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "genres": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": [
      +              "array",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "media_type": {
      +            "enum": [
      +              "book",
      +              "movie",
      +              "album",
      +              "show",
      +              "anime",
      +              "podcast",
      +              "game",
      +              "manga"
      +            ],
      +            "type": "string"
      +          },
      +          "rating": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "summary": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "themes": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": [
      +              "array",
      +              "null"
      +            ]
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "year": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "title",
      +          "media_type"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "query": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "total": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "items"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive, and closed-world. The description adds critical context the annotations cannot: literal-only matching, empty result on wording mismatch, and that box sets expand to contained albums. The one gap is pagination/result-limit behavior, but overall it substantially enriches the safety profile.

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?

Opens with the core scope, then the critical matching constraint, then the return summary, then the alternative-tool routing. Every sentence is load-bearing and front-loaded; no filler.

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?

With an output schema already present, the description only needs matching semantics and alternatives — both are covered. An agent has everything needed to decide between `search` and `search_library` and to set expectations on empty results.

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 description coverage is 100%, so all three parameters (query, filter, media_type) are already documented. The description restates the searchable fields (title/creator/genre/theme) but adds no syntax, escaping, or filter details beyond the schema, which is the expected baseline here.

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 with scope ('USER'S COLLECTION') and names the sibling it differs from (`search_library`). An agent can tell instantly this is literal keyword search over owned items, not semantic search or item lookup.

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 says when to use this ('questions about what the user has') and when not to, with concrete examples ('something about grief', 'a film podcast') routing to `search_library`. Every condition is stated, nothing inferred.

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