from typing import Any, Protocol from pydantic import BaseModel, Field class ToolResult(BaseModel): ok: bool output: str | None = None error: str | None = None metadata: dict[str, Any] = Field(default_factory=dict) class Tool(Protocol): name: str risk_level: str async def run(self, args: dict[str, Any]) -> ToolResult: ...