Repogent defines 9 tools with basic schemas and descriptions, but falls short of production quality. Tool names follow verb_noun convention (inspect_, start_, get_, approve_, select_, cancel_). Descriptions exist but are terse (10-50 chars), lacking context on WHEN to use each tool or what happens next. Input schemas are present but minimal, most parameters are typed as generic 'object' with only a description string, not detailed field-level schemas. No parameter descriptions beyond the top-level object. Error handling is present (ToolError wrapping) but generic; no recovery guidance. The server sanitizes outputs to prevent secret leakage, which is good, but lacks idempotency hints and confirmation patterns for destructive operations (approve_patch). Tool composition is reasonable (separate read/write/destructive operations), but parameter documentation is sparse.
Approve and apply a patch to the repository
Approve implementation plan for a run
Approve requirements for a run
Cancel an active run
Get the final report for a completed run
Get the current state of a run
Readiness check for repository inspection
Tool descriptions are too brief (10 - 50 chars). They lack context on WHEN to use each tool, what state changes occur, and what the LLM should do next. E.g., 'Approve requirements for a run' does not explain prerequisites, side effects, or whether this is idempotent.
Input schemas for most tools use generic 'object' type with only a top-level description string. No field-level schema details (type, required, constraints) are visible. E.g., 'request' param in inspect_repository_readiness and start_verified_change lacks nested field definitions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Select an executor for patch validation
Start a verified change run
Destructive tool (approve_patch) lacks confirmation or dry-run pattern. No indication that this operation is irreversible or that the LLM should seek user approval before executing. Risk annotation present but no recovery guidance.
Error responses are wrapped in ToolError with JSON detail, but the detail structure is not documented in tool descriptions. LLMs cannot predict error format or recovery steps. Generic message 'run decision could not be applied; inspect local Repogent logs' provides no actionable guidance.
No parameter descriptions for nested fields within 'request' and 'decision' objects. LLMs cannot infer what fields are required, what values are valid, or what each field controls. Requires reverse-engineering from Pydantic models not visible in tool definitions.