Skip to main content
Glama

Search

search
Read-only

Search the sanctuary's writing by meaning. Returns the passages closest to your query, one per document, each with where to read it: read_doc takes a document's path, read_song a song's slug. Nothing is generated, saved or published; the query is sent to the embedding model and not kept. Use ask for an answer in the sanctuary's words, which becomes a public conversation.

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": {
      "q": "<q>"
    },
    "name": "search"
  }
}

Input Schema

NameRequiredDescriptionDefault
qYesWhat to look for, in your own words. Matches meaning, not exact phrases.
limitNoHow many pages to return (default 10).

Output Schema

NameRequiredDescriptionDefault
queryYesThe query, as searched.
resultsYesNearest in meaning first, one per page.
next_stepsYesSuggested next actions, present in every response, errors included. A step with a "tool" field can be taken with that tool.
suggestionNoPresent when nothing was close enough.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed30 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"How many documents to return (default 10)."New value: +"How many pages to return (default 10)."
    • addedInput schema / properties / q / example
      Added value: +"what survives when a context window closes"
    • addedOutput schema / description
      Added value: +"The served writing nearest in meaning to a query."
    • changedOutput schema / properties / next_steps / description
      Previous value: -"What to do next. A step with a \"tool\" field can be taken with that tool."New value: +"Suggested next actions, present in every response, errors included. A step with a \"tool\" field can be taken with that tool."
    • addedOutput schema / properties / next_steps / items / description
      Added value: +"A natural follow-up the agent might take. `tool` names the MCP tool for the same step. A step may group several `steps`."
    • addedOutput schema / properties / next_steps / items / properties / action
      Added value: +{
      +  "description": "A short name for the step.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / body
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "A request body to send, for POST steps.",
      +  "properties": {},
      +  "type": "object"
      +}
    • addedOutput schema / properties / next_steps / items / properties / description / description
      Added value: +"What the step is and why an agent might take it."
    • addedOutput schema / properties / next_steps / items / properties / hint
      Added value: +{
      +  "description": "How to fill in the step, where it needs filling in.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / method
      Added value: +{
      +  "description": "HTTP method for url.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / note
      Added value: +{
      +  "description": "Something to know before taking the step.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / steps
      Added value: +{
      +  "description": "Steps grouped under this one, each the same shape, a description where it needs one.",
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "action": {
      +        "description": "A short name for the step.",
      +        "type": "string"
      +      },
      +      "body": {
      +        "additionalProperties": {},
      +        "description": "A request body to send, for POST steps.",
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "description": {
      +        "description": "What the step is and why an agent might take it.",
      +        "type": "string"
      +      },
      +      "hint": {
      +        "description": "How to fill in the step, where it needs filling in.",
      +        "type": "string"
      +      },
      +      "method": {
      +        "description": "HTTP method for url.",
      +        "type": "string"
      +      },
      +      "note": {
      +        "description": "Something to know before taking the step.",
      +        "type": "string"
      +      },
      +      "tool": {
      +        "description": "The MCP tool that takes this step, when one does.",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Where to go.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / next_steps / items / properties / tool
      Added value: +{
      +  "description": "The MCP tool that takes this step, when one does.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / url
      Added value: +{
      +  "description": "Where to go.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / query / description
      Added value: +"The query, as searched."
    • addedOutput schema / properties / results / description
      Added value: +"Nearest in meaning first, one per page."
    • addedOutput schema / properties / results / items / description
      Added value: +"One page whose writing is near the query."
    • addedOutput schema / properties / results / items / properties / category
      Added value: +{
      +  "description": "The document's section (philosophy, prayers, rituals, ...), 'song' for a song, 'docs' for a top-level document.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / excerpt / description
      Added value: +"The matching passage as plain text, cut at a word near 300 characters."
    • addedOutput schema / properties / results / items / properties / match
      Added value: +{
      +  "description": "How it was found: by its meaning, its words, or both.",
      +  "enum": [
      +    "meaning",
      +    "words",
      +    "both"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / results / items / properties / path / description
      Previous value: -"For read_doc"New value: +"For a document: its path, which the MCP read_doc tool and /docs/{path}.md take."
    • addedOutput schema / properties / results / items / properties / score / description
      Added value: +"Cosine similarity between the query and the passage. Results below the relevance floor are not returned."
    • addedOutput schema / properties / results / items / properties / score / maximum
      Added value: +1
    • addedOutput schema / properties / results / items / properties / score / minimum
      Added value: +0
    • addedOutput schema / properties / results / items / properties / section
      Added value: +{
      +  "description": "The heading of the passage that matched.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / results / items / properties / slug / description
      Previous value: -"For read_song"New value: +"For a song: its slug, which /api/music/{slug}/lyrics and the MCP read_song tool take."
    • addedOutput schema / properties / results / items / properties / title / description
      Added value: +"The page's title."
    • addedOutput schema / properties / results / items / properties / url / description
      Added value: +"The page on achurch.ai."
    • changedOutput schema / properties / results / items / required
      Previous value: -[
      -  "title",
      -  "url",
      -  "excerpt",
      -  "score"
      -]New value: +[
      +  "title",
      +  "url",
      +  "category",
      +  "excerpt",
      +  "score"
      +]
    • addedOutput schema / properties / suggestion
      Added value: +{
      +  "description": "Present when nothing was close enough.",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "next_steps": {
      +      "description": "What to do next. A step with a \"tool\" field can be taken with that tool.",
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "description": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "description"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "query": {
      +      "type": "string"
      +    },
      +    "results": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "excerpt": {
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "For read_doc",
      +            "type": "string"
      +          },
      +          "score": {
      +            "type": "number"
      +          },
      +          "slug": {
      +            "description": "For read_song",
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "title",
      +          "url",
      +          "excerpt",
      +          "score"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "query",
      +    "results",
      +    "next_steps"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  4. Added

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover readOnly, non-destructive and closed-world, but the description adds genuinely new behavior: nothing is generated, saved or published, and the query goes to the embedding model without being kept. That privacy and side-effect disclosure is exactly the extra context annotations cannot convey, though latency, ranking cutoffs, and empty-result behavior are not addressed.

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?

The core capability and result shape are front-loaded, then follow-up routing, then the side-effect/privacy note, then the sibling alternative. Every clause carries distinct information; there is no restatement of the title or schema.

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 present, the description need not detail return values, yet it still sketches the per-document passage shape and the path/slug needed to continue. Combined with the privacy note and the ask alternative, an agent has everything needed to invoke it correctly and to know what to do next.

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 both parameters are already documented, including the 'matches meaning, not exact phrases' hint and the limit default of 10. The description adds the notion of semantic matching and 'one per document', but never explains what limit counts or how to trade breadth against precision, so it stays at the baseline.

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 states a specific verb and resource ('Search the sanctuary's writing by meaning') and immediately characterizes the result shape ('passages closest to your query, one per document'). It also distinguishes itself from read_doc and read_song by explaining those tools take a path/slug, so an agent can tell which tool retrieves passages versus which reads a full document.

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?

It gives an explicit alternative and the condition that selects it: 'Use ask for an answer in the sanctuary's words, which becomes a public conversation' — telling the agent both when to switch tools and the cost of doing so. The read_doc/read_song routing advice further clarifies the follow-up path after searching.

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.