Skip listing tools that aren't valid ToolDefinitions (#340)

The tool used in the mcp demo isn't a valid ToolDefinition.

Unable to list tool 'Demo.lorem': 1 validation error for ToolDefinition
requirements Input should be a valid dictionary or
instance of ToolRequirements For further information visit
https://errors.pydantic.dev/2.10/v/model_type
This commit is contained in:
Eric Gustin 2025-04-01 13:20:17 -08:00 committed by GitHub
parent cb1fff151b
commit 2dd7719517
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -17,6 +17,7 @@ from openai import OpenAI, Stream
from openai.types.chat.chat_completion import Choice as ChatCompletionChoice
from openai.types.chat.chat_completion_chunk import ChatCompletionChunk
from openai.types.chat.chat_completion_chunk import Choice as ChatCompletionChunkChoice
from pydantic import ValidationError
from rich.console import Console
from rich.live import Live
from rich.markdown import Markdown
@ -201,7 +202,11 @@ def get_tools_from_engine(
try:
page_iterator = client.tools.list(toolkit=toolkit or NOT_GIVEN)
for tool in page_iterator:
tools.append(ToolDefinition.model_validate(tool.model_dump()))
try:
tools.append(ToolDefinition.model_validate(tool.model_dump()))
except ValidationError:
# Skip listing tools that aren't valid ToolDefinitions
continue
except APIConnectionError:
console.print(
f"❌ Can't connect to Arcade Engine at {base_url}. (Is it running?)", style="bold red"