Skip to main content
Glama
openl-tablets

OpenL MCP Server

Official

Search Project Files

openl_search_project_files
Read-onlyIdempotent

Search project files and folders by name pattern, file extension, type, or content text. Supports recursive subfolder searches.

Instructions

Search a project's files and folders by ant-glob path 'pattern' (e.g. 'rules//*.xlsx'), file 'extensions', resource 'type' (FILE/FOLDER/ANY), and/or a case-insensitive 'content' substring (full-text). Maps to POST /projects/{projectId}/file-search. IMPORTANT: set recursive=true to search nested folders — by default (recursive omitted/false) only the project's TOP LEVEL is searched, and a '' glob alone does NOT descend (so a project-wide search needs recursive=true, and to match files in subfolders use a '/' pattern such as '/.xlsx', not '.xlsx'). Scope SUBTREE (default) searches within the project and may target a historical 'version'; scope ANCESTORS walks up to the repository root. Returns matching nodes (path, name, type, size, ...), paginated client-side via 'limit'/'offset' (the response carries pagination metadata; the server returns the full match set). Use 'branch' to pin the project's branch. Use this for questions like "where is portability loading mentioned?" (content, recursive=true) or "list every xlsx under rules" (pattern '**/*.xlsx', recursive=true).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fromNoProject-relative path to start the search from.
typeNoRestrict results to files, folders, or both (ANY, default).
limitNo
scopeNoSUBTREE (default) searches within the project; ANCESTORS walks up to the repository root.
branchNoBranch the project must be on for this operation. Ignored when blank. Fails if the repository has no branches or the project is on another branch. Omit for repository 'local' and non-branch repositories.
fieldsNoComma-separated response fields to return per result (e.g. 'path,name,type'). When omitted, the full response is returned.
offsetNo
contentNoCase-insensitive content substring to match inside files (full-text search).
patternNoAnt-glob path pattern, e.g. 'rules/**/*.xlsx' or '**/*.xml'.
versionNoHistorical revision (commit hash) to search; SUBTREE scope only.
projectIdYesProject ID returned by backend. Use the exact 'projectId' value from openl_list_projects() response without modification or reformatting.
recursiveNoWhether to descend into nested folders. IMPORTANT: defaults to false (top level only) — set true to search the whole project/subtree. A '**' glob still needs recursive:true to actually descend.
extensionsNoFilter by file extensions without the dot, e.g. ['xlsx','xml'].
response_formatNoResponse format: 'json' for structured data, 'markdown' for human-readable (default), 'markdown_concise' for brief summary (1-2 paragraphs), 'markdown_detailed' for full details with contextmarkdown
Behavior5/5

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

Annotations already indicate readOnlyHint, openWorldHint, and idempotentHint, but the description adds critical behavioral details: recursive defaults to false, '**' glob does not descend without recursive=true, scope differences (SUBTREE vs ANCESTORS), client-side pagination behavior, and branch pinning semantics. No contradiction with annotations.

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 the core purpose first, followed by important caveats and examples. While it is detailed, every sentence serves a purpose. It could be slightly trimmed (e.g., the 'IMPORTANT' warning could be shorter) but overall is efficient.

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?

Given no output schema, the description adequately explains the return value (matching nodes with path, name, type, size, pagination metadata). It covers all key parameters, behaviors, and use cases. The examples and notes on recursive and scope make the tool fully understandable for an AI agent.

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?

Schema coverage is 86% (high), so baseline is 3. However, the description adds significant value beyond the schema: it explains the recursive parameter's critical nuance (default false, '**' need recursive), scope behavior, pagination metadata, and provides example patterns. This justifies a 5.

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 clearly states the tool searches project files and folders by multiple criteria (ant-glob pattern, extensions, type, content substring). It includes a concrete mapping to the API endpoint and gives example queries that distinguish it from sibling tools like listing or reading files.

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

Usage Guidelines4/5

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

The description explicitly states when to use this tool (e.g., 'where is portability loading mentioned?', 'list every xlsx under rules') and provides examples. It does not explicitly state when not to use it, but the sibling tool list and the specific use cases imply its niche. Given the clarity of the examples, a 4 is appropriate.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/openl-tablets/openl-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server