Skip to main content
Glama

Search My Document Contents

search_my_document_contents
Read-onlyIdempotent

Search the text (body contents) of the connected person's own documents in X1, such as trusts, policies, agreements, and K-1s, when they ask what their own documents say. Returns the matching passages with document and page, sheet, or section so you can answer from them and cite the page; it does not write the answer itself. To search by document name, title, or tag instead, use the document metadata search if one is offered. To compare known files, pass up to 10 authorized documentIds in one request instead of parallel per-file calls. all_requested coverage requires a matching passage from every selected document; best_effort can return partial evidence. Neither is a complete page-by-page review. If rate-limited, wait for outstanding searches and retry one at a time. Indexing is asynchronous after every save; a just-saved document may return an honest still-indexing state with an instruction to try again shortly. Governed retrieval contract: x1-vault-v1.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum source passages to return: 1 to 10. Defaults to 6, or enough to cover the selected documents when omitted.
queryYesSearch text for your own indexed X1 Vault documents.
clientIdNoOptional member ID bound to the authenticated X1 surface.
coverageNoDefaults to best_effort. With a document selection, all_requested requires a matching passage from each selected document or returns no passages. This is passage coverage, not a complete document review.
documentIdsNoOptional IDs from an authorized document inventory. Search up to 10 selected documents in one request for comparisons; omit to search your readable Vault. IDs never grant access.

Output Schema

NameRequiredDescriptionDefault
countYes
errorNo
indexedYes
matchesYes
messageYes
coverageNo
degradedNo
indexingNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / matches / items / properties / provenance / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "end": {
      -        "exclusiveMinimum": 0,
      -        "maximum": 9007199254740991,
      -        "type": "integer"
      -      },
      -      "kind": {
      -        "const": "page",
      -        "type": "string"
      -      },
      -      "start": {
      -        "exclusiveMinimum": 0,
      -        "maximum": 9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "end",
      -      "kind",
      -      "start"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "cellRange": {
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "sheet",
      -        "type": "string"
      -      },
      -      "sheetName": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "sheetName"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "section",
      -        "type": "string"
      -      },
      -      "label": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "label"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "document",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "end": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "page",
      +        "type": "string"
      +      },
      +      "start": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "end",
      +      "kind",
      +      "start"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "cellRange": {
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "sheet",
      +        "type": "string"
      +      },
      +      "sheetName": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "sheetName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "section",
      +        "type": "string"
      +      },
      +      "label": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "label"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum source passages to return. Defaults to 6."New value: +"Maximum source passages to return: 1 to 10. Defaults to 6, or enough to cover the selected documents when omitted."
  3. Changed4 schema fields changed
    • addedInput schema / properties / coverage
      Added value: +{
      +  "description": "Defaults to best_effort. With a document selection, all_requested requires a matching passage from each selected document or returns no passages. This is passage coverage, not a complete document review.",
      +  "enum": [
      +    "best_effort",
      +    "all_requested"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / documentIds
      Added value: +{
      +  "description": "Optional IDs from an authorized document inventory. Search up to 10 selected documents in one request for comparisons; omit to search your readable Vault. IDs never grant access.",
      +  "items": {
      +    "maxLength": 128,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 10,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedOutput schema / properties / coverage
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "allRequestedRepresented": {
      +      "type": "boolean"
      +    },
      +    "kind": {
      +      "const": "matching_passages",
      +      "type": "string"
      +    },
      +    "matchedDocumentCount": {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "requestedDocumentCount": {
      +      "exclusiveMinimum": 0,
      +      "maximum": 9007199254740991,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "allRequestedRepresented",
      +    "kind",
      +    "matchedDocumentCount",
      +    "requestedDocumentCount"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "code": {
      +      "const": "rate_limited",
      +      "type": "string"
      +    },
      +    "requestId": {
      +      "maxLength": 128,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "retryable": {
      +      "const": true,
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "requestId",
      +    "retryable"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

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

With readOnlyHint/idempotentHint already declaring safety, the description adds substantial context beyond the annotations: it states the tool returns matching passages rather than writing an answer, clarifies that coverage modes are passage-level and not page-by-page reviews, and warns about asynchronous indexing and rate-limit retry behavior. These are exactly the operational traits annotations do not cover.

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?

The passage is dense but front-loaded: purpose and return behavior first, alternatives second, operational constraints last. It is longer than most tool descriptions, but nearly every sentence carries unique routing or behavioral information, so little waste is present.

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 read-only, idempotent search tool with an output schema already present and 100% schema description coverage, the description completes the picture by covering result semantics, comparison workflow, coverage-mode behavior, rate limiting, and indexing latency. An agent has everything needed to invoke it correctly.

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

Parameters4/5

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

Schema coverage is already 100%, so the schema documents all five parameters. The description still adds meaning by explaining the semantics of coverage modes (all_requested requires a matching passage from every selected document; best_effort can return partial evidence) and the compare-by-documentIds pattern. It does not discuss limit, query, or clientId semantics beyond what the schema provides.

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 text (body contents) of the connected person's own documents in X1') and explicitly distinguishes itself from the name/title/tag search alternative. An agent can immediately tell it apart from search_documents or search_my_documents without opening the 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?

It gives explicit when-to-use criteria ('when they ask what their own documents say'), names the alternative for metadata search, instructs how to compare known files (pass up to 10 documentIds instead of parallel calls), explains when each coverage mode applies, and cautions about rate limits and the still-indexing state. This is a complete routing and prerequisite guide.

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.