{
  "type": "object",
  "properties": {
    "diff": {
      "type": "string",
      "minLength": 1,
      "description": "The unified diff (git diff output) or code snippet to review. Max 14,000 characters \u2014 if your diff is larger, split it by file or hunk and review each part separately. Example: the output of `git diff HEAD~1`."
    },
    "focus": {
      "type": "string",
      "enum": [
        "bugs",
        "security",
        "performance",
        "architecture",
        "all"
      ],
      "default": "all",
      "description": "Review focus: \"bugs\" (correctness), \"security\", \"performance\", \"architecture\", or \"all\" (default \u2014 full review, bugs prioritized)."
    },
    "context": {
      "type": "string",
      "maxLength": 3000,
      "description": "What the change is supposed to do: intent, constraints, related files or invariants reviewers cannot see from the diff alone. Improves signal, reduces false positives."
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 10,
      "description": "Model IDs to include as reviewers (2-10). Defaults to the user's preferred council. Use council_models to list available IDs."
    },
    "async": {
      "type": "boolean",
      "default": false,
      "description": "When true, return {queryId, status:\"running\"} immediately and fetch the finished review with council_result. Use when your MCP client enforces a fixed tool-call timeout, or with 4+ reviewers \u2014 async runs also give slow reasoning models a much larger time budget before they are cut off."
    }
  },
  "required": [
    "diff"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}