"""Auto-generated tool metadata.

Generated from backend/app/copilot/project.py
DO NOT EDIT MANUALLY
"""

from typing import Dict, List, Optional, TypedDict, Literal


class ToolParameter(TypedDict):
    """Tool parameter metadata."""
    name: str
    required: bool
    type: str


class ToolMetadata(TypedDict):
    """Tool metadata."""
    name: str
    description: str
    parameters: Dict[str, ToolParameter]
    category: Literal["allowed", "requiresReview", "inactive"]
    requiresReview: bool
    allowed: bool


class ToolsMetadata(TypedDict):
    """Complete tools metadata."""
    tools: List[ToolMetadata]
    categories: Dict[str, List[str]]
    version: str


# Tool metadata
TOOLS_METADATA: ToolsMetadata = {
  "tools": [
    {
      "name": "read_audiences",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_audience",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_research_goals",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_research_goal",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_studies",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_study",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_synthetic_users",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_synthetic_user",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_interview",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_study_profiles",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_study_interviews",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_solutions",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_solution",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_summary",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_knowledge_graph",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "list_files",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_file",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "get_report",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "list_reports",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "list_scratchpads",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "get_scratchpad",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "set_scratchpad",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "delete_scratchpad",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "create_audience",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "create_research_goal",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "create_solution",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "generate_audience",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "generate_study_summary",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "update_report",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "generate_full_report",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "generate_report_toc",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "read_todos",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "sync_todos",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "update_todos_status",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "update_todo_status",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "allowed",
      "requiresReview": False,
      "allowed": True
    },
    {
      "name": "create_study",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "requiresReview",
      "requiresReview": True,
      "allowed": False
    },
    {
      "name": "study_interview",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "requiresReview",
      "requiresReview": True,
      "allowed": False
    },
    {
      "name": "create_standalone_report",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "requiresReview",
      "requiresReview": True,
      "allowed": False
    },
    {
      "name": "read_plans",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "read_plan",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "read_project",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "read_subplans",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "read_subplan",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "read_suggestions",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "read_suggestion",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "read_annotations",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "read_annotation",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "read_problems",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "read_problem",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "reason",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "create_plan",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "create_subplan",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "create_annotation",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "create_problem",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "create_suggestion",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "update_plan",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "update_subplan",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "edit_study",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "update_annotation",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "edit_audience",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "edit_research_goal",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "edit_problem",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "edit_solution",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "update_suggestion",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "edit_synthetic_user",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "delete_plan",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "delete_subplan",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "delete_study",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "delete_annotation",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "delete_audience",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "delete_research_goal",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "delete_problem",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "delete_solution",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "delete_suggestion",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "regenerate_interview",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "interview_follow_up",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "regenerate_study_interviews",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    },
    {
      "name": "generate_study_knowledge_graph",
      "description": "Tool that can operate on any number of inputs.",
      "parameters": {
        "tool_input": {
          "name": "tool_input",
          "required": True,
          "type": "str"
        },
        "callbacks": {
          "name": "callbacks",
          "required": False,
          "type": "Callbacks"
        }
      },
      "category": "inactive",
      "requiresReview": False,
      "allowed": False
    }
  ],
  "categories": {
    "allowed": [
      "read_audiences",
      "read_audience",
      "read_research_goals",
      "read_research_goal",
      "read_studies",
      "read_study",
      "read_synthetic_users",
      "read_synthetic_user",
      "read_interview",
      "read_study_profiles",
      "read_study_interviews",
      "read_solutions",
      "read_solution",
      "read_summary",
      "read_knowledge_graph",
      "list_files",
      "read_file",
      "get_report",
      "list_reports",
      "list_scratchpads",
      "get_scratchpad",
      "set_scratchpad",
      "delete_scratchpad",
      "create_audience",
      "create_research_goal",
      "create_solution",
      "generate_audience",
      "generate_study_summary",
      "update_report",
      "generate_full_report",
      "generate_report_toc",
      "read_todos",
      "sync_todos",
      "update_todos_status",
      "update_todo_status"
    ],
    "requiresReview": [
      "create_study",
      "study_interview",
      "create_standalone_report"
    ],
    "inactive": [
      "read_plans",
      "read_plan",
      "read_project",
      "read_subplans",
      "read_subplan",
      "read_suggestions",
      "read_suggestion",
      "read_annotations",
      "read_annotation",
      "read_problems",
      "read_problem",
      "reason",
      "create_plan",
      "create_subplan",
      "create_annotation",
      "create_problem",
      "create_suggestion",
      "update_plan",
      "update_subplan",
      "edit_study",
      "update_annotation",
      "edit_audience",
      "edit_research_goal",
      "edit_problem",
      "edit_solution",
      "update_suggestion",
      "edit_synthetic_user",
      "delete_plan",
      "delete_subplan",
      "delete_study",
      "delete_annotation",
      "delete_audience",
      "delete_research_goal",
      "delete_problem",
      "delete_solution",
      "delete_suggestion",
      "regenerate_interview",
      "interview_follow_up",
      "regenerate_study_interviews",
      "generate_study_knowledge_graph"
    ]
  },
  "version": "1.0.0"
}

# Tool categories
ALLOWED_TOOLS: List[str] = [
  "read_audiences",
  "read_audience",
  "read_research_goals",
  "read_research_goal",
  "read_studies",
  "read_study",
  "read_synthetic_users",
  "read_synthetic_user",
  "read_interview",
  "read_study_profiles",
  "read_study_interviews",
  "read_solutions",
  "read_solution",
  "read_summary",
  "read_knowledge_graph",
  "list_files",
  "read_file",
  "get_report",
  "list_reports",
  "list_scratchpads",
  "get_scratchpad",
  "set_scratchpad",
  "delete_scratchpad",
  "create_audience",
  "create_research_goal",
  "create_solution",
  "generate_audience",
  "generate_study_summary",
  "update_report",
  "generate_full_report",
  "generate_report_toc",
  "read_todos",
  "sync_todos",
  "update_todos_status",
  "update_todo_status"
]

REQUIRES_REVIEW_TOOLS: List[str] = [
  "create_study",
  "study_interview",
  "create_standalone_report"
]

INACTIVE_TOOLS: List[str] = [
  "read_plans",
  "read_plan",
  "read_project",
  "read_subplans",
  "read_subplan",
  "read_suggestions",
  "read_suggestion",
  "read_annotations",
  "read_annotation",
  "read_problems",
  "read_problem",
  "reason",
  "create_plan",
  "create_subplan",
  "create_annotation",
  "create_problem",
  "create_suggestion",
  "update_plan",
  "update_subplan",
  "edit_study",
  "update_annotation",
  "edit_audience",
  "edit_research_goal",
  "edit_problem",
  "edit_solution",
  "update_suggestion",
  "edit_synthetic_user",
  "delete_plan",
  "delete_subplan",
  "delete_study",
  "delete_annotation",
  "delete_audience",
  "delete_research_goal",
  "delete_problem",
  "delete_solution",
  "delete_suggestion",
  "regenerate_interview",
  "interview_follow_up",
  "regenerate_study_interviews",
  "generate_study_knowledge_graph"
]


def requires_review(tool_name: str) -> bool:
    """Check if a tool requires review before execution.
    
    Args:
        tool_name: The name of the tool to check.
        
    Returns:
        True if the tool requires review, False otherwise.
    """
    return tool_name in REQUIRES_REVIEW_TOOLS


def is_allowed(tool_name: str) -> bool:
    """Check if a tool is allowed to run automatically.
    
    Args:
        tool_name: The name of the tool to check.
        
    Returns:
        True if the tool is allowed, False otherwise.
    """
    return tool_name in ALLOWED_TOOLS


def is_inactive(tool_name: str) -> bool:
    """Check if a tool is inactive.
    
    Args:
        tool_name: The name of the tool to check.
        
    Returns:
        True if the tool is inactive, False otherwise.
    """
    return tool_name in INACTIVE_TOOLS


def get_tool_metadata(tool_name: str) -> Optional[ToolMetadata]:
    """Get metadata for a specific tool.
    
    Args:
        tool_name: The name of the tool.
        
    Returns:
        Tool metadata if found, None otherwise.
    """
    for tool in TOOLS_METADATA["tools"]:
        if tool["name"] == tool_name:
            return tool
    return None


def get_tool_category(tool_name: str) -> Literal["allowed", "requiresReview", "inactive", "unknown"]:
    """Get the category of a tool.
    
    Args:
        tool_name: The name of the tool.
        
    Returns:
        The tool category or 'unknown' if not found.
    """
    metadata = get_tool_metadata(tool_name)
    return metadata["category"] if metadata else "unknown"
