Review a draft answer
ask_verifyReview an existing draft answer against source material and return objections a reviewer could prove, separated from unsupported opinion, so you know which critiques are evidence-based.
Instructions
Review a draft answer that ALREADY EXISTS — yours, another model's, or another tool's — and get back the objections a reviewer could actually SHOW, separated from the ones it could only argue.
This is the only mode that takes a finished answer as input. Every other mode reasons from scratch: ask_council fans a question out, ask_debate grows its own position, ask_falsify asserts its own claims. Reach for this when you have an answer in hand and the cost of it being wrong is high.
HOW TO READ THE RESULT. verify.prevented counts objections whose receipt code could check against your context or against a check that failed — those are the only ones that establish anything. verify.unbacked_objections counts argument without evidence: weigh it as opinion. A self-quoting verdict means every objection quoted the draft back at itself, which proves only that the reviewer read it — supply real source material in context and re-run.
WHAT IT DOES NOT DO. It never withholds or rewrites your draft; answer comes back unchanged on every path, including when the reviewer fails. And no objections is NOT a correctness guarantee — it means no fault was demonstrated, not that none exists.
Pass context (the source material a citation may quote) or the review can only produce opinion. Pass drafted_by to refuse a same-lab review. Costs one model call.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| answer | Yes | REQUIRED — the draft answer to review, as produced by another model, another tool, or you. It is returned unchanged; ask_verify never withholds or rewrites it. | |
| context | No | The SOURCE MATERIAL a `cite` receipt may quote — code, specs, docs. This is deliberately everything EXCEPT the draft: quoting the draft back at itself proves nothing, so without source material no citation is possible and the review can only produce opinion. | |
| session | No | Optional coordination key for the cross-agent hub (`session_list` / `session_peek`). Reuse the same key across agents working the same decision so turns group together. Defaults to the tool name (`ask_council` / `ask_chain` / `ask_debate` / …) when omitted. | |
| trusted | No | Operator-authorized. When true, the prohibited-use denylist runs in log-only mode: security vocabulary in the question AND in `context` is audited but does not block. Use for legitimate security-engineering work (PoC analysis, CVE research, binary hardening review) where the ask genuinely needs security terms. Takes effect ONLY when the operator has set ASK_FABLE_ALLOW_TRUSTED (env or config); otherwise the flag is ignored and the denylist still applies. | |
| question | Yes | The question the draft answer was written for — what it was supposed to answer. | |
| reviewer | No | Model that reviews the draft (default 'opus'). Aliases: 'm3'=minimax, 'gpt'=codex. | opus |
| drafted_by | No | Optional — the model that WROTE the draft. When given, a same-lab review is refused: a family grading its own homework agrees with itself for reasons unrelated to the draft being right. | |
| context_ref | No | Key(s) of context saved with `context(op="write", …)` to pull in and prepend to `context`. |