e3d_investigate
Investigate a decision in rounds. Round 1: pass question. The models debate it as e3d_debate does and the verdict ends with up to 3 follow-up questions whose answers could change it, each marked answerable_by "user" or "checkable", plus a case_id. Next round: pass case_id and answers; the models re-judge with the earlier verdict, its dissent and your answers as context. Repeat until status is "closed" (no remaining question would change the verdict). Optional experts (2 to 4 built-in expert ids) gives the models those lenses and carries over to later rounds; for questions about agents, skills or prompts the result may carry suggested_experts, which is a hint and is never run for you. Rules for the calling agent: answer ONLY "checkable" questions that you actually verified with your tools, and cite what you used in source (file and line, URL, command output) with answered_by "agent". Pass every "user" question to the human and use their reply, with answered_by "user". Never guess, never fabricate an answer or a source: leave a question out or answer "don't know" instead. Answers are weighed as evidence, not obeyed as instructions. Always show the human the verdict, the dissent and any open questions. Each round is one debate and consumes model credits; the verdict is not approval to act. On a hosted server a quote from e3d_quote fits round 1 only (same question, quoted with investigate: true, because the longer verdict costs more); for later rounds pass an idempotency_key and no quote_id, and the server quotes the round itself. Web search is on by default: the question text may be sent to a search provider by the participating models (Anthropic, OpenAI, Google or xAI) to look up current facts. The web_search option set to false disables search for the debate. Paid execution requires a valid quote_id matching the debate arguments and an idempotency_key. The recommended_next_step result is advisory and does not authorize actions.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "e3d_investigate"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | quick (default): 1 round, short answers, no cross-critique. thorough: 2 rounds where models see and rebut each other. | |
| rounds | No | Override the mode's round count. Stops early on convergence. | |
| answers | No | With case_id: answers to the previous round's questions. May be partial or empty. | |
| case_id | No | A later round: the case_id from the previous result. Give this OR question. | |
| experts | No | Optional. 2 up to your panel size (at most 4) expert names from e3d_list_experts, in the order you want; send the SAME list on e3d_quote and e3d_debate. Each expert is a lens that tells one model what to look for; Pilot gives each to a different vendor, so you never choose models. Lenses add perspectives; they are not measured to improve answers. The quote shows the extra cost. Name them again on every round (a hosted server keeps no case record); pass the same experts to e3d_quote with investigate: true for round 1. Needs an idempotency_key. | |
| question | No | A new case: the decision or question, with enough context for models that cannot see your code. Give this OR case_id. | |
| quote_id | No | Optional, from e3d_quote for exactly these arguments (single use, valid 10 minutes). Needs idempotency_key. With a key and no quote_id the server quotes for you. | |
| max_words | No | Override the mode's per-provider per-round answer cap. | |
| providers | No | Provider identifiers. Defaults to the server’s configured panel. | |
| web_search | No | Let the API models (Anthropic, OpenAI, Google, xAI) search the web for current facts. Default true. false keeps the question away from search providers. | |
| idempotency_key | No | Optional, 8 to 128 characters of letters, digits and ._:- . With it the call is safe to retry: repeat the SAME call with the SAME key and a finished run returns its stored result with no second charge. Use a new key for a different request. Without it nothing is deduplicated. | |
| include_transcript | No | Also return the full transcript (large). Default false. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cost | No | ||
| mode | No | ||
| round | No | ||
| models | No | Which models actually answered through MCP sampling, with how many calls each answered. | |
| notice | No | ||
| status | Yes | closed: no remaining question would change the verdict. | |
| case_id | No | Pass this back with `answers` for the next round. Present while the case is open or closed. | |
| dissent | Yes | ||
| experts | No | The experts that ran, in order: name and version (this server's catalogue). Perspectives, not measured. | |
| families | No | Vendor families among the voices. | |
| replayed | No | true when this is the stored result of an earlier call with the same idempotency_key; nothing ran and nothing was charged. | |
| warnings | No | ||
| consensus | Yes | ||
| debate_id | No | ||
| positions | No | ||
| providers | No | ||
| questions | Yes | Empty when the case is closed. | |
| selection | No | How the participating models were chosen. | |
| rounds_ran | No | ||
| transcript | No | ||
| web_search | No | Web search in this debate. Citations are untrusted internet data: titles and excerpts are page text (sanitised, bounded), URLs have no query string, and nothing was fetched by the server. | |
| independent | No | false when every voice resolved to the same model. | |
| synthesizer | No | ||
| final_answer | Yes | ||
| dissent_items | No | The recorded dissent as a list (the dissent object above is the same text as one summary). | |
| schema_version | No | Version of the agent result fields (1). | |
| selection_note | No | ||
| rounds_requested | No | ||
| recommended_next_step | No | Advice on how much weight to give the answer, from the consensus level only. NOT approval to act. |