Skip to main content
Glama

Report verdicts for findings (the billing event)

confirm_findings

Report REAL / NOT_REAL / UNCLEAR for each finding after verifying against the codebase. Billing: one flat price per review with at least one confirmed real bug (critical/high/medium), however many there are: $4 fast, $12 deep, $24 deep on a wide change (11+ folder chunks) (a hunt on CI billing is never charged here: it was billed when its result was fixed); low findings are never billed; free allowance first. When get_findings showed silent_bill, the hunt bills at silent_bill.at unless every medium+ finding is NOT_REAL by then: UNCLEAR does not cancel it. Call once with ALL verdicts, before fixing. To publish the approved feed story, call this tool a SECOND time with only review_id + story and no verdicts – that path exists so a client whose tool list predates post_story can still post. A review that found NOTHING is confirmed with verdicts: [] – there is nothing to judge and nothing to bill, and that call is what records the finished hunt for the merge gate.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "review_id": "<review_id>"
    },
    "name": "confirm_findings"
  }
}

Input Schema

NameRequiredDescriptionDefault
storyNoThe user-approved story for the public feed. FORMAT – write it ONCE to these budgets; never ask the user to shorten it for you. `text`: exactly 2 sentences, 220 characters max. Sentence 1 = the trap, concretely. Sentence 2 = what happens when it fires. `lesson`: up to 2 rules, ONE line each, 200 characters total – **bold imperative rule** then half a sentence of why. A rule an engineer could paste into their own guidelines unchanged. VOICE: plain short words, active, present tense. No hedging ("may potentially"), no filler ("it is important to note"), no adverbs propping up a verb, no words a junior would have to look up. Name the failure so a reader can see it happen. ENGLISH ONLY: the feed is one public wall, and a post in the language of your chat is unreadable to most of it. Translate it, do not transliterate. EXAMPLE (this length, this register): text = "A catch keyed on an interface with two members, and the tests only ever drove one of them through it. Narrow the catch to that member and every test stays green while the other error is swallowed." lesson = "**Run the last net first.** The pass that catches what others missed pays most on the earliest diff. **Never hand a reviewer a skip-this list.** They trust it, so your blind spot becomes theirs." ANONYMISE: the reader has no context on this project and must not learn anything private from it. NO NAMES OF ANY KIND: no repo, project, company, customer, vendor, model or tool; no file, module, class, function, table, column, field, config key, env var, route or endpoint; no infrastructure by name (pods, clusters, queues, databases); no code in backticks, no URLs, ticket numbers or test counts, nothing that says what the product does or for whom. NO RECIPE: tell the class of defect, never the steps that exploit it – nothing on how to skip a payment, quota, limit, check or gate, nothing on how keys, credentials or accounts are issued, stored, rotated or routed, no prices or thresholds. A reader with none of your context must find it useful; a competitor or an attacker must learn nothing about the project.
verdictsNo
review_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so for the highest-stakes trait: the entire billing model (flat price, low findings free, free allowance first, silent_bill timing) is disclosed, which the schema does not cover. Gaps remain on idempotency and finality — it never says whether a second verdicts call overrides or errors, nor what a partial verdict set does — so it falls short of fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the billing sentence is a single run-on stuffed with three parentheticals ('$4 fast, $12 deep, $24 deep on a wide change (11+ folder chunks) (a hunt on CI billing is never charged here...)'), which forces re-reading. The information is worth keeping; the packaging is not.

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

Completeness4/5

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

For a no-annotation, no-output-schema tool with a nested `story` object and a billing side effect, the description covers the non-obvious parts an agent could get wrong: the second-call story path, the empty-verdict confirmation, and silent_bill timing. It omits what the call returns and how re-invocation behaves, which are the remaining gaps.

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

Parameters3/5

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

Schema description coverage is only 33%, so the description must compensate. It adds real meaning for `verdicts` (what the three verdicts mean for billing, that UNCLEAR does not cancel a silent_bill) and the story path, but `review_id` is never explained anywhere, and the `verdicts` array itself gets no guidance on ordering or completeness. Partial compensation only.

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?

Opens with a specific verb+resource: 'Report REAL / NOT_REAL / UNCLEAR for each finding after verifying against the codebase.' It also distinguishes its own secondary mode (story publishing) from the sibling post_story, and names the empty-verdict case, so an agent knows exactly what the call does and which sibling it substitutes for.

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?

Explicit sequencing rules are given: 'Call once with ALL verdicts, before fixing', use the second story-only call to publish, and confirm a nothing-found review with 'verdicts: []'. The silent_bill branch ('bills at silent_bill.at unless every medium+ finding is NOT_REAL by then: UNCLEAR does not cancel it') tells the agent precisely when this call triggers billing versus when it does not.

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.