Validate a single tool for LLM compatibility.
(
self, tool_name: str, provider: str = "openai"
)
| 1093 | return self.tool_filter.get_validation_summary() |
| 1094 | |
| 1095 | async def validate_single_tool( |
| 1096 | self, tool_name: str, provider: str = "openai" |
| 1097 | ) -> tuple[bool, str | None]: |
| 1098 | """Validate a single tool for LLM compatibility.""" |
| 1099 | try: |
| 1100 | tools = await self.get_all_tools() |
| 1101 | tool = next((t for t in tools if t.name == tool_name), None) |
| 1102 | if not tool: |
| 1103 | return False, f"Tool '{tool_name}' not found" |
| 1104 | |
| 1105 | tool_dict = { |
| 1106 | "name": tool.name, |
| 1107 | "description": tool.description, |
| 1108 | "inputSchema": tool.parameters, |
| 1109 | } |
| 1110 | |
| 1111 | valid_tools, invalid_tools = self.tool_filter.filter_tools( |
| 1112 | [tool_dict], provider=provider |
| 1113 | ) |
| 1114 | if valid_tools: |
| 1115 | return True, None |
| 1116 | elif invalid_tools: |
| 1117 | return False, invalid_tools[0].get("error", "Unknown validation error") |
| 1118 | return False, "Tool validation failed" |
| 1119 | |
| 1120 | except Exception as e: |
| 1121 | return False, str(e) |
| 1122 | |
| 1123 | async def revalidate_tools(self, provider: str = "openai") -> dict[str, Any]: |
| 1124 | """Revalidate all tools and return summary.""" |