Skip to main content
Glama

Search by Concept

search_concept
Read-onlyIdempotent

RETURNS QUOTABLE PASSAGES matched by MEANING (cosine similarity on Gemini embeddings, 768d) — paraphrases and adjacent phrasings match even with zero keyword overlap. PICK THIS when the modern term won't literally appear in historical texts — e.g. "distributed cognition" maps to passages about active intellect, art of memory, wax tablet metaphors; "social contract" maps to pre-Hobbesian discussions of consent and authority. → For exact words/distinctive terms use search_translations (cheaper, more precise); to list which BOOKS cover a topic use search_library; if the user named an author/work, get_book first (semantic search is expensive — reserve it for cross-corpus discovery). Similarity calibration: 0.70+ is a strong match, 0.55–0.70 is worth reading but verify, below 0.55 is mostly conceptual drift. Set max_per_book to diversify results across many books rather than cluster on one source. Each passage carries a snippet_type — quote only "translation" snippets, never "summary". Cross-cultural tip: for pre-modern or non-Western topics, also try source-tradition vocabulary — e.g. for seminal economy try "jing preservation" or "bindu yoga" or "istimnāʾ"; for masturbation try "mollities" (Latin) or "hastamaithuna" (Sanskrit) or "shouyin" (Chinese). The corpus is indexed via period translations that use tradition-internal terminology, so adjacent/euphemistic terms often surface material that modern English keywords miss.

Input Schema

NameRequiredDescriptionDefault
langNoISO code of the EDITION to read, e.g. "es". Default "en". Most books have only English — call get_book and read `editions`, or list_books with has_edition, to find the ones that do not. The response always states which edition it served.
limitNoMax passages (default 15, max 50)
queryYesA concept or natural-language description — full sentences are fine (e.g. "tools that extend the mind beyond the body"). Unlike search_translations, this does NOT require words that appear in the corpus.
authorNoKeep only passages by these authors, e.g. ["Ficino"] or ["della Porta", "Agrippa"]. Matches by name: every word you give must start a word of the book's author field.
year_toNoRestrict to books published in or before this year.
languageNoFilter by a single original language
diversityNoHow the passages are spread. Default "tradition": each ten holds at most 2 passages per tradition family and per work, so a concept query returns several traditions and not one tradition's nearest pages (a clearly closer match is never passed over). "author": at most one per author and per work, for a cross-author survey. "off": plain nearest-first; use it when looking for one known passage. A quoted query or one naming a year defaults to "off". Each passage carries its book's `tradition` when it has one.
languagesNoFilter to any of these languages, e.g. ["Sanskrit", "Arabic", "Chinese"]. Use instead of language when targeting multiple traditions.
year_fromNoRestrict to books published in or after this year (filters out modern editions and translations).
max_per_bookNoCap on passages from any single book. Useful when one book dominates the conceptual neighborhood; for one passage per author or per work use max_per_author / max_per_work.
max_per_workNoHard cap on passages from one WORK (all printings and editions of it count together, via work_id), so seven printings of De occulta philosophia are one witness, not seven.
max_per_authorNoHard cap on passages from one author; the rest are DROPPED (unlike diversity, which only re-orders). Set 1 for "N quotes from N different authors".
exclude_authorsNoDrop passages by these authors, e.g. ["Agrippa"]. Use it to iterate a survey: run, see who dominates, exclude, run again.
exclude_languagesNoExclude these languages, e.g. ["Latin", "French", "German", "English"] to surface non-Western sources.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / author
      Added value: +{
      +  "description": "Keep only passages by these authors, e.g. [\"Ficino\"] or [\"della Porta\", \"Agrippa\"]. Matches by name: every word you give must start a word of the book's author field.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / exclude_authors
      Added value: +{
      +  "description": "Drop passages by these authors, e.g. [\"Agrippa\"]. Use it to iterate a survey: run, see who dominates, exclude, run again.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / max_per_author
      Added value: +{
      +  "description": "Hard cap on passages from one author; the rest are DROPPED (unlike diversity, which only re-orders). Set 1 for \"N quotes from N different authors\".",
      +  "type": "number"
      +}
    • changedInput schema / properties / max_per_book / description
      Previous value: -"Cap on passages from any single book. Useful when one book dominates the conceptual neighborhood; set to 1–2 for diverse author/work coverage."New value: +"Cap on passages from any single book. Useful when one book dominates the conceptual neighborhood; for one passage per author or per work use max_per_author / max_per_work."
    • addedInput schema / properties / max_per_work
      Added value: +{
      +  "description": "Hard cap on passages from one WORK (all printings and editions of it count together, via work_id), so seven printings of De occulta philosophia are one witness, not seven.",
      +  "type": "number"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / diversity
      Added value: +{
      +  "description": "How the passages are spread. Default \"tradition\": each ten holds at most 2 passages per tradition family and per work, so a concept query returns several traditions and not one tradition's nearest pages (a clearly closer match is never passed over). \"author\": at most one per author and per work, for a cross-author survey. \"off\": plain nearest-first; use it when looking for one known passage. A quoted query or one naming a year defaults to \"off\". Each passage carries its book's `tradition` when it has one.",
      +  "enum": [
      +    "tradition",
      +    "author",
      +    "off"
      +  ],
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / lang
      Added value: +{
      +  "description": "ISO code of the EDITION to read, e.g. \"es\". Default \"en\". Most books have only English — call get_book and read `editions`, or list_books with has_edition, to find the ones that do not. The response always states which edition it served.",
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly/idempotent/non-destructive), but the description adds substantial extra context: similarity score calibration bands, the rule that only 'translation' snippets may be quoted and never 'summary', the diversification behavior for max_per_book, and a cost warning. This is well beyond what the annotations convey.

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 return shape and the 'PICK THIS when' trigger before any calibration detail, and the arrow-delimited segments make it scannable. It is nonetheless dense and long, with overlapping guidance (diversity vs max_per_book vs max_per_author) that could be trimmed.

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 14-parameter semantic search with no output schema, the description covers result nature, quote-eligibility of snippets, score interpretation, cost tradeoffs and cross-tradition query strategy. An agent has everything needed to call it correctly and read the 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% and each of the 14 parameters is already documented in the schema with examples and edge cases (language vs languages, max_per_author dropping vs diversity re-ordering). The description's parameter notes ('Set max_per_book to diversify') largely restate the schema, so the baseline 3 applies.

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?

Opens with a specific verb+resource+mechanism: 'RETURNS QUOTABLE PASSAGES matched by MEANING (cosine similarity on Gemini embeddings, 768d)'. It explicitly distinguishes itself from search_translations (exact words), search_library (book-level listing) and get_book, so an agent can route without opening any schema.

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?

States exactly when to pick this tool ('when the modern term won't literally appear in historical texts') with concrete examples, and names three alternatives with the conditions that select them. Also gives a cost-based exclusion ('reserve it for cross-corpus discovery').

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.