Add items and title to ToolParameter/ToolParamDefinition

This commit is contained in:
Tami Takamiya 2025-07-31 14:03:04 -04:00
parent 0b08d64ddb
commit dbaf38acc5
No known key found for this signature in database
GPG key ID: B23C22B8CB1E70C7
5 changed files with 18 additions and 0 deletions

View file

@ -26,6 +26,8 @@ class ToolParameter(BaseModel):
:param parameter_type: Type of the parameter (e.g., string, integer) :param parameter_type: Type of the parameter (e.g., string, integer)
:param description: Human-readable description of what the parameter does :param description: Human-readable description of what the parameter does
:param required: Whether this parameter is required for tool invocation :param required: Whether this parameter is required for tool invocation
:param items: Type of the elements when parameter_type is array
:param title: (Optional) Title of the parameter
:param default: (Optional) Default value for the parameter if not provided :param default: (Optional) Default value for the parameter if not provided
""" """
@ -33,6 +35,8 @@ class ToolParameter(BaseModel):
parameter_type: str parameter_type: str
description: str description: str
required: bool = Field(default=True) required: bool = Field(default=True)
items: dict | None = None
title: str | None = None
default: Any | None = None default: Any | None = None

View file

@ -92,6 +92,8 @@ class ToolParamDefinition(BaseModel):
param_type: str param_type: str
description: str | None = None description: str | None = None
required: bool | None = True required: bool | None = True
items: Any | None = None
title: str | None = None
default: Any | None = None default: Any | None = None

View file

@ -797,6 +797,8 @@ class ChatAgent(ShieldRunnerMixin):
param_type=param.parameter_type, param_type=param.parameter_type,
description=param.description, description=param.description,
required=param.required, required=param.required,
items=param.items,
title=param.title,
default=param.default, default=param.default,
) )
for param in tool_def.parameters for param in tool_def.parameters
@ -840,6 +842,8 @@ class ChatAgent(ShieldRunnerMixin):
param_type=param.parameter_type, param_type=param.parameter_type,
description=param.description, description=param.description,
required=param.required, required=param.required,
items=param.items,
title=param.title,
default=param.default, default=param.default,
) )
for param in tool_def.parameters for param in tool_def.parameters

View file

@ -796,6 +796,10 @@ def convert_tooldef_to_openai_tool(tool: ToolDefinition) -> dict:
properties[param_name].update(description=param.description) properties[param_name].update(description=param.description)
if param.default: if param.default:
properties[param_name].update(default=param.default) properties[param_name].update(default=param.default)
if param.items:
properties[param_name].update(items=param.items)
if param.title:
properties[param_name].update(title=param.title)
if param.required: if param.required:
required.append(param_name) required.append(param_name)

View file

@ -88,6 +88,10 @@ async def list_mcp_tools(endpoint: str, headers: dict[str, str]) -> ListToolDefs
name=param_name, name=param_name,
parameter_type=param_schema.get("type", "string"), parameter_type=param_schema.get("type", "string"),
description=param_schema.get("description", ""), description=param_schema.get("description", ""),
required="default" not in param_schema,
items=param_schema.get("items", None),
title=param_schema.get("title", None),
default=param_schema.get("default", None),
) )
) )
tools.append( tools.append(