Skip to main content
Glama

Unified Search (Find)

find
Read-only

Unified search across a workspace or share — ONE query, results GROUPED BY TYPE into buckets (files, metadata [workspace only], comments), each independently paginated and health-reported. action='describe' gives the full action/param reference. storage action=search is the files-only search, with a smaller default page, files_scope/metadata_filters and the depth surface; find adds metadata-only hits and comments in the same call; metadata action=search covers lexical metadata fields alone.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryNoAlias for search (the name storage + code-mode search use).
actionYesOperation. Use 'describe' for full action reference.
detailNoFiles-bucket rows on workspaces AND shares: caps `content_snippet` (standard 600 bytes, terse 200, full untrimmed). On a WORKSPACE also the `facts` tier: standard (default) up to 8 fields WITH values, full up to 100, terse names-only so a terse row carries NO `facts`. Shares carry no facts at any tier. See action='describe'.
searchNoSearch query string. 1-1024 chars; empty/blank rejected (platform 1605). Searched across every applicable bucket. (Alias: query.)
share_idNoAlias for profile_id when profile_type=share.
search_inNofilename | content | both (DEFAULT). filename = name only, find-style. content = the AI's summary + semantic, NOT grep. Sending it changes the response shape (adds a search_metadata block); omitting it reproduces today's behavior byte-for-byte. filename pairs with name_match.
context_idNoAlias for profile_id.
name_matchNoauto (DEFAULT) | exact | prefix | contains | glob. exact = whole name; prefix = starts with; contains = substring — those three are LITERAL (* and ? are ordinary chars). glob = wildcards over the WHOLE name: *.pdf, report-*.xlsx. No pre-escaping needed. Applies when search_in is filename or both; auto keeps today's relevance. Precise modes cap the pattern at 256 chars, reject an empty one.
profile_idNoWorkspace or share opaque ID (19-digit numeric ID or custom name). Pair with profile_type. Four accepted aliases besides this one (five id params total): workspace_id, share_id, context_id, instance_id — the supplied id must match profile_type (workspace_id only with profile_type=workspace, share_id only with share).
files_limitNofiles bucket page size (default 25).
instance_idNoAlias for profile_id (REST/how-to name; profile_id is canonical).
context_typeNoAlias for profile_type.
files_offsetNofiles bucket result offset (default 0).
profile_typeNoProfile to search: "workspace" or "share". (Alias: context_type.)
workspace_idNoAlias for profile_id when profile_type=workspace.
case_sensitiveNoCase-sensitive matching for exact/prefix/contains/glob. Default false (like find -iname), which folds non-ASCII too. Ignored under name_match=auto.
comments_limitNocomments bucket page size (default 25).
metadata_limitNometadata bucket page size (default 25). Workspace only — dropped from the request on a share (shares have no metadata bucket).
comments_offsetNocomments bucket result offset (default 0).
metadata_offsetNometadata bucket result offset (default 0). Workspace only — dropped from the request on a share (shares have no metadata bucket).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / name_match / description
      Previous value: -"auto (DEFAULT) | exact | prefix | contains | glob. exact = whole name; prefix = starts with; contains = substring — those three are LITERAL (* and ? are ordinary chars). glob = wildcards over the WHOLE name: *.pdf, report-*.xlsx. Do NOT pre-escape. Applies when search_in is filename or both; auto keeps today's relevance. Precise modes cap the pattern at 256 chars, reject an empty one."New value: +"auto (DEFAULT) | exact | prefix | contains | glob. exact = whole name; prefix = starts with; contains = substring — those three are LITERAL (* and ? are ordinary chars). glob = wildcards over the WHOLE name: *.pdf, report-*.xlsx. No pre-escaping needed. Applies when search_in is filename or both; auto keeps today's relevance. Precise modes cap the pattern at 256 chars, reject an empty one."
    • changedInput schema / properties / search_in / description
      Previous value: -"filename | content | both (DEFAULT). filename = name only, find-style. content = the AI's summary + semantic, NOT grep. OMIT unless you mean it — sending it changes the response shape (adds a search_metadata block); omitting reproduces today's behavior byte-for-byte. Pair filename with name_match."New value: +"filename | content | both (DEFAULT). filename = name only, find-style. content = the AI's summary + semantic, NOT grep. Sending it changes the response shape (adds a search_metadata block); omitting it reproduces today's behavior byte-for-byte. filename pairs with name_match."
  2. Changed1 schema field changed
    • changedInput schema / properties / detail / description
      Previous value: -"WORKSPACE files rows only — the per-row tier for extracted fields (`facts`); a share carries none at any tier. Default standard: up to 8 fields WITH their values. full: up to 100. terse asks for a names-only list this tool cannot render, so a terse row carries NO `facts` at all. See action='describe'."New value: +"Files-bucket rows on workspaces AND shares: caps `content_snippet` (standard 600 bytes, terse 200, full untrimmed). On a WORKSPACE also the `facts` tier: standard (default) up to 8 fields WITH values, full up to 100, terse names-only so a terse row carries NO `facts`. Shares carry no facts at any tier. See action='describe'."
  3. Changed1 schema field changed
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "WORKSPACE files rows only — the per-row tier for extracted fields (`facts`); a share carries none at any tier. Default standard: up to 8 fields WITH their values. full: up to 100. terse asks for a names-only list this tool cannot render, so a terse row carries NO `facts` at all. See action='describe'.",
      +  "enum": [
      +    "terse",
      +    "standard",
      +    "full"
      +  ],
      +  "type": "string"
      +}
  4. Changed4 schema fields changed
    • addedInput schema / properties / case_sensitive
      Added value: +{
      +  "description": "Case-sensitive matching for exact/prefix/contains/glob. Default false (like find -iname), which folds non-ASCII too. Ignored under name_match=auto.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / name_match
      Added value: +{
      +  "description": "auto (DEFAULT) | exact | prefix | contains | glob. exact = whole name; prefix = starts with; contains = substring — those three are LITERAL (* and ? are ordinary chars). glob = wildcards over the WHOLE name: *.pdf, report-*.xlsx. Do NOT pre-escape. Applies when search_in is filename or both; auto keeps today's relevance. Precise modes cap the pattern at 256 chars, reject an empty one.",
      +  "enum": [
      +    "auto",
      +    "exact",
      +    "prefix",
      +    "contains",
      +    "glob"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / profile_id / description
      Previous value: -"Workspace or share opaque ID (19-digit numeric ID or custom name). Pair with profile_type. Four accepted aliases besides this one (five id params total):…"New value: +"Workspace or share opaque ID (19-digit numeric ID or custom name). Pair with profile_type. Four accepted aliases besides this one (five id params total): workspace_id, share_id, context_id, instance_id — the supplied id must match profile_type (workspace_id only with profile_type=workspace, share_id only with share)."
    • addedInput schema / properties / search_in
      Added value: +{
      +  "description": "filename | content | both (DEFAULT). filename = name only, find-style. content = the AI's summary + semantic, NOT grep. OMIT unless you mean it — sending it changes the response shape (adds a search_metadata block); omitting reproduces today's behavior byte-for-byte. Pair filename with name_match.",
      +  "enum": [
      +    "filename",
      +    "content",
      +    "both"
      +  ],
      +  "type": "string"
      +}
  5. Changed2 schema fields changed
    • removedInput schema / properties / workflows_limit
      Removed value: -{
      -  "description": "workflows bucket page size (default 25).",
      -  "maximum": 9007199254740991,
      -  "minimum": 1,
      -  "type": "integer"
      -}
    • removedInput schema / properties / workflows_offset
      Removed value: -{
      -  "description": "workflows bucket result offset (default 0).",
      -  "maximum": 9007199254740991,
      -  "minimum": 0,
      -  "type": "integer"
      -}
  6. Changed4 schema fields changed
    • addedInput schema / properties / instance_id
      Added value: +{
      +  "description": "Alias for profile_id (REST/how-to name; profile_id is canonical).",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / profile_id / description
      Previous value: -"Workspace or share opaque ID (19-digit numeric ID or custom name). Pair with profile_type. Three accepted aliases besides this one (four id params total):…"New value: +"Workspace or share opaque ID (19-digit numeric ID or custom name). Pair with profile_type. Four accepted aliases besides this one (five id params total):…"
    • addedInput schema / properties / query
      Added value: +{
      +  "description": "Alias for search (the name storage + code-mode search use).",
      +  "maxLength": 1024,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / search / description
      Previous value: -"Search query string. 1-1024 chars; empty/blank rejected (platform 1605). Searched across every applicable bucket."New value: +"Search query string. 1-1024 chars; empty/blank rejected (platform 1605). Searched across every applicable bucket. (Alias: query.)"
  7. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, open-world behavior, so the safety profile is covered. The description adds real context beyond that: the bucket model (files, metadata workspace-only, comments), independent pagination, and health reporting. It omits any auth or rate-limit notes, but the annotation baseline makes this solid.

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?

Three dense sentences with the core purpose front-loaded before the sibling comparisons. Nothing is wasted, though the middle sentence is heavily parenthetical and slightly harder to parse on first read.

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

Completeness4/5

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

For a 20-parameter tool with no output schema, the description conveys the essential shape of results (typed buckets, per-bucket pagination) and defers detail to action='describe'. That is close to sufficient, though a single clause on what 'health-reported' means for a bucket would close the remaining gap.

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 the schema already documents all 20 parameters including enums, aliases and pagination defaults. The description adds only a pointer to action='describe' for the full action/param reference and does not elaborate meaning beyond what the schema carries. Baseline 3 is appropriate.

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 ('unified search across a workspace or share') and immediately clarifies the distinguishing behavior — results grouped by type into buckets. It explicitly separates itself from the two closest siblings (`storage action=search` and `metadata action=search`), so an agent can route without opening 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?

Names the alternatives and the exact condition selecting each: storage is files-only with a smaller page and depth surface, metadata covers lexical metadata alone, and find adds metadata-only hits plus comments in one call. It also routes deep dives to action='describe'. This is explicit when/when-not guidance.

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