From 2dd77195171baf71f59acbf6f1a3d08ccae3b288 Mon Sep 17 00:00:00 2001 From: Eric Gustin <34000337+EricGustin@users.noreply.github.com> Date: Tue, 1 Apr 2025 13:20:17 -0800 Subject: [PATCH] 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 --- arcade/arcade/cli/utils.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arcade/arcade/cli/utils.py b/arcade/arcade/cli/utils.py index d2fd1f3b..422715ed 100644 --- a/arcade/arcade/cli/utils.py +++ b/arcade/arcade/cli/utils.py @@ -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"