Skip to content

Agent tools erroring when using output schema #2664

@mattmcc-attest

Description

@mattmcc-attest

** Please make sure you read the contribution guide and file the issues in the right place. **
Contribution guide.

Describe the bug
I can create an Agent with output schema using a Union type and it works when I run that agent. However, if I try to use that agent as a tool for another agent, it does not work.

  packages/google/adk/tools/_function_parameter_parse_util.py", line 276, in _parse_schema_from_parameter
    _raise_if_schema_unsupported(variant, schema)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  
packages/google/adk/tools/_function_parameter_parse_util.py", line 77, in _raise_if_schema_unsupported
    _raise_for_any_of_if_mldev(schema)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
  packages/google/adk/tools/_function_parameter_parse_util.py", line 58, in _raise_for_any_of_if_mldev
    raise ValueError(
        'AnyOf is not supported in function declaration schema for Google AI.'
    )
ValueError: AnyOf is not supported in function declaration schema for Google AI.
{"error": "AnyOf is not supported in function declaration schema for Google AI."}

To Reproduce
Here is a dummy example of what I am trying to do:

from __future__ import annotations
from pydantic import BaseModel, Field
from typing import List, Union, Literal

from google.adk.agents import Agent
from google.adk.tools.agent_tool import AgentTool
from pydantic import BaseModel, Field
from typing import List, Union


class Cat(BaseModel):
    """Instruction for creating a new survey."""
    type: Literal["cat"] = Field(default="cat", description="The type of animal")
    colour_of_fur: str = Field(
        default=None,
        description="The color of the cat's fur",
    )


class Dog(BaseModel):
    """Instruction for opening an existing survey."""
    type: Literal["dog"] = Field(default="dog", description="The type of animal")
    wagginess_of_tail: str = Field(
        default=None,
        description="The wagging behavior of the dog's tail",
    )

Animal = Union[
    Dog,
    Cat,
]

class ResponseMessage(BaseModel):
    request_id: str = Field(description="The ID of the original request", alias="requestId")
    summary: str = Field(description="A brief summary of the animals.")
    do: List[Animal] = Field(description="A list of animals.")

class AnimalList(BaseModel):
    animals: List[Animal] = Field(description="List of animals")

model='gemini-2.5-flash'

dog_agent = Agent(
    name="dog_agent",
    model=model,
    description="Gets information about dogs.",
    instruction=f"""
    You're job is to provide some information about breeds of dogs.
    """,
    output_schema=AnimalList,
)


cat_agent = Agent(
    name="cat_agent",
    model=model,
    description="Gets information about cats.",
    instruction=f"""
    You're job is to provide some information about pedigrees of cats.
    """,
    output_schema=AnimalList,
)

root_agent = Agent(
    name="root_agent",
    model=model,
    description="Frontline agent that greets user, identifies intent, and dispatches to appropriate handlers.",
    instruction=f"""
    You're job is to get information about animals, specifically dogs and cats.

    Use the appropriate tool based on the user's request.
    """,
    tools=[
        AgentTool(agent=dog_agent), AgentTool(agent=cat_agent)
        ],
    output_schema=ResponseMessage,
)

Expected behavior

I expect not to get the error AnyOf is not supported in function declaration schema for Google AI seeing as I can use the sub agent individually. If I make cat or dog the root agent they work fine.

The second I wrap it in a tool and try to use it, it breaks.

It also doesn't work id I remove the root agent output_schema and add input_schema=AnimalList to any of the sub agents

Desktop (please complete the following information):

  • OS: MacOs
  • Python version(python -V): Python 3.13.5
  • ADK version(pip show google-adk): 1.12.0

Model Information:
gemini-2.5-flash

Thank you for your help!

Metadata

Metadata

Assignees

Labels

core[Component] This issue is related to the core interface and implementation

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions