stride-gpt provides 5 read-only filesystem and reference tools with clear, detailed descriptions (avg 150+ chars). All tools have explicit input schemas with typed parameters and descriptions. However, output schemas are not documented, error handling lacks recovery guidance, and tool composition could be tighter. No destructive operations, so security risk is low. Naming is verb-first and clear. Descriptions explain WHAT and WHEN but omit expected output structure.
List directory entries with type and size.
Return the catalogue of available reference cards as JSON.
Return a packaged reference card body by name. Use list_references() to discover available cards and their trigger conditions. The validation is performed by the underlying loader, which returns an error string for unknown names rather than raising.
Read a file as numbered lines, optionally limited to a 1-based inclusive range. The output starts with a header giving the file's total line count, the exact range shown and whether the byte cap cut the range short. When it did, the next line says which start_line to request to continue, so the model can page through files of any size. The numbered body is capped at MAX_FILE_SIZE bytes and cut at a line boundary so the header's range is exact; only a single line longer than the cap is itself cut.
Search for files matching a glob pattern.
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields without knowing response structure (e.g., does read_file return line_count, truncated_flag, next_start_line?). Baseline: 100% of A+ tools document return types.
Error handling lacks recovery guidance. Code shows validation (e.g., _sandbox_violation, _NESTED_QUANTIFIER_RE for ReDoS prevention) but tool descriptions do not explain what errors can occur or how to recover. E.g., 'If path traversal is denied, try a relative path within the root.'
list_directory description is generic ('List directory entries with type and size'). Does not explain when to call it vs search_files, what fields are returned, or whether it recurses. Baseline: avg param annotation 72 chars; this is 50 chars.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
search_files and read_file both accept 'path' parameter but semantics differ (glob pattern vs file path). Naming does not disambiguate. Consider 'pattern' for search_files to avoid confusion.
load_reference description mentions 'validation is performed by the underlying loader, which returns an error string for unknown names rather than raising.' This is implementation detail, not user-facing guidance. Should state: 'Returns error if name not found. Call list_references() first to discover available cards.'