Governance infrastructure for AI coding agents — backend MCP server + HTTP API + services
GovForge defines 13 tools with consistent naming (verb_noun pattern: create_task, record_decision, etc.) and complete input schemas. All tools have descriptions (avg ~120 chars) and typed parameters with enums where appropriate (risk_level, verdict). However, output schemas are entirely undocumented, no tool specifies what fields are returned, forcing LLMs to guess downstream field names. Error handling is absent: no guidance on retryability, user-fixable vs fatal errors, or recovery paths. Parameter descriptions are minimal (avg ~40 chars) and lack format/constraint details. No tool declares permissions, audit trails, or idempotency guarantees. Composition is sound (each tool has one responsibility), but chaining is fragile without documented output schemas.
Approve a decision (human approval gate). Moves decision to APPROVED status.
Run the Git extractor and persist a GitChange linked to the decision.
Create a Task on the project at `project_path`. `risk_level` must be one of: low, medium, high, critical.
Retrieve full context for a decision including task, reviews, approvals, and timeline.
Import findings from an external source (e.g., SAST tool, linter) and attach them to a review.
List all open reviews for a project (reviews awaiting submission).
No output schemas documented for any tool. LLMs cannot infer what fields are returned (e.g., does create_task return task_id, task_uuid, or both?), forcing guesswork on downstream tool chaining.
No error handling guidance. Tools lack recovery hints (e.g., 'decision_id not found, call list_pending_approvals() to discover valid IDs'). No classification of retryable vs fatal errors.
Parameter descriptions are minimal (avg ~40 chars). Missing format constraints, ranges, and dependencies. E.g., 'focus' in request_review is an array but lacks element type, max length, or valid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
List all decisions awaiting human approval for a project.
Create a Decision linked to a Task. The Task's project is inherited. `risk_level` must be one of: low, medium, high, critical.
Record a disagreement with a decision (reviewer disagrees with the decision outcome).
Reject a decision (human approval gate). Moves decision to REJECTED status.
Mark a decision as REVIEW_REQUIRED and emit an event for the reviewer.
Evaluate policies for a decision; persist results + bump status if BLOCKED.
Submit a review with findings and a verdict (APPROVED, REJECTED, or NEEDS_CHANGES).
No permission declarations or audit trail documentation. Tools like approve_decision and reject_decision lack scope hints (e.g., 'requires: approve:decision'). No indication of who called what or when.
List tools (list_open_reviews, list_pending_approvals) lack pagination parameters (limit, offset, cursor). No indication of result caps or whether results are truncated.