Server provides 5 well-named, read-only tools with complete input schemas and reasonable descriptions. Naming follows verb_noun convention (search, advanced-search, count-matches, list-files, list-file-types). All tools have descriptions 50-200+ characters. Input schemas are properly typed with descriptions for all parameters. However, output schemas are completely undocumented, the LLM must infer result structure from tool names alone. Error handling is minimal (basic stderr capture, no recovery guidance). No parameter constraints (enums for file types, bounds for numeric limits). Security is appropriate for read-only tools but path injection risks exist via the 'path' parameter. Tool composition is clean, each has single responsibility. Missing: output schema documentation, actionable error messages, input validation/constraints.
Advanced search with ripgrep with more options
Count matches in files using ripgrep
List all supported file types in ripgrep
List files that would be searched by ripgrep without actually searching them
Search files for patterns using ripgrep (rg)
Output schemas are completely undocumented. LLMs must infer result structure (columns, field names, data types) from tool names alone. This forces imprecise response parsing and risks token waste when results are verbose.
No parameter constraints (enums, ranges, patterns). 'fileType' accepts free-form strings with no enum of valid types (js, py, etc.). 'maxResults' and 'context' accept unbounded numbers, LLM could pass context=10000 causing runaway output. 'caseSensitive' description says 'default: auto' but schema has no default.
'path' parameter accepts arbitrary strings with no validation. No mention of security constraints (e.g., must be absolute, no symlink traversal, no parent directory access). LLM could pass paths like '../../../etc/passwd' or absolute paths outside intended search scope.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Error handling is minimal. Code accepts exit code 1 (ripgrep's 'no matches' signal) but provides no structured error messages. If ripgrep fails with exit code 2 (invalid regex), the LLM sees raw error text with no recovery guidance (e.g., 'Try escaping special characters' or 'Call list-file-types to verify file patterns').
No pagination support. 'search' and 'advanced-search' accept a 'maxResults' limit but no offset/page parameter or total count in response. If an LLM needs to iterate through large result sets, it cannot.
Boolean parameters lack clarity on defaults. 'caseSensitive', 'useColors', 'fixedStrings', etc. have no explicit default or required flag. JSON Schema should clarify which are optional and what the default behavior is.