Skip to main content
Glama

Review finding verdict

record_finding_verdict
Destructive

Apply a post-hoc triage verdict to a finding that was previously recorded via record_finding. Used by the /reply-to-code-review flow to persist whether a finding is TRUE / FALSE / UNCERTAIN and the FIX / DEFER / IGNORE action taken. The finding is located only by the exact finding_id returned by list_pr_findings, on ANY lifecycle status (open, fixed, or dismissed — so verdicts still apply after a PR is merged and findings were swept to dismissed). Only findings recorded into the data layer (the aictrl-dev MCP path) can receive a verdict. Idempotent: re-applying overwrites the prior verdict. A not_found response is an application error; call list_pr_findings to refresh stale IDs and do not treat the write as successful. judged_at_sha is required: send the full 40-hex commit SHA of the code you actually read. A SHA that is neither the review SHA nor a later commit of the same PR is rejected with validation_error. reasoning is required too (#5364): a verdict whose reasoning cannot be audited later is not worth storing. Each write appends to the finding's judgment history; a re-judge from the same run at the same commit updates that run's own row rather than appending a duplicate. A FALSE verdict on an OPEN finding of severity MINOR or NIT (medium/low/info) also dismisses it as a false positive, with your reason as the note; on MAJOR or BLOCKER (high/critical) it stays a suggestion a person confirms. The result reports autoDismissed (and autoDismissReason when false). A dismissal is not reopened by this tool; a person can restore the finding from the pull-request page.

Input Schema

NameRequiredDescriptionDefault
prYes
actionNoAction taken on the finding (optional).
reasonNoOptional one-line summary. NOT a substitute for `reasoning` — it is kept only for continuity with pre-#5364 verdicts and is not used for calibration.
verdictYesTriage outcome: is the finding a real, actionable issue?
evidenceNoRepo-relative locations you read to form the verdict. Each file must exist at `judged_at_sha`; a file that does not is rejected when the repository is reachable. Optional, but a verdict that cites nothing is weaker evidence.
reasoningYesRequired reasoning chain. Each part must carry at least 40 characters of substance about the code. Run bookkeeping ("[A/B wave 3]", "[re-judge 2026-07-14]") is stripped before the length is measured and is never stored, so padding with it does not help. Placeholders ("n/a", "test", "looks fine") are rejected.
finding_idYesRequired exact recorded finding id returned by list_pr_findings. This is the only supported finding selector.
repositoryYes
judged_at_shaYesRequired full 40-character commit SHA of the code the verdict was formed at. Must be the SHA the finding was reviewed at or a later commit of the same PR — a SHA outside the PR, or one that precedes the review SHA, is rejected. Send the commit you actually read, not the branch tip.
organization_idYesThe organization that owns the pull request. Call list_organizations if you do not have it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A5/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the annotations: idempotent overwrite behavior, lifecycle applicability across open/fixed/dismissed findings, validation rules for judged_at_sha, reasoning audit requirements, judgment history append/update semantics, and severity-dependent auto-dismissal with autoDismissed in the result. These details are consistent with destructiveHint=true and provide useful operational context.

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?

The description is long but appropriately dense for a complex mutation tool with ten parameters and multiple validation and lifecycle rules. It is front-loaded with the primary action and then proceeds through eligibility, idempotency, error handling, SHA constraints, and auto-dismissal behavior without wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description still reports key result behavior such as autoDismissed and autoDismissReason. It also covers all critical mutation semantics, validation constraints, and recovery guidance, leaving an agent well equipped to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is high, the description adds meaningful constraints not fully captured in the schema: finding_id is the only supported selector, judged_at_sha must be a full 40-character commit SHA from the actual code read and must not be outside the PR or precede the review SHA, and reasoning is required for later audit. It also clarifies that reason is not a substitute for reasoning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: applying a post-hoc triage verdict to a previously recorded finding. It explicitly distinguishes this tool from record_finding and list_pr_findings, and names the /reply-to-code-review flow in which it operates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool, which findings can receive a verdict, how to locate them via finding_id from list_pr_findings, and what to do on a not_found response. It also explains that only findings recorded into the data layer are eligible, which prevents inappropriate calls.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.