Skip to main content
Glama
ibm-ecm

Core Content Services MCP Server

Official
by ibm-ecm

lookup_documents_by_name

Search for documents by name using keywords and optional class filter. Returns matching documents with confidence scores to help select the correct one.

Instructions

:param keywords: Up to 3 words from the user's message that might contain the document's name. Avoid using very common words such as "and", "or", "the", etc. :param class_symbolic_name: If specified, a specific document class to look in for matching documents. The root Document class is used by default. Specify a class only if the user indicates that the documents should belong to a specific class. Use the determine_class tool to lookup the class symbolic name based on the user's message.

:returns: A list of matching documents, or a ToolError if no matches are found or there is some other problem. Each match is a DocumentMatch object with information about the document including its name and a confidence score.

Description: This tool will execute a search to lookup documents by name. A list of the most likely documents matching the keywords is returned. Use this list to select the appropriate document based on the user's message.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keywordsYes
class_symbolic_nameNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv1.0.4
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / class_symbolic_name / title
      Removed value: -"Class Symbolic Name"
    • removedInput schema / properties / keywords / title
      Removed value: -"Keywords"
    • removedInput schema / title
      Removed value: -"lookup_documents_by_nameArguments"
    • removedOutput schema / $defs
      Removed value: -{
      -  "DocumentMatch": {
      -    "description": "Information about a document that matches a search.",
      -    "properties": {
      -      "class_name": {
      -        "default": "Document",
      -        "description": "Class identifier for the document",
      -        "title": "Class Name",
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "The id of the document",
      -        "title": "Id",
      -        "type": "string"
      -      },
      -      "name": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "The name of the document",
      -        "title": "Name"
      -      },
      -      "score": {
      -        "description": "The match score, higher values indicate better matches",
      -        "title": "Score",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "score"
      -    ],
      -    "title": "DocumentMatch",
      -    "type": "object"
      -  },
      -  "ToolError": {
      -    "description": "Represents an error response from a tool execution.\n\nThis class helps the LLM understand error messages and provides suggestions\nfor potential resolutions.",
      -    "properties": {
      -      "isError": {
      -        "const": true,
      -        "default": true,
      -        "description": "Indicates that an error occurred during tool execution if value is True",
      -        "title": "Iserror",
      -        "type": "boolean"
      -      },
      -      "message": {
      -        "description": "Detailed error message",
      -        "title": "Message",
      -        "type": "string"
      -      },
      -      "suggestions": {
      -        "description": "List of suggestions for resolving the error",
      -        "items": {
      -          "type": "string"
      -        },
      -        "title": "Suggestions",
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "message"
      -    ],
      -    "title": "ToolError",
      -    "type": "object"
      -  }
      -}
    • changedOutput schema / properties / result / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "$ref": "#/$defs/DocumentMatch"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "$ref": "#/$defs/ToolError"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "description": "Information about a document that matches a search.",
      +      "properties": {
      +        "class_name": {
      +          "default": "Document",
      +          "description": "Class identifier for the document",
      +          "type": "string"
      +        },
      +        "id": {
      +          "description": "The id of the document",
      +          "type": "string"
      +        },
      +        "name": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "The name of the document"
      +        },
      +        "score": {
      +          "description": "The match score, higher values indicate better matches",
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "score"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "description": "Represents an error response from a tool execution.\n\nThis class helps the LLM understand error messages and provides suggestions\nfor potential resolutions.",
      +    "properties": {
      +      "isError": {
      +        "const": true,
      +        "default": true,
      +        "description": "Indicates that an error occurred during tool execution if value is True",
      +        "type": "boolean"
      +      },
      +      "message": {
      +        "description": "Detailed error message",
      +        "type": "string"
      +      },
      +      "suggestions": {
      +        "description": "List of suggestions for resolving the error",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "message"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties / result / title
      Removed value: -"Result"
    • removedOutput schema / title
      Removed value: -"lookup_documents_by_nameOutput"
    • addedOutput schema / x-fastmcp-wrap-result
      Added value: +true
  2. First observedv1.0.0

TDQS

A3.8/5.0
Behavior3/5

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

The description states it returns a list of matching documents or a ToolError if no matches are found. It mentions confidence scores but does not disclose if the tool is read-only or any side effects. With no annotations, the description is adequate but could be more explicit about its behavioral traits.

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 description is well-structured with parameter documentation first, followed by a concise general description. It is reasonably concise, though the param descriptions are slightly verbose and could be tightened. Nonetheless, it front-loads important details.

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?

Given the presence of an output schema (not shown but indicated), the description covers the return type (DocumentMatch with name and confidence) and error condition. For a search tool with two parameters, the description is complete enough, though it could mention pagination or result limits.

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

Parameters5/5

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

The description thoroughly explains both parameters: keywords (up to 3 words, avoid common words) and class_symbolic_name (optional, use determine_class for lookup). Since the input schema has 0% description coverage, the description fully compensates, providing clear and actionable guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for documents by name and returns matching documents. It specifies that it uses keywords from the user's message, distinguishing it from siblings like document_search or lookup_documents_by_path, though not explicitly naming alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on when to use the class_symbolic_name parameter and suggests using determine_class to find the symbolic name. However, it does not explicitly advise when to use this tool versus siblings like document_search or lookup_documents_by_path, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.