Skip to main content
Glama

Recommend books from a description

recommend_from_description
Read-only

Book recommendations from a mood, theme or subject in the reader's words: "cozy fantasy with found family", "a good book about grief", "something light for the beach". Matches meaning, not titles. For a linked reader, books they already have, hid or avoided are left out, and a result that fits their taste says why.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "description": "<description>"
    },
    "name": "recommend_from_description"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNo
isFictionNo
descriptionYesWhat the reader is after, in plain language

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description adds real behavioral context beyond them by disclosing that for a linked reader, already-owned, hidden, or avoided books are filtered out and that matches come with a rationale. It doesn't state result count behavior, whether the catalog is fixed, or how de-duplication is determined, 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.

Conciseness4/5

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

A single dense sentence front-loads the core purpose and then spends its remaining words on examples, which genuinely earn their place by defining the free-text input. The final clause about excluding owned/hidden books and explaining fit is slightly crowded into the same sentence but still readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and three simple parameters, the description covers purpose, input style, and personalization filtering well. It is incomplete for the two optional parameters, though, leaving an agent guessing how `limit` affects results and whether `isFiction` narrows or biases the recommendation set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%: `description` is documented, but `limit` (default 5, max 10) and `isFiction` have no schema text and no mention in the tool description. The examples do clarify what kind of free text `description` expects, but the ambiguity around whether `isFiction` is a hard filter or a soft hint is left entirely unresolved.

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?

The description names a specific verb+resource (book recommendations) and pins the input domain to a reader's own words for a mood, theme, or subject. The clause "Matches meaning, not titles" directly separates it from the sibling recommend_from_titles, so an agent can route between the two without opening either 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?

Three concrete example queries ("cozy fantasy with found family", "a good book about grief", "something light for the beach") make the intended use case unmistakable, and the semantic-vs-title distinction gives an implicit exclusion rule. It stops short of naming recommend_from_titles or what_to_read_next as explicit alternatives, so routing against siblings is still partly 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