revue-mcp tools
revue-mcp exposes three supported tools to Claude Code, Codex, Cursor, OpenCode, and other stdio MCP clients. It is the public harness-integration boundary; callers should not integrate against Revue's internal HTTP routes.
lookup_decision
Search prior human decisions before creating an ask.
Input
| Field | Type | Required | Meaning |
|---|---|---|---|
query | string | yes | Question text or keywords to match |
concepts | string[] | no | Product areas that scope the search |
files | string[] | no | Files or contracts that scope the search |
limit | number | no | Maximum matches; defaults to 10 |
Result
Success returns status: "ok" and matches. Each match includes the decision id, original question and answer, match score, confidence, freshness, concepts, files, and reuseGuidance.
reuseGuidance | Caller behavior |
|---|---|
apply | Use the prior answer and continue without asking |
confirm | Cite the prior decision in a new question so the human confirms instead of deciding from scratch |
Transport or service failures return status: "error" with an error message.
request_decision
Request one blocking human decision. Revue performs another memory lookup defensively, groups near-duplicate asks from other agents, and waits for the answer.
Input
| Field | Type | Required | Meaning |
|---|---|---|---|
question | string | yes | One concise decision question a human can answer now |
options | string[] or object[] | no | Mutually exclusive answers; objects contain label, value, and optional consequence |
recommendation | string | no | The default the agent recommends |
concepts | string[] | no | Product areas used for grouping and reuse scope |
files | string[] | no | Files or contracts used for grouping and reuse scope |
waitSeconds | number | no | Blocking window; defaults to 50 seconds and is capped at 55 |
Result states
| Status | Fields | Caller behavior |
|---|---|---|
reused | answer, decisionId, receipt, correction, trace | Apply the remembered answer and continue; no human was interrupted |
answered | answer, lotId, decisionId, receipt, correction, trace | Apply the human answer and continue the unblocked work |
dismissed | lotId, optional reason, receipt | Terminal; do not re-ask, and proceed with the recommendation or safest reversible path |
pending | decisionRef, retryAfterSeconds, instruction | Call again with the identical question to resume the same decision |
error | error | Report the failure; continue only when safe without the decision |
Pending and idempotency
pending means the wait window ended before the human answered. It is not a rejected ask.
Call request_decision again with the same question and inputs. The server derives a stable key from the request, so recall resumes the original grouped decision instead of opening another one. Rephrasing the question can create a distinct ask and is not a valid resume mechanism.
An answered decision remains terminal even when a previous call already consumed its delivery route. A later recall resolves from the stored lot status instead of hanging back to pending.
Corrections
reused and answered results carry a correction object naming the decision and the supported human verbs: wrong, too_broad, only_this_repo, ask_next_time, and expires_after. The trace field is an inspection pointer returned by Revue; callers should treat it as opaque.
Agents cannot correct memory. If an answer looks stale or inapplicable, relay the decision id to the human. They can inspect it with revue why <decisionId> or correct it with revue correct <decisionId> <verb>.
share_context
Publish context other agents may need without creating a human interruption.
Input
| Field | Type | Required | Meaning |
|---|---|---|---|
kind | string | yes | Context kind such as finding, risk, evidence, or note |
body | string | yes | Compact context to share |
concepts | string[] | no | Product areas the context applies to |
Success returns status: "ok" and itemId. Failures return status: "error" and an error message.
Use this tool for evidence, discoveries, and risks that should help another workstream but do not require human judgment.
Configuration
Use revue connect <harness> instead of writing environment variables manually. The MCP server reads:
| Variable | Required | Meaning |
|---|---|---|
REVUE_API_URL | yes | Active Revue decision-plane URL |
REVUE_API_KEY | yes | Workspace-scoped adapter credential |
REVUE_WORKSPACE_ID | no | Pins the workspace when a credential spans several |
REVUE_THREAD_ID or REVUE_WORKSTREAM_ID | no | Pins the answer route; otherwise one stable session reference is generated per server process |
Missing required configuration stops the server at startup with a revue login hint.