from __future__ import annotations from typing import Any, Dict, List, Optional from pydantic import BaseModel, Field, AliasChoices, ConfigDict class ToolCallRequest(BaseModel): model_config = ConfigDict(populate_by_name=True) # O client do seu framework envia {"tool_name": "..."}. # Mantemos também "name" para chamadas manuais/curl. name: str = Field( ..., validation_alias=AliasChoices("name", "tool_name"), description="Nome da ferramenta a executar", ) arguments: Dict[str, Any] = Field(default_factory=dict) context: Dict[str, Any] = Field(default_factory=dict) class ToolCallResponse(BaseModel): ok: bool tool: str result: Dict[str, Any] = Field(default_factory=dict) error: Optional[str] = None class ToolDefinition(BaseModel): name: str description: str input_schema: Dict[str, Any] class ToolListResponse(BaseModel): tools: List[ToolDefinition]