diff --git a/src/fastmcp/tools/tool.py b/src/fastmcp/tools/tool.py index d6e123631f..2347017a73 100644 --- a/src/fastmcp/tools/tool.py +++ b/src/fastmcp/tools/tool.py @@ -500,7 +500,6 @@ def from_function( input_schema, prune_params=prune_params, prune_titles=True, - dereference=True, ) output_schema = None @@ -561,7 +560,8 @@ def from_function( output_schema = base_schema output_schema = compress_schema( - output_schema, prune_titles=True, dereference=True + output_schema, + prune_titles=True, ) # Resolve root-level $ref to meet MCP spec requirement for type: object diff --git a/tests/tools/test_tool.py b/tests/tools/test_tool.py index b9c9ffa1e8..1c24e78346 100644 --- a/tests/tools/test_tool.py +++ b/tests/tools/test_tool.py @@ -194,15 +194,18 @@ def create_user(user: UserInput, flag: bool) -> dict: "tags": set(), "enabled": True, "parameters": { - "properties": { - "user": { + "$defs": { + "UserInput": { "properties": { "name": {"type": "string"}, "age": {"type": "integer"}, }, "required": ["name", "age"], "type": "object", - }, + } + }, + "properties": { + "user": {"$ref": "#/$defs/UserInput"}, "flag": {"type": "boolean"}, }, "required": ["user", "flag"],