@@ -392,7 +392,7 @@ async def test_callback(client_session: ClientSession) -> CallToolResult:
392392
393393
394394@pytest .mark .anyio
395- async def test_tool_call_result_without_output_schema ():
395+ async def test_tool_call_result ():
396396 """Test returning ToolCallResult when no outputSchema is defined."""
397397 tools = [
398398 Tool (
@@ -402,7 +402,7 @@ async def test_tool_call_result_without_output_schema():
402402 "type" : "object" ,
403403 "properties" : {},
404404 },
405- # No outputSchema defined
405+ # No outputSchema for direct return of tool call result
406406 )
407407 ]
408408
@@ -432,100 +432,6 @@ async def test_callback(client_session: ClientSession) -> CallToolResult:
432432 assert result .meta == {"some" : "metadata" }
433433
434434
435- @pytest .mark .anyio
436- async def test_valid_tool_call_result_with_output_schema ():
437- """Test returning ToolCallResult when no outputSchema is defined."""
438- tools = [
439- Tool (
440- name = "get_info" ,
441- description = "Get structured information" ,
442- inputSchema = {
443- "type" : "object" ,
444- "properties" : {},
445- },
446- outputSchema = {
447- "type" : "object" ,
448- "properties" : {
449- "name" : {"type" : "string" },
450- "number" : {"type" : "integer" },
451- },
452- "required" : ["name" , "number" ],
453- },
454- )
455- ]
456-
457- async def call_tool_handler (name : str , arguments : dict [str , Any ]) -> CallToolResult :
458- if name == "get_info" :
459- return CallToolResult (
460- content = [TextContent (type = "text" , text = "Results calculated" )],
461- structuredContent = {"name" : "Brandon" , "number" : 29 },
462- _meta = {"some" : "metadata" },
463- )
464- else :
465- raise ValueError (f"Unknown tool: { name } " )
466-
467- async def test_callback (client_session : ClientSession ) -> CallToolResult :
468- return await client_session .call_tool ("get_info" , {})
469-
470- result = await run_tool_test (tools , call_tool_handler , test_callback )
471-
472- # Verify results
473- assert result is not None
474- assert not result .isError
475- assert len (result .content ) == 1
476- assert result .content [0 ].type == "text"
477- assert result .content [0 ].text == "Results calculated"
478- assert isinstance (result .content [0 ], TextContent )
479- assert result .structuredContent == {"name" : "Brandon" , "number" : 29 }
480- assert result .meta == {"some" : "metadata" }
481-
482-
483- @pytest .mark .anyio
484- async def test_invalid_tool_call_result_with_output_schema ():
485- """Test returning ToolCallResult when no outputSchema is defined."""
486- tools = [
487- Tool (
488- name = "get_info" ,
489- description = "Get structured information" ,
490- inputSchema = {
491- "type" : "object" ,
492- "properties" : {},
493- },
494- outputSchema = {
495- "type" : "object" ,
496- "properties" : {
497- "name" : {"type" : "string" },
498- "number" : {"type" : "integer" },
499- },
500- "required" : ["name" , "number" ],
501- },
502- )
503- ]
504-
505- async def call_tool_handler (name : str , arguments : dict [str , Any ]) -> CallToolResult :
506- if name == "get_info" :
507- return CallToolResult (
508- content = [TextContent (type = "text" , text = "Results calculated" )],
509- structuredContent = {"name" : "Brandon" },
510- _meta = {"some" : "metadata" },
511- )
512- else :
513- raise ValueError (f"Unknown tool: { name } " )
514-
515- async def test_callback (client_session : ClientSession ) -> CallToolResult :
516- return await client_session .call_tool ("get_info" , {})
517-
518- result = await run_tool_test (tools , call_tool_handler , test_callback )
519-
520- assert result is not None
521- assert result .isError
522- assert len (result .content ) == 1
523- assert result .content [0 ].type == "text"
524- assert isinstance (result .content [0 ], TextContent )
525- assert "Output validation error:" in result .content [0 ].text
526- assert "'number' is a required property" in result .content [0 ].text
527-
528-
529435@pytest .mark .anyio
530436async def test_output_schema_type_validation ():
531437 """Test outputSchema validates types correctly."""
0 commit comments