Skip to main content
Glama

search_text

Read-onlyIdempotent

Run a regex search over selected SQLite table columns in one call, with an optional SQL WHERE filter to narrow rows first. Returns matching key, column, and snippet rows plus totals.

Instructions

Regex search inside column values in one call: the WHERE filter narrows rows in SQL, then ripgrep matches the pattern over the selected columns. Returns CSV rows of key, column, snippet, one per matching value, plus a trailer with the totals.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoRows to return, 1 to 1000.
tableYesTable or view to search.
whereNoSQL WHERE clause (without the WHERE keyword) to narrow rows first.
columnsNoColumns to search; defaults to the text columns.
patternYesripgrep (Rust regex) pattern; literal text when fixed_strings=true.
key_columnNoColumn that identifies a row in the results; defaults to rowid, required for views.
ignore_caseNo
context_charsNoCharacters of context around the match in the snippet.
fixed_stringsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower, and the description adds genuine value beyond them: the execution model (SQL pre-filter + ripgrep) and the concrete return shape (CSV rows of key/column/snippet plus a trailer with totals). It does not misstate anything, but leaves out pagination/limit interaction detail.

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?

Two tightly packed sentences, front-loaded with the core action and mechanism, followed by the return format. No filler and nothing redundant.

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 9-parameter tool with no output schema, the description compensates well by outlining the return format and the two-stage behavior. Combined with the annotations, an agent has enough to call it correctly, though the interplay of limit/defaults and ignore_case/fixed_strings behavior is left to the schema.

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 78%, so the schema already documents most parameters (limit, where, columns, key_column, context_chars, fixed_strings). The description adds only a high-level reference to the WHERE filter, selected columns, pattern and key that maps to what the schema already says.

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?

States a specific verb+resource (regex search inside column values) and explains the two-stage mechanism: SQL WHERE narrows rows, then ripgrep matches over selected columns. It is clearly distinguishable from a generic SQL tool, though it never explicitly names a sibling like read_query for contrast.

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 implies the appropriate scenario (regex/text matching within column values) but gives no explicit when-to-use vs. when-not guidance and never routes the agent toward or away from siblings such as read_query or get_schema. Usage is left to inference.

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