{
  "type": "object",
  "properties": {
    "prompt": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "The question or task to send to the council. Example: \"Review this NDA draft against our standard playbook terms.\""
    },
    "library_query": {
      "type": "string",
      "description": "Optional retrieval-specific query. If omitted, the main prompt is used as the retrieval query. Set this when the user's prompt has unrelated framing but the concrete documents to retrieve are described by something different."
    },
    "retrieval_limit": {
      "type": "number",
      "minimum": 1,
      "maximum": 20,
      "description": "Number of chunks to retrieve. Default: 8."
    },
    "project_id": {
      "type": "string",
      "description": "Restrict retrieval to a specific Council project workspace."
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 10,
      "description": "Model IDs to include. Defaults to the user's preferred council."
    },
    "synthesize": {
      "type": "boolean",
      "default": true,
      "description": "When true (default), include the moderator synthesis + consensus score."
    },
    "async": {
      "type": "boolean",
      "default": false,
      "description": "When true, retrieval runs immediately (sources are returned right away) but the council itself runs in the background \u2014 fetch the finished answer with council_result. Use when your MCP client enforces a fixed tool-call timeout or when querying 4+ models."
    }
  },
  "required": [
    "prompt"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}